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.
Обратите внимание, что в приведенной выше формуле умножение создает операцию И, а сложение создает операцию ИЛИ.