エクセルで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
はデータの中から持ってくると思いますので「変更可能とする」の文言は不要です
B列からH列の1行目に担当者名を表示する
I列の計欄の0表示はなしです。
はデータの中から持ってくると思いますので「変更可能とする」の文言は不要です
B列からH列の1行目に担当者名を表示する
私の勘違いでやはりあらかじめ担当者欄B列からH列7個は固定します
その担当者名はデータの中からコピー貼りつけして同じものを表示しますので合致させます
担当者7個は固定します担当者の金額がない場合は空欄となります
担当者の参照が必要であればSheet3のA列に記述してもOKです
マクロの中に記述してもOKです
お手数おかけします。
クロス集計に おおいに役立ちます。
これは ある分だけ 作成されます。
こちらでテスト用に作成する場合は、日付のみしか入れませんので
時分秒は すべて 0となります。
可能ならば 時分秒を すべて 0にして 実行してみたらいいでしょう。
A列の1行目に
=TEXT(D1,"mm月dd日")
と入れてこれをコピーして 行数分 貼り付けます。
次に マクロの
c1 = Format(Worksheets("Sheet1").Range("A1").Value, Worksheets("Sheet1").Range("A1").NumberFormatLocal)
を
c1 = Worksheets("Sheet1").Range("A1").Value
に変更して 実行させれば いいですよ。
ピポットテーブルでやりましたら上手く行きました
=TEXT(D1,"mm月dd日")
の関数があって助かりましたありがとうございます。
マクロの方はせっかく作っていただいたのですがなぜか最初の行しか
できません。修正もしたのですが
ピッポットデーブルでできますのでOKです
マクロの方はデータソースの変更でテーブル/範囲を選択しましたらできました。
素人の質問ですみませんでした。
ピポットテーブルはいろいろ活用できそうなので助かります。
ありがとうございました。
今後ともよろしくお願いします。