質問: 質問です エクセルでCSVファイルのSheet1にA列に日付、B列に金額、C列に担当者名が2行目から データがあります。 A列 B列 C列 8月1日 1000 AAA Sheet2に下記のようなクロス集計を作成するマクロをお願いします。(画像添付) AAA BBB CCC DDD EEE FFF GGG 計 1日 1,000 500 300 200 250 150 2,400 2日 500 300 200 100 250 150 1,500 3日 1,000 500 200 100 250 150 2,200 4日 5日 ~ 29日 30日 31日 合計 2,000 1,500 600 600 200 750 450 6,100 日付はあらかじめ1日から31日まで固定しその行に該当金額を表示する 担当者名は変更可能とする 答えのsheet2の1行目は担当者名の項目名を表記する
回答: ピボットテーブルをVBAで やってみました。 なので ちょっと 表示が 違う箇所もありますが だいたい質問の内容は 出来てると思います。 ``` Sub Macro2() Worksheets("Sheet2").Cells.Clear ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _ "Sheet1!R1C1:R26C3").CreatePivotTable TableDestination:= _ "Sheet2!R1:R65536", TableName:="ピボ", DefaultVersion:=xlPivotTableVersion10 c1 = Format(Worksheets("Sheet1").Range("A1").Value, Worksheets("Sheet1").Range("A1").NumberFormatLocal) c2 = Worksheets("Sheet1").Cells(1, "C") Worksheets("Sheet2").PivotTables("ピボ").AddFields RowFields:=c1, ColumnFields:=c2 Worksheets("Sheet2").PivotTables("ピボ").PivotFields(2).Orientation = xlDataField Application.CommandBars("PivotTable").Visible = False ActiveWorkbook.ShowPivotTableFieldList = False End Sub ```