• ベストアンサー

【エクセルVBA】条件に一致した項目の数を別シートへ表示

はじめまして。VBA初心者です。 sheet1のA列に日付(一ヶ月分)、B列に製品名 sheet2のB2セル~AF1セルに日付、A2セル~A10セルに製品名 が入っています。 Sheet1の製品名の数を日付ごとにカウントして、その結果をSheet2の 各日付へ入力するVBAを作成したいのですが、うまくいきません。 分かり難い質問で、大変申し訳ありませんが、どなたか教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pauNed
  • ベストアンサー率74% (129/173)
回答No.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も参考にしてみてください。

mikisho
質問者

お礼

早速のアドバイスありがとうございます。 ピボットテーブルを使用することは、頭にありませんでした。 アドバイスを元に、チャレンジしてみます。

関連するQ&A