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