|
▼Jaka さん:
Jakaさんのおっしゃるとおり、SUMPRODUCTを使用してVBAを自分なりに書き換えてみましたがエラーが出ます。(「型が一致しません。」というエラーメッセージです。)
B1に集計開始日、D1に集計終了日が入っているとします。
以下は集計開始日から集計終了日の間で、分類番号に一致するものをカウントしたい場合のマクロです。
Dim hai() As Variant
Dim j As Integer
Dim Dai As Integer
Dim cnt As Integer
Dim ws As Worksheet
Dim onDate as Date
Dim ofDate as Date
onDate=Worksheets("Sheet2").Range("B1").Value
ofDate=Worksheets("Sheet2").Range("C1").Value
Set ws = Worksheets("Sheet1")
For j = 1 To 5
Dai = WorksheetFunction.SumProduct((ws.Range("B2:B65535") = j) * _
(ws.Range("C2:C65535") <= onDate) * _
(ws.Range("C2:C65535") <= ofDate))
hai(j) = Dai
Next
For cnt = 1 To j
Worksheets("Sheet2").Cells(cnt, 2).Value = hai(cnt)
Next cnt
SUMPRODUCT関数のところをどう書き換えればうまく動作するのでしょうか?
または他の方法があれば教えてください。
実は最初はワークシートにこの関数を貼り付けていたのですが、再計算すると処理が異常に遅くなりフリーズしてしまいます。
実際分類番号は50まであり、そのシートに他の手法でカウントしたりする関数もたくさん貼り付けています。
ですからVBAで対処するのが一番いいのかと思って、複雑になりそうですがこの方法を取りたいと思っています。
よろしくお願い致します。
|
|