Я пытаюсь подсчитать количество вхождений определенной строки в отфильтрованных данных. Я могу сделать это, используя формулу в ячейке, но когда я совмещаю это с другими макросами в своей книге, все это зависает.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, но только в отфильтрованных данных.
Благодарим за помощь!
Сложение:
Вот код, который я написал для макросъемки до сих пор. Он фильтрует данные на другом листе, затем обновляет сводную таблицу с диапазоном дат. Я хотел бы добавить вычисления подсчета в конец этого кода и вернуть счет в ячейку на листе «Отчетность».
Sub 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 должен знать, фильтруются ли данные или нет? Просьба уточнить. С наилучшими пожеланиями, –
См. Мое дополнение в вопросе –
Этот код отлично работает. Я просто хочу добавить к нему. Я хочу подсчитать количество раз, когда «temp» появляется в данных, которые фильтруются на листе «Мастер 2015» в столбце H. Это где он фильтруется: ActiveSheet.ListObjects («Таблица 44»). Поле Range.AutoFilter _ : = 3, Criteria1: = "> =" & dStart, Operator: = xlAnd, Criteria2: = _ "<=" & dEnd Диапазон ("Таблица44 [[# Заголовки], [GMP или не-GMP ]]). Выберите ActiveSheet.ListObjects («Таблица 44»). Range.AutoFilter Field: = 2, Criteria1: = _ «GMP» –