0

条件に応じて特定の値のカウントを取得するためにVBACountifsを使用しています。今、私は数えるためにどちらかの条件が必要です。

以下のコードは、「ビデオなし」の行と「ビデオなし」の行をカウントするために機能します。しかし、私は「ビデオなし」または「データなし」を単一の出力として数えたいのですが、別の出力はこれら2つがありません。

 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")

複数の条件「and」演算子を使用する例をいくつか見つけました。しかし、私は「または」状態が欲しいです。

とりあえず、以下のコードを使って動作させています

 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)

単一のcountifで実行できる良い方法はありますか?

4

1 に答える 1

2

CountIfsは、そのようなOR条件の使用を許可していません。1行のコードでCountifを加算または減算して、中間ステップを回避できます。次のようなSumProductを使用することもできます。

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

上記はエアコードです。正しい構文を取得するには、SumProductをExcelで動作させ、記録する必要があります。SumProductの使用については、このOzGridページを参照してください。

上記の式では、乗算によってAND演算が作成され、加算によってAND演算が作成されることに注意してください。

于 2011-12-03T16:48:07.127 に答える