Excel VBA хранит показатели для нескольких или условий - PullRequest
0 голосов
/ 03 декабря 2011

Я использую VBA Countifs, чтобы получить количество определенных значений в соответствии с условием. Теперь мне нужно любое условие для подсчета.

Приведенный ниже код работает для строк «Нет видео» и «Нет видео». Но я хочу посчитать «Нет видео» или «Нет данных» как один выход, а другой без этих двух.

 Set R1 = appExcel.Range(cmdAudit2.Text & ":" & cmdAudit2.Text)
 Set R2 = appExcel.Range(cmbChoice.Text & ":" & cmbChoice.Text)

 NoVideos = appExcel.Application.CountIfs(R1, AuditType, R2, "No video")
 Videos = appExcel.Application.CountIfs(R1, AuditType, R2, "<>No video")

Я нашел несколько примеров, которые используют несколько условий "и" оператор. Но я хочу "или" условие.

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

 NoVideos = appExcel.Application.CountIfs(R1, AuditType, R2, "No video")
 NoAudited = appExcel.Application.CountIfs(R1, AuditType, R2, "Not audited")
 Videos = appExcel.Application.CountIfs(R1, AuditType, R2, "<>No video")

 Videos = Val(Videos) - Val(NoAudited)
 NoVideos = Val(NoVideos) + Val(NoAudited)

Есть ли какой-нибудь хороший метод, который можно сделать с помощью единственного счетчика.

1 Ответ

2 голосов
/ 03 декабря 2011

CountIfs не позволяет использовать условия ИЛИ, подобные этому. Вы можете добавить или вычесть Countifs в одну строку кода и избежать промежуточного шага. Вы также можете использовать SumProduct, что-то вроде:

= application.WorksheetFunction.SumProduct(((R2="No Video")*(R2="Not Audited"))+(R1 = AuditType))

Выше приведен аэрокод, вам нужно заставить SumProduct работать в Excel и записать его, чтобы получить правильный синтаксис. Информацию об использовании SumProduct см. На этой странице OzGrid

Обратите внимание, что в приведенной выше формуле умножение создает операцию И, а сложение создает операцию И ИЛИ.

...