Счет с несколькими критериями ИЛИ - PullRequest
7 голосов
/ 04 января 2012

Мне нужно посчитать количество ячеек в столбце, которые содержат определенное значение.В настоящее время я использую следующий код:

iVal = Application.WorksheetFunction.COUNTIF(Range("A:A"), "SAL")

Однако теперь мне нужно подсчитать, сколько ячеек содержит либо

  • SAL, или
  • PRE

Ответы [ 4 ]

18 голосов
/ 05 января 2012

Вы можете использовать VBA эквивалент стандартной формулы COUNTIF (которая может принимать более одного аргумента).Это может быть расширено при необходимости

Стандартная формула
=SUM(COUNTIF(A:A, {"SAL","PRE"}))

Эквивалент VBA
MsgBox Evaluate("Sum(COUNTIF(A:A,{""PRE"",""SAL""}))")

8 голосов
/ 04 января 2012

Самый быстрый способ - сделать 2 COUNTIF:

iVal = Application.WorksheetFunction.CountIf(Range("A:A"), "SAL") + Application.WorksheetFunction.CountIf(Range("A:A"), "PRE")
2 голосов
/ 11 января 2014

Почему вы не используете функцию CountIfs?

Пример:

Application.CountIfs(CR1_range, V_1, CR2_range, V_2, CR3_range, V_3, CR4_range, V_4)

Где CR1_range - ваш диапазон, а V_1 - ваша переменная

Редактировать: Ooops!Просто видел, что это должно быть оператором ИЛИ, мой ответ будет работать только для оператора И (не удаляется для справки, если кто-то заинтересован)

0 голосов
/ 27 ноября 2017

Для меня хорошо работает следующее: -

Dim val1 as string, val2 as string

val1 = "value1"
val2 = "value2"    

count = Application.WorksheetFunction.CountIfs(ThisWorkbook.Names("firstname").RefersToRange, val1 , ThisWorkbook.Names("secondname").RefersToRange, val2)

Эта веб-страница помогает в отношении именованных диапазонов в Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...