- ベストアンサー
【エクセルVBA】条件に一致した項目の数を別シートへ表示
はじめまして。VBA初心者です。 sheet1のA列に日付(一ヶ月分)、B列に製品名 sheet2のB2セル~AF1セルに日付、A2セル~A10セルに製品名 が入っています。 Sheet1の製品名の数を日付ごとにカウントして、その結果をSheet2の 各日付へ入力するVBAを作成したいのですが、うまくいきません。 分かり難い質問で、大変申し訳ありませんが、どなたか教えて下さい。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 VBAで行うにしても、PivotTableを使うとラクな気がするのですが。 (Sheet1のA1:B1に見出しがあるとして) Dim r As Range Set r = Sheets("Sheet1").Range("A1").CurrentRegion.Resize(, 2) With ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _ SourceData:=r.Address(external:=True)) With .CreatePivotTable(TableDestination:="") .AddFields RowFields:=r.Cells(2).Value, _ ColumnFields:=r.Cells(1).Value With .PivotFields(r.Cells(2).Value) .Orientation = xlDataField .Function = xlCount End With '.TableRange2.Copy '.TableRange2.PasteSpecial Paste:=xlPasteValues 'Application.CutCopyMode = False End With End With Set r = Nothing もし、sheet1のA列の日付に抜けがあるなら、 1日から31日までの空データ(ダミー)をA列に追加しておくと 1ヶ月分の表が比較的簡単にできますよ。 また、レイアウト次第ではご希望のものと違うかもしれません。 その時はコメントアウトした行を活かして( ' を削除して)、 ピボットテーブルの機能を削除して、シートデータとして使うと良いかもしれません。 ピボットテーブルについては、QNo.2926805も参考にしてみてください。
お礼
早速のアドバイスありがとうございます。 ピボットテーブルを使用することは、頭にありませんでした。 アドバイスを元に、チャレンジしてみます。