繁体   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