EXCELのPower Queryを使って、画像のような加工がしたいのです。
例は商品の数が2つですが、いくつであっても対応可能なダイナミックなクエりにしたいのです。
どんなM関数とか使えばいいのでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
自己解決
//元データはワークシート上の"テーブル1"という名前のテーブルです。
let
Source = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],
項目名={"顧客ID","分類","品名","色"},
可変列名リスト = Table.RenameColumns(Table.FromList(List.RemoveMatchingItems(Table.ColumnNames(Source),{"顧客ID"}), Splitter.SplitByNothing(), null, null, ExtraValues.Error),{{"Column1", "可変列名"}}),
分類消去 = Table.AddColumn(可変列名リスト, "カスタム1", each if Text.EndsWith([可変列名], "分類") then Text.Range([可変列名],0,Text.Length([可変列名])-2) else [可変列名]),
品名消去 = Table.AddColumn(分類消去, "カスタム2", each if Text.EndsWith([可変列名], "品名") then Text.Range([可変列名],0,Text.Length([可変列名])-2) else [カスタム1]),
色消去 = Table.AddColumn(品名消去, "カスタム3", each if Text.EndsWith([可変列名], "色") then Text.Range([可変列名],0,Text.Length([可変列名])-1) else [カスタム2]),
商品リスト = Table.RemoveColumns(Table.Group(色消去, {"カスタム3"}, {{"カウント", each Table.RowCount(_), type number}}),{"カウント"}),
追加されたカスタム = Table.AddColumn(商品リスト, "カスタム", each {"顧客ID",[カスタム3]&"分類",[カスタム3]&"品名",[カスタム3]&"色"}),
追加されたカスタム1 = Table.AddColumn(追加されたカスタム, "カスタム.1", each Table.SelectColumns(Source,[カスタム])),
追加されたカスタム2 = Table.AddColumn(追加されたカスタム1, "カスタム.2", each Table.ColumnNames([カスタム.1])),
追加されたカスタム3 = Table.AddColumn(追加されたカスタム2, "カスタム.3", each List.Zip({[カスタム.2],項目名})),
追加されたカスタム4 = Table.AddColumn(追加されたカスタム3, "カスタム.4", each Table.RenameColumns([カスタム.1],[カスタム.3])),
カスタム1 = Table.Combine(追加されたカスタム4[カスタム.4]),
フィルターされた行 = Table.SelectRows(カスタム1, each ([分類] <> null)),
並べ替えられた行 = Table.Sort(フィルターされた行,{{"顧客ID", Order.Ascending}})
in
並べ替えられた行
投稿2019/10/21 02:27
総合スコア26
0
手元に環境が無いので試せませんが、
- 適当な文字列で3列ずつ列のマージ
- 列のアンピボット
- 列の分割
がわかりやすそうですかね。
2,3は固定なので
1.をList.Generateあたりで列番号を生成しつつやる感じでしょうか。
縦横反転でもうまくやれば出来そうな気はしますが。
投稿2019/10/19 02:15
総合スコア2166
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
そういった変換は正規化と呼ばれるもので、概ねUNION クエリーを使用します。
[Power Query / 取得と変換] ブックにある複数のワークシートをまとめる
上記では別シートを纏める例ですが、同じシートで項目を変更させながら纏める事になるかと思います。
いくつであっても対応可能な
そもそも列が可変になる定義は行えないと思いますので、その場合はVBAで変換を掛けるしかないかと。
追記
タグにPower BIがあったので。
Power BI で UNION ってどうやるのか
投稿2019/10/18 03:06
編集2019/10/18 04:14総合スコア25327
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/18 05:57
2019/10/18 06:03
2019/10/18 07:49
2019/10/18 10:20
2019/10/21 02:27
2019/10/21 04:02
2019/10/21 08:36
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。