Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


42653 / 76732 ←次へ | 前へ→

【39142】Re:データ数のカウント
質問  aaa  - 06/6/19(月) 10:02 -

引用なし
パスワード
   ▼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で対処するのが一番いいのかと思って、複雑になりそうですがこの方法を取りたいと思っています。

よろしくお願い致します。

4 hits

【39025】データ数のカウント aaa 06/6/16(金) 10:04 質問
【39032】Re:データ数のカウント Jaka 06/6/16(金) 11:25 回答
【39142】Re:データ数のカウント aaa 06/6/19(月) 10:02 質問
【39148】Re:データ数のカウント Jaka 06/6/19(月) 11:09 発言
【39155】Re:データ数のカウント aaa 06/6/19(月) 11:50 発言
【39157】Re:データ数のカウント Jaka 06/6/19(月) 12:14 発言
【39158】Re:データ数のカウント Jaka 06/6/19(月) 13:07 発言
【39160】Re:データ数のカウント aaa 06/6/19(月) 13:45 質問
【39161】Re:データ数のカウント Jaka 06/6/19(月) 14:09 発言
【39174】Re:データ数のカウント Kein 06/6/19(月) 15:50 回答
【39177】Re:データ数のカウント Kein 06/6/19(月) 15:52 発言

42653 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free