1

Excel シートがあり、countifs 式を使用して複数の条件を満たす数またはレコードをカウントしようとしていますが、列の 1 つに複数の基準があるため、COUNTIFS 関数と一緒に SUMPRODUCT を使用しました。

シートで問題なく動作するようになりましたが、VBA で動作させる方法がわかりません。

これは私が試したものです:

Dim lastrow As Long
lastrow = Sheet2.Cells(Sheet2.Rows.Count, "M").End(xlUp).Row
FirstDate = Sheets("Sheet1").Range("C7")
SecondDate = Sheets("Sheet1").Range("E7")

   Application.Worksheetfunction.Sumproduct(CountIfs(Sheet2.Range("E2:E" & lastrow), ">=" & FirstDate, Sheet2.Range("E2:E" & lastrow), "<=" & SecondDate, Sheet2.Range("P2:P" & lastrow), {"John";"James";"Peter"}))

上記の式を使用すると、エラーが発生し続けます。私が間違っていることを教えてください。

前もって感謝します。

編集:これは私が模倣しようとしている式です:

=Sumproduct(CountIfs(Sheet2!E2:E1000000,">="&Sheet1!C7,Sheet2!E2:E1000000,"<="&Sheet1!E7,Sheet2!E2:E1000000,{"ジョン";"ジェームズ";"ピーター"}))

VBA にこの数式をセルに挿入させたくありません。値を計算してから、結果を選択したセルに挿入したいのです。

4

1 に答える 1

2

私のために働くようです:

Sub Tester()

    Dim v, wsf
    Dim lastrow As Long

    lastrow = Sheet2.Cells(Sheet2.Rows.Count, "M").End(xlUp).Row

    Set wsf = Application.WorksheetFunction

    v = Application.WorksheetFunction.SumProduct(wsf.CountIfs( _
        Sheet2.Range("E1:E" & lastrow), ">=" & Sheet1.Range("C7").Value, _
        Sheet2.Range("E1:E" & lastrow), "<=" & Sheet1.Range("E7").Value, _
        Sheet2.Range("P1:P" & lastrow), Array("John", "James", "Peter")))

    Debug.Print v

End Sub
于 2013-10-27T20:35:46.127 に答える