解決済み
無知ですみません、どなたかエクセル関数、マクロを駆使した効率のいいやり方をご教授下さい。 エクセル上で、以下のようなリスト【サマリー前】について、数量が一致する行をサマリーして【サマリー後】のような形で集計したいのですが、いい手法が思い浮かばずに困っています。 数量の集計だけならピポットテーブルでも事足りると思うのですが、どうしてもは以下のようなリスト形式にまとめたいのです。 地道に1行1行手で集計しようとすると数万行あるため、ミスが怖くてできません。 何卒、よろしくお願い致します。 ■サマリー前 品名 業者 住所 数量 アイス 業者1 東京都渋谷区 1個 アイス 業者1 東京都渋谷区 2個 チョコ 業者2 千葉県市川市 3個 チョコ 業者2 千葉県市川市 2個 アイス 業者2 千葉県市川市 4個 アイス 業者2 千葉県市川市 1個 ↓ ■サマリー後 品名 業者 住所 数量 アイス 業者1 東京都渋谷区 3個 チョコ 業者2 千葉県市川市 5個 アイス 業者2 千葉県市川市 5個集計したいのですが、いい手法が思い浮かばずに困っています。 数量の集計だけならピポットテーブルでも事足りると思うのですが、どうしてもは以下のようなリスト形式にまとめたいのです。 地道に1行1行手で集計しようとすると数万行あるため、ミスが怖くてできません。 何卒、よろしくお願い致します。 ■サマリー前 品名 業者 住所 数量 アイス 業者1 東京都渋谷区 1個 アイス 業者1 東京都渋谷区 2個 チョコ 業者2 千葉県市川市 3個 チョコ 業者2 千葉県市川市 2個 アイス 業者2 千葉県市川市 4個 アイス 業者2 千葉県市川市 1個 ↓ ■サマリー後 品名 業者 住所 数量 アイス 業者1 東京都渋谷区 3個 チョコ 業者2 千葉県市川市 5個 アイス 業者2 千葉県市川市 5個
47閲覧
数量の列が数値の場合です。 つまり、3個はセルの値が3で書式などで「個」を付けている場合です。 Sub sample() Dim ws1 As Worksheet Dim ws2 As Worksheet Dim lastRow As Long Dim r As Long Set ws1 = Sheets("Sheet1") '元シート Set ws2 = Sheets("Sheet2") '結果シート ws2.Cells.Clear '結果クリア lastRow = ws1.Range("A" & Rows.Count).End(xlUp).Row '元シートのA列最終行 ws1.Range("E2:E" & lastRow).Formula = "=A2&B2&C2" '元シートのE列を作業列にして"A&B&C"の値にする ws1.Range("A1:E" & lastRow).Copy Sheets("Sheet2").Range("A1") '元シートのA:E列を結果シートのA1からにコピー ws2.Range("D2:D" & Rows.Count).ClearContents '結果シートのD2から下を削除(結果の数量クリア) ws2.Range("A1:C" & lastRow).RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes '結果シートのA:C列の重複削除 lastRow = ws2.Range("A" & Rows.Count).End(xlUp).Row '結果シートのA列最終行 ws2.Range("D2:D" & lastRow).Formula = "=SUMIF(" & ws1.Name & "!E:E," & ws2.Name & "!E2,Sheet1!D:D)" '両シートのE列(作業列)の値で元シートのD列の値の合計を求める式 ws2.Range("D2:D" & lastRow).Value = ws2.Range("D2:D" & lastRow).Value '結果シートのD列の式を価に変換 ws1.Range("E:E").ClearContents '元シートのE列(作業列)削除 ws2.Range("E:E").ClearContents '結果シートのE列(作業列)削除 End Sub
< 自分のペースで、シフト自由に働ける >
パート・アルバイト(東京都)この条件の求人をもっと見る
求人の検索結果を見る
< いつもと違うしごとも見てみませんか? >
覆面調査に関する求人(東京都)この条件の求人をもっと見る