Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Microsoft 365)
決まったリスト順でデータをまとめなおしたい
投稿日時: 23/04/10 16:39:03
投稿者: yuiyui

データ加工作業での以下の作業について、簡略化する方法がないか確認したいです。
 
以下の元データがあるとします。
 ※【商品名】【会社】【売上合計】項目
 

商品名	会社	売上合計
AA	東京	11.11111111
AA	神奈川	12.11111111
AA	千葉	13.11111111
:	:	
BB	東京	21.1111
BB	神奈川	22.1111
BB	千葉	23.1111
:	:	
CC	東京	31.1111
CC	神奈川	32.1111
CC	千葉	33.1111
:	:	
DD	東京	41.1111
DD	神奈川	42.1111
DD	千葉	43.1111
:	:	

 
こちらのデータを、以下会社リストシートという別シートに記載されている順番に並べ替えたいです。
 
	会社リスト
1	東京
2	神奈川
3	千葉
4	埼玉
:	:
47	沖縄

 
かつ商品名の並びを【AA】→【BB】→【CC】→【DD】と決まった並びで表示させたいです。
※以下希望完成形↓
 
	会社	商品名	売上合計
1	東京	AA	11.11111111
1	東京	BB	21.1111
1	東京	CC	31.1111
1	東京	DD	41.1111
2	神奈川	AA	12.11111111
2	神奈川	BB	22.1111
2	神奈川	CC	32.1111
2	神奈川	DD	42.1111
3	千葉	AA	13.11111111
3	千葉	BB	23.1111
3	千葉	CC	33.1111
3	千葉	DD	43.1111
:	:	:	:

 
この完成形にするための最適な方法がありましたら、教えていただければと思います。
 
以上、よろしくお願いいたします。

回答
投稿日時: 23/04/10 17:42:03
投稿者: んなっと

PowerQueryで元データから一気に作るのがいいでしょう。
以下、元データが[テーブル1],会社リストが[テーブル3]の場合。
テーブル3にPowerQueryで連番を振って、テーブル1とテーブル3をマージして、連番と商品で昇順に並べ替えましょう。
 
●テーブル1
 
    A    B      C
 1 商品  会社  売上金額
 2   A  東京 11.1111111
 3   A  東京 12.1111111
 4   A  東京 13.1111111
 5   A 神奈川 14.1111111
 6   A 神奈川 15.1111111
 7   B 神奈川 16.1111111
 8   A  千葉 17.1111111
 9   C  千葉 18.1111111
10   C  千葉 19.1111111
11   B  東京 23.1111111
12   B  東京 24.1111111
13   B  東京 25.1111111
14   C 神奈川 26.1111111
15   B 神奈川 27.1111111
16   A 神奈川 28.1111111
17   B  千葉 29.1111111
18   A  千葉 30.1111111
19   A  千葉 31.1111111
 
●テーブル3
 
      A  
1 会社リスト (↓ここにPowerQueryで連番を振る)
2    東京
3   神奈川
4    千葉
5    埼玉
6    沖縄
 
※テーブル1をPowerQueryで読み込んで、詳細エディターを以下のような感じに書き換えるだけでもできると思います。
 
 
let
    Src = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    Src2 = Excel.CurrentWorkbook(){[Name="テーブル3"]}[Content],
    Grp = Table.Group(Src, {"商品", "会社"}, {{"売上合計", each List.Sum([売上金額]), type nullable number}}),
    Idx = Table.AddIndexColumn(Src2, "Index", 1, 1, Int64.Type),
    Mrg = Table.NestedJoin(Grp, {"会社"}, Idx, {"会社リスト"}, "Idx", JoinKind.LeftOuter),
    Exp = Table.ExpandTableColumn(Mrg, "Idx", {"Index"}, {"Index"}),
    Srt = Table.Sort(Exp,{{"Index", Order.Ascending}, {"商品", Order.Ascending}}),
    Srt2 = Table.ReorderColumns(Srt,{"会社", "商品", "売上合計", "Index"}),
    Rem = Table.RemoveColumns(Srt2,{"Index"})
in
    Rem

回答
投稿日時: 23/04/10 18:01:51
投稿者: んなっと

テーブルに変換する方法は、
excel テーブルに変換
でGoogle検索。

投稿日時: 23/04/11 11:57:04
投稿者: yuiyui

んなっとさん
早速のメッセージありがとうございます。
 
メッセージに記載いただいた操作で、
無事希望どおりの形が作成することができました!
 
ありがとうございました。