Excel VBA хранит показатели для нескольких или условий

Я использую 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 ответ

Решение

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

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

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

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

Другие вопросы по тегам