当前,我正在处理一个具有多个过滤器栏的数据集,可以选择这些过滤器栏并帮助搜索数据并提供满足其要求的数量。例如。通过选择经理和合作伙伴名称,它会在数据表中的这些行中查找。 我已经做到了,所以它将文本公式的字符串发布到框中,然后将其连接起来,并使用UDF Eval强制执行(由于有很多If和Else语句,因此需要对其进行大量分解。
问题是,作业完成后,不会将其删除,而是将其隐藏。
我如何允许此数据表仅查看可见数据来进行“计数是否”搜索?大概是UDF吗?
范围是6:1000
下面是我所拥有的代码的细分。我需要找到一个函数来使此代码仅在可见的情况下起作用。
我这样做了,因此将文本公式的字符串发布到框中,然后将其连接起来,并使用UDF Eval进行了强制(由于有很多If和Else语句,因此需要对其进行大量分解。) >
问题是,作业完成后,不会将其删除,而是将其隐藏。
我如何允许此数据表仅查看可见数据来进行“计数是否”搜索?大概是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
答案 0 :(得分:0)
在要放入单元格的数组公式下面,(代号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路线时,请看一下循环范围(仅可见行),检查条件并计数是否满足。