#excel #vba #countif
#excel #vba #подсчет
Вопрос:
Я пытаюсь подсчитать количество вхождений в таблицу на основе двух критериев. Приведенная ниже формула, похоже, работает, когда я меняю второй диапазон критериев с F3: S7 на один столбец F3: F7. Я попытался создать диапазон dim и установить диапазон для are и включить его в формулу, но это тоже не работает. Как я могу заставить второй критерий принимать диапазон из нескольких столбцов вместо одного?
Sub Count_number_of_occurrences_with_multiple_criteria()
'declare a variable
Dim ws As Worksheet
Set ws = Worksheets("CountPrep2 (2)")
'count the number of occurrences with two criteria
ws.Range("B10") = Application.WorksheetFunction.CountIfs(ws.Range("B3:B7"), ws.Range("B9"), ws.Range("F3:S7"), ws.Range("A10"))
End Sub
Ответ №1:
Согласно документации Microsoft о CountIfs, каждый дополнительный диапазон должен иметь такое же количество строк и столбцов, что и Range1.
Мое предложение состояло бы в том, чтобы воссоздать эффект проверки критериев с использованием циклов For, которые проходят через требуемые диапазоны. Вот так:
Sub Count_number_of_occurrences_with_multiple_criteria()
'declare a variable
Dim ws As Worksheet, _
rng1 As Range, rng2 As Range, _
r1Cell As Range, r2Cell As Range, _
counter As Integer
Set ws = Worksheets("CountPrep2 (2)")
Set rng1 = ws.Range("B3:B7")
Set rng2 = ws.Range("F3:S7")
For Each r1Cell In rng1
If r1Cell = ws.Range("B9") Then
For Each r2Cell In rng2
If r2Cell = ws.Range("A10") Then
counter = counter 1
End If
Next r2Cell
End If
Next r1Cell
'count the number of occurrences with two criteria
MsgBox counter
End Sub
Примечание: я не знаю особенностей ваших данных или формата файла, поэтому метод, с помощью которого я проверяю критерии, вероятно, неточно подсчитывает количество вхождений. Это всего лишь пример того, как вы можете достичь желаемых результатов.
Комментарии:
1. Спасибо, Тоддлсон. Да, это довольно забавно. В моей исходной таблице есть столбец с местоположением (критерий 1) и несколько столбцов с ответами на такие вопросы, как да, нет, нет и т. Д. (критерий 2). Например, я пытаюсь подсчитать количество «да» в таблице для местоположения 1, и он считывает критерии местоположения и ответа из b9 и a10. Я использую обычный рабочий лист Excel. Если я подсчитаю количество строк и столбцов, смогу ли я использовать что-то более похожее на мою исходную формулу в формате цикла, заменив строки и столбцы чем-то вроде (C[3]) вместо range(«F3: F7») ?