Excel (一般機能) |
![]() ![]() |
(Windows 10 Pro : Excel 2019)
列数が決まっていないパワークエリ横結合
投稿日時: 23/08/19 16:20:30
投稿者: ラングドシャ
|
---|---|
お願いいたします。
A B C D E F G 1 CD 品番 商品名 分類 20230626 20230627 20230628 2 CD01 49001 ほうき 掃除 335 321 326 3 CD01 49002 チップ 化粧品 294 325 319 4 CD01 49003 ネット 洗濯 279 297 296 5 CD01 49004 ピン黒 ヘア 290 252 253 6 CD01 49005 飾ゴム ヘア 154 178 162 7 CD01 49006 シール 雑貨 113 139 139 8 CD01 49007 ロープ 雑貨 205 215 209 9 CD01 49008 コーム ヘア 175 167 163 10 CD01 49009 付箋 文房具 221 231 213 <CD01_20230628.xlsx> A B C D E F 1 CD 品番 商品名 分類 20230628 20230629 2 CD01 49001 ほうき 掃除 326 349 3 CD01 49002 チップ 化粧品 319 302 4 CD01 49003 ネット 洗濯 296 258 5 CD01 49004 ピン黒 ヘア 253 238 6 CD01 49005 飾ゴム ヘア 162 153 7 CD01 49006 シール 雑貨 139 118 8 CD01 49007 ロープ 雑貨 209 225 9 CD01 49008 コーム ヘア 163 138 10 CD01 49009 付箋 文房具 213 233 11 CD01 49010 櫛1 ヘア 199 12 CD01 49011 綿花 化粧品 198 <このように結合したい> ※重複列は削除したい ※増えた品番は追加したい ※CD、分類は削除したい A B C D E F 1 品番 商品名 20230626 20230627 20230628 20230629 2 49001 ほうき 335 321 326 349 3 49002 チップ 294 325 319 302 4 49003 ネット 279 297 296 258 5 49004 ピン黒 290 252 253 238 6 49005 飾ゴム 154 178 162 153 7 49006 シール 113 139 139 118 8 49007 ロープ 205 215 209 225 9 49008 コーム 175 167 163 138 10 49009 付箋 221 231 213 233 11 49010 櫛1 199 12 49011 綿花 198 よろしくお願いいたします。 |
![]() |
投稿日時: 23/08/19 18:43:44
投稿者: WinArrow
|
---|---|
掲示の表は「表形式」と呼ばれる形式です。
|
![]() |
投稿日時: 23/08/19 23:23:07
投稿者: WinArrow
|
---|---|
ピボットテーブルウイザードを使って、表形式をリスト形式に変換してみました。
行 列 値 49001 20230628 326 49001 20230629 349 49002 20230628 319 49002 20230629 302 49003 20230628 296 49003 20230629 258 49004 20230628 253 49004 20230629 238 49005 20230628 162 49005 20230629 153 49006 20230628 139 49006 20230629 118 49007 20230628 209 49007 20230629 225 49008 20230628 163 49008 20230629 138 49009 20230628 213 49009 20230629 233 49010 20230628 49010 20230629 199 49011 20230628 49011 20230629 198 WEBページ紹介 https://dekiru.net/article/20383/ |
![]() |
投稿日時: 23/08/21 09:25:17
投稿者: gombohori
|
---|---|
こんな感じではどうでしょう
let ソース = Folder.Files("d:\test"), フィルター選択された非表示のファイル = Table.SelectRows(ソース, each [Attributes]?[Hidden]? <> true), 読込み関数 = ( file as binary) => let xlsx = Excel.Workbook(file, null, true), Sheet1_Sheet = xlsx{[Item="Sheet1",Kind="Sheet"]}[Data], 昇格されたヘッダー数 = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]), 変更された型 = Table.TransformColumnTypes(昇格されたヘッダー数,{{"CD", type text}, {"品番", Int64.Type}, {"商品名", type text}, {"分類", type text}}), ピボット解除された他の列 = Table.UnpivotOtherColumns(変更された型, {"CD", "品番", "商品名", "分類"}, "日付", "値"), 変更された型1 = Table.TransformColumnTypes(ピボット解除された他の列,{{"日付", type date}}) in 変更された型1, カスタム関数の呼び出し = Table.AddColumn(フィルター選択された非表示のファイル, "読込ファイル", each 読込み関数([Content])), 名前が変更された列 = Table.RenameColumns(カスタム関数の呼び出し, {"Name", "Source.Name"}), 削除された他の列 = Table.SelectColumns(名前が変更された列, {"Source.Name", "読込ファイル"}), 展開された読込ファイル = Table.ExpandTableColumn(削除された他の列, "読込ファイル", {"CD", "品番", "商品名", "分類", "日付", "値"}, {"CD", "品番", "商品名", "分類", "日付", "値"}), ピボットされた列 = Table.Pivot(Table.TransformColumnTypes(展開された読込ファイル, {{"日付", type text}}, "ja-JP"), List.Distinct(Table.TransformColumnTypes(展開された読込ファイル, {{"日付", type text}}, "ja-JP")[日付]), "日付", "値", List.Sum) in ピボットされた列 |
![]() |
投稿日時: 23/08/21 14:13:02
投稿者: ラングドシャ
|
---|---|
WinArrowさん
A B C D E F 1 品番 商品名 20230626 20230627 20230628 20230629 2 49001 ほうき 335 321 326 3 49002 チップ 294 325 319 4 49003 ネット 279 297 296 5 49004 ピン黒 290 252 253 6 49005 飾ゴム 154 178 162 7 49006 シール 113 139 139 8 49007 ロープ 205 215 209 9 49008 コーム 175 167 163 10 49009 付箋 221 231 213 11 49001 ほうき 335 321 326 349 12 49002 チップ 294 325 319 302 13 49003 ネット 279 297 296 258 14 49004 ピン黒 290 252 253 238 15 49005 飾ゴム 154 178 162 153 16 49006 シール 113 139 139 118 17 49007 ロープ 205 215 209 225 18 49008 コーム 175 167 163 138 19 49009 付箋 221 231 213 233 20 49010 櫛1 199 21 49011 綿花 198 |
![]() |
投稿日時: 23/08/21 15:23:23
投稿者: gombohori
|
---|---|
まとめるっていっても、どうまとめるのか書いてないので、考え方だけ書きます。
|
![]() |
投稿日時: 23/08/21 16:54:22
投稿者: sk
|
---|---|
引用: 引用: (詳細エディタ) ------------------------------------------------------------ let GetTable = (File as binary, SheetName as text) => let Source = Excel.Workbook(File, null, true), FirstSheet = Source{[Item=SheetName,Kind="Sheet"]}[Data], PromotedHeaders = Table.PromoteHeaders(FirstSheet, [PromoteAllScalars=true]) in PromotedHeaders, GetFiles = Folder.Files("D:\test"), InvokedCustomFunction = Table.AddColumn(GetFiles, "Sheet1", each GetTable([Content], "Sheet1")), CombinedTable = Table.Combine(InvokedCustomFunction[Sheet1]), UnpivotedOtherColumns = Table.UnpivotOtherColumns(CombinedTable, {"CD", "品番", "商品名", "分類"}, "ColumnName", "ColumnValue"), RemovedColumns = Table.RemoveColumns(UnpivotedOtherColumns,{"CD", "分類"}), RemovedDuplicates = Table.Distinct(RemovedColumns), SortedRows = Table.Sort(RemovedDuplicates,{{"品番", Order.Ascending}, {"ColumnName", Order.Ascending}}), PivotedColumn = Table.Pivot(SortedRows, List.Distinct(SortedRows[ColumnName]), "ColumnName", "ColumnValue") in PivotedColumn ------------------------------------------------------------ こんな感じのクエリを作成できれば良い、ということでしょうか。 |
![]() |
投稿日時: 23/08/21 17:18:01
投稿者: ラングドシャ
|
---|---|
gombohoriさん
|
![]() |
投稿日時: 23/08/22 16:04:07
投稿者: ラングドシャ
|
---|---|
gombohoriさん
|