簡體   English   中英

為Count Ifs Visible和Multiple Criterias創建UDF

[英]Creating a UDF for Count Ifs Visible and Multiple Criterias

目前我正在開發一個數據集,該數據集具有多個可以選擇的過濾條,並幫助搜索數據並提供滿足其要求的數量。 例如,通過選擇管理器和合作伙伴名稱,它可以查看數據表中的這些行。 我已經做了它,所以它將一個文本公式的字符串發布到框中,然后連接並使用UDF Eval強制執行(由於許多If和Else語句,需要對其進行細分。

問題是,當作業完成后,它們不會被刪除而是被隱藏。

如何讓這個數據表只用可見的方式進行Count Ifs搜索? 大概是它的UDF?

范圍從6:1000

以下是我所擁有的代碼的細分。 我需要找到一個函數來使這個代碼只在可見上工作。

我已經做了它,所以它將一個文本公式的字符串發布到框中,然后連接並使用UDF Eval強制執行(由於許多If和Else語句,需要對其進行細分。

問題是,當作業完成后,它們不會被刪除而是被隱藏。

如何讓這個數據表只用可見的方式進行Count Ifs搜索? 大概是它的UDF?

范圍從6:1000

以下是我所擁有的代碼的細分。 我需要找到一個函數來使這個代碼只在可見上工作。

Sub SetCriteria()

If Sheet8.Range("E6").Value = 1 Then
'The 1 is displayed if there is a value placed in the filter part of the dashboard. If not this value remains 0.

 Sheet8.Range("F6") = "Tank!G6:G1000,Dashboard!C6,"
 'If there is a value in the filter, then the writing for the CountIf formaul is displayed, linking to the criteria.

Else: Sheet8.Range("F6") = "Tank!G6:G1000,""*"","
'If there isn't anything placed in the critieria then a wild card is selected to ensure all option for that catergory are chosen.
End If

If Sheet8.Range("E7").Value = 1 Then
'Same as above, though this time for Task Manager.
    Sheet8.Range("F7") = "Tank!I6:I1000,Dashboard!C7,"
Else: Sheet8.Range("F7") = "Tank!I6:I1000,""*"","
'The two different printed formulas, depending on criteria inclusion
End If


If Sheet8.Range("E8").Value = 1 Then
'Procedure for TAS Consultant
    Sheet8.Range("F8") = "Tank!J6:J1000,Dashboard!C8,"
Else: Sheet8.Range("F8") = "Tank!J6:J1000,""*"","
End If

If Sheet8.Range("E9").Value = 1 Then
'Procedure for Pillar
    Sheet8.Range("F9") = "Tank!H6:H1000,Dashboard!C9)"
Else: Sheet8.Range("F9") = "Tank!H6:H1000,""*"")"
End If

End Sub

編輯:這是我的評估功能

Function Eval(Ref As String)
    Application.Volatile
    Eval = Evaluate(Ref)
End Function

在數組公式下放入一個單元格,(Codename Sheet8是Sheetname Sheet8,我假設)用Ctrl + Shift + Enter關閉它

=SUM(SUBTOTAL(3,OFFSET(Tank!G6:G1000,ROW(Tank!G6:G1000)-MIN(ROW(Tank!G6:G1000)),,1))*(IF(Sheet8!E6=1,Tank!G6:G1000=Dashboard!C6,1))*(IF(Sheet8!E9=1,Tank!H6:H1000=Dashboard!C9,1))*(IF(Sheet8!E7=1,Tank!I6:I1000=Dashboard!C7,1))*(IF(Sheet8!E8=1,Tank!J6:J1000=Dashboard!C8)))

這個公式代替你的Sub setcriteria和你的Eval函數,你也可以像之前那樣將它分解並放入你的eval函數中。 (必須過濾不可見的行)

但是當你進入VBA路線時,看看你的范圍是否循環,只有可見的行,檢查標准和計數是否滿足。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM