Excel (一般機能)

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

 
(Windows 10全般 : Microsoft 365)
数値ありなし関係なく、同じ項目ずつ(4項目など)テーブル表記したい
投稿日時: 23/04/11 14:02:30
投稿者: yuiyui

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

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

 
この上記のシートを以下のように
【商品名】AA/BB/CC/DDの4つの商品名を
【売上合計】の数値有無にかかわらず会社名ごとに表記・加えるようにしたいです。
 
以下希望完成形 

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

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

回答
投稿日時: 23/04/11 15:21:45
投稿者: メジロ2

最適かどうかは理解の外です。
 
同じシートのE、F、G列に希望完成表を作成するとします。
 
E2: =IFERROR(INDEX($B$2:$B$9,AGGREGATE(15,6,ROW($A$1:$A$8)/(MATCH($B$2:$B$9,$B$2:$B$9,0)=ROW($A$1:$A$8)),INT((ROW(A1)-1)/4)+1)),"")
 
F2: =IF(E2="","",CHOOSE(MOD(ROW(A1)-1,4)+1,"AA","BB","CC","DD"))
 
G2: =IF(E2="","",SUMIFS($C$2:$C$9,$B$2:$B$9,E2,$A$2:$A$9,F2))
 
必要数下にコピーします。
 

回答
投稿日時: 23/04/11 15:40:43
投稿者: んなっと

おそらく前回の続きですね。
 
let
    Src = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    Dst = Table.Distinct(Src, {"会社"}),
    Src2 = Excel.CurrentWorkbook(){[Name="テーブル3"]}[Content],
    Idx = Table.AddIndexColumn(Src2, "Index", 1, 1, Int64.Type),
    Grp = Table.Group(Src, {"商品", "会社"}, {{"売上合計", each List.Sum([売上金額]), type nullable number}}),
    Mrg = Table.NestedJoin(Idx, {"会社リスト"},Dst, {"会社"}, "NewC", JoinKind.RightOuter),
    Ctm = Table.AddColumn(Mrg, "商品", each List.Distinct(Grp[商品])),
    Exp = Table.ExpandListColumn(Ctm, "商品"),
    Mrg2 = Table.NestedJoin(Exp, {"会社リスト","商品"}, Grp, {"会社","商品"}, "Idx", JoinKind.LeftOuter),
    Exp2 = Table.ExpandTableColumn(Mrg2, "Idx", {"売上合計"}, {"売上合計"}),
    Srt = Table.Sort(Exp2,{{"Index", Order.Ascending}, {"商品", Order.Ascending}}),
    Del = Table.SelectColumns(Srt,{"会社リスト", "商品", "売上合計"}),
    Ren = Table.RenameColumns(Del,{{"会社リスト", "会社"}})
in
    Ren
 
でどうでしょうか。

回答
投稿日時: 23/04/11 16:20:04
投稿者: Mike

   A   B     C        [名前の管理]
1 商品名 会社  売上合計        名前   参照範囲     範囲
2 AA   東京  11.11111111       会社   =Sheet1!$B$2:$B$9 ブック
3 AA   神奈川 12.11111111       商品名  =Sheet1!$A$2:$A$9 ブック
4 AA   千葉  13.11111111       売上合計 =Sheet1!$C$2:$C$9 ブック
5 BB   東京  21.1111
6 BB   千葉  23.1111
7 CC   東京  31.1111
8 CC   神奈川 32.1111
9 DD   神奈川 42.1111
10       
11 会社  商品名 売上合計
12 東京  AA   11.11111111
13 東京  BB   21.1111
14 東京  CC   31.1111
15 東京  DD
16 神奈川 AA   12.11111111
17 神奈川 BB
18 神奈川 CC   32.1111
19 神奈川 DD   42.1111
20 千葉  AA   13.11111111
21 千葉  BB   23.1111
22 千葉  CC
23 千葉  DD
 
式 =IFERROR(INDEX(売上合計,MAX(IF((会社=A12)*(商品名=B12),ROW(売上合計)))-1),"")
を入力したセル C12 を下方にズズーッとオートフィル
【お断わり】上式は必ず配列(CSE)数式として入力のこと

回答
投稿日時: 23/04/11 16:56:21
投稿者: んなっと

List.Sort追加。
 
let
    Src = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
    Dst = Table.Distinct(Src, {"会社"}),
    Src2 = Excel.CurrentWorkbook(){[Name="テーブル3"]}[Content],
    Idx = Table.AddIndexColumn(Src2, "Index", 1, 1, Int64.Type),
    Grp = Table.Group(Src, {"商品", "会社"}, {{"売上合計", each List.Sum([売上金額]), type nullable number}}),
    Mrg = Table.NestedJoin(Idx, {"会社リスト"},Dst, {"会社"}, "NewC", JoinKind.RightOuter),
    Ctm = Table.AddColumn(Mrg, "商品", each List.Sort(List.Distinct(Grp[商品]))),
    Exp = Table.ExpandListColumn(Ctm, "商品"),
    Mrg2 = Table.NestedJoin(Exp, {"会社リスト","商品"}, Grp, {"会社","商品"}, "Idx", JoinKind.LeftOuter),
    Exp2 = Table.ExpandTableColumn(Mrg2, "Idx", {"売上合計"}, {"売上合計"}),
    Srt = Table.Sort(Exp2,{{"Index", Order.Ascending}, {"商品", Order.Ascending}}),
    Del = Table.SelectColumns(Srt,{"会社リスト", "商品", "売上合計"}),
    Ren = Table.RenameColumns(Del,{{"会社リスト", "会社"}})
in
    Ren

回答
投稿日時: 23/04/11 17:21:55
投稿者: んなっと

ピボットテーブルだと...ユーザー設定リストを追加する方法があります。
 
●[Excelのオプション] [詳細設定] [ユーザー設定リストの編集] 
 ↑をクリックして「会社リスト」範囲を選択 [インポート]
 
●[ピボットテーブルオプション] [集計とフィルター] [並べ替え時にユーザー設定リストを使用する]
 「会社」選択 昇順で並べ替え
 
●「商品」選択 [フィールドの設定] [レイアウトと印刷] [データのないアイテムを表示する]

投稿日時: 23/04/12 15:45:11
投稿者: yuiyui

メジロ2様 んなっと様 Mike様
 
皆様ご返信ありがとうございます!
 
関数のやり方で試したところ、
無事希望の形に作成することができました。
  
また、他の方法もいろいろとアドバイス下さりありがとうございます!
 ※他のも知識が乏しいため確認に時間かかっておりますが、作業確認している最中でございます、、
 
以上、よろしくお願いいたします。

投稿日時: 23/04/17 20:26:58
投稿者: yuiyui

yuiyui さんの引用:
メジロ2様 んなっと様 Mike様
 
皆様ご返信ありがとうございます!
 
関数のやり方で試したところ、
無事希望の形に作成することができました。
  
また、他の方法もいろいろとアドバイス下さりありがとうございます!
 ※他のも知識が乏しいため確認に時間かかっておりますが、作業確認している最中でございます、、
 
以上、よろしくお願いいたします。