我正在嘗試計算過濾數據中特定字符串的出現次數。我可以使用單元格中的公式來完成,但是當我將其與工作簿中的其他宏組合在一起時,整個事情就會凍結。Excel中過濾數據中的CountIF
所以我想將計算移動到VBA,以便它只在宏運行時進行計算。下面是在細胞中的工作原理的公式:
=SUMPRODUCT(SUBTOTAL(3,OFFSET('2015 Master'!H:H,ROW('2015 Master'!H:H)-MIN(ROW('2015 Master'!H:H)),,1)),ISNUMBER(SEARCH("*Temp*",'2015 Master'!H:H))+0)
基本上我要計數的次數「TEMP」發生在H列,但只在濾波後的數據。
謝謝你的幫助!
ADDITION:
這是我爲宏編寫的代碼到目前爲止。它過濾不同工作表上的數據,然後使用日期範圍更新數據透視表。我想將計數計算添加到此代碼的末尾,並將計數返回到「報告」表中的單元格。
子的button1_Click() 「刷新樞軸表,並在活性片
ActiveWorkbook.RefreshAll
'Gather the start and end times from the active sheet
dStart = Cells(2, 5).Value
dEnd = Cells(3, 5).Value
'Change the active sheet to the alarms database, clear all filters and then filter for the defined date range and filter for only GMP alarms
Sheets("2015 Master").Select
If ActiveWorkbook.ActiveSheet.FilterMode Or ActiveWorkbook.ActiveSheet.AutoFilterMode Then
ActiveWorkbook.ActiveSheet.ShowAllData
End If
ActiveSheet.ListObjects("Table44").Range.AutoFilter Field _
:=3, Criteria1:=">=" & dStart, Operator:=xlAnd, Criteria2:= _
"<=" & dEnd
Range("Table44[[#Headers],[GMP or non-GMP]]").Select
ActiveSheet.ListObjects("Table44").Range.AutoFilter Field:=2, Criteria1:= _
"GMP"
'Change the active sheet to the Reporting sheet
Sheets("Reporting").Select
'Within the alarms pivot table clear the label filters then filter for the date range and GMP alarms
ActiveSheet.PivotTables("PivotTable1").PivotFields("Active Time"). _
ClearLabelFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("Active Time").PivotFilters. _
Add Type:=xlDateBetween, Value1:=dStart, Value2:=dEnd
ActiveSheet.PivotTables("PivotTable1").PivotFields("GMP or non-GMP"). _
CurrentPage = "GMP"
End Sub
那怎麼假設VBA宏想知道,如果被過濾或沒有數據?請澄清。最好的問候, –
看到我的問題 –
此外代碼很好。我只想添加到它。我想要計算在H列'2015 Master'表中過濾的數據中顯示的「temp」的次數。這是過濾的位置:ActiveSheet.ListObjects(「Table44」)。Range.AutoFilter Field (「Table44 [[#Headers],[GMP or non-GMP]),或者是不符合GMP標準的產品,或者不符合GMP要求的產品,或者不符合GMP標準。 ]] 「)選擇 ActiveSheet.ListObjects(」 Table44" )Range.AutoFilter場:= 2,標準1:= _ 「GMP」 –