[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『パワークエリ 重複データは一行にまとめる』(Excel初心者)
最近パワークエリの勉強を始めた者です。
以下のように商品データがあります。
複数行に分かれている重複する[商品ID]の場合は[購入者]をカンマ区切りで一行にまとめたいです。いろいろと検索して試したのですがエラーが出てしまいうまくいきません。どなたかよい方法を教えていただけないでしょうか。
データ量が多いため、なんとかパワークエリで実施したいです。
元データ:
[商品ID] [購入日] [購入者]
111 2021.10 Aさん
222 2021.10 Aさん
222 2021.10 Bさん
333 2021.10 Aさん
333 2021.10 Bさん
333 2021.10 Cさん
作りたい形:
[商品ID] [購入日] [購入者]
111 2021.10 Aさん
222 2021.10 Aさん,Bさん
333 2021.10 Aさん,Bさん,Cさん
< 使用 Excel:Office365、使用 OS:Windows10 >
こんな感じではどうでしょう let ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content], 変更された型 = Table.TransformColumnTypes(ソース,{{"[商品ID]", Int64.Type}, {"[購入日]", type number}, {"[購入者]", type text}}), グループ化された行 = Table.Group(変更された型, {"[商品ID]", "[購入日]"}, {{"カウント", each Text.Combine([#"[購入者]"],","), type text}}) in グループ化された行
(´・ω・`) 2021/10/27(水) 13:22
変更された型 = Table.TransformColumnTypes(ソース,{{"[商品ID]", Int64.Type}, {"[購入日]", type number}, {"[購入者]", type text}}),
>[商品ID]を数値型に、[購入日]と[購入者]をテキスト型に変換
グループ化された行 = Table.Group(変更された型, {"[商品ID]", "[購入日]"}, {{"カウント", each Text.Combine([#"[購入者]"],","), type text}})
>[商品ID]、[購入日]、[購入者]をグループ化(操作=すべての行)
>each _, type table 移行を『each Text.Combine([#"[購入者]"],","), type text}})』に書き換え
この方法だと作成されたカウント列に[購入者]が表示されるだけで、商品IDごとの[購入者]がカンマ区切りでは表示されませんでした。
何が原因なのでしょうか。。。
(Excel初心者) 2021/10/27(水) 17:16
グループ化するときに、[商品ID]と[購入日]の列を選択してグループ化してください >[商品ID]、[購入日]、[購入者]をグループ化(操作=すべての行) 3列ともグループ化してはいけません (´・ω・`) 2021/10/27(水) 20:21
グループ化するときに、[商品ID]と[購入日]の列を選択してグループ化してください
>ご指摘の通りグループ化をした後、以前と同様にeach _, type table 移行を『each Text.Combine([#"[購入者]"],","), type text}})』に書き換えを試みましたがエラーとなってしまいました。(Expression Error:テーブルの列「購入者」が見つかりませんでした)
ご指摘のText.Combineをカスタム列からの記述も試みましたが、ここでも使用できる列に「購入者」が表示されていないため同様のエラーが出ました。
実際のデータはお伝えした3つの項目の他にも複数あるのですが、それが原因でしょうか。
(Excel初心者) 2021/11/02(火) 08:59
列の名前は 購入者 ですか [購入者] ですか? セルに [購入者]と入ってるなら前のとおり、 セルに 購入者 と入っているなら以下で
let ソース = Excel.CurrentWorkbook(){[Name="テーブル4"]}[Content], 変更された型 = Table.TransformColumnTypes(ソース,{{"商品ID", Int64.Type}, {"購入日", type number}, {"購入者", type text}}), グループ化された行 = Table.Group(変更された型, {"商品ID", "購入日"}, {{"カウント", each Text.Combine([購入者],","), type text}}) in グループ化された行 (´・ω・`) 2021/11/02(火) 09:18
(マナ) 2021/11/02(火) 22:35
図々しくて大変恐縮ですが、もう1点教えていただけないでしょうか。
もし、このカンマ区切りにしたい列がもう一列あった場合、それも列を追加してカンマ区切りで表示できるのでしょうか。
上記の例でいうと、
元データ:
[商品ID] [購入日] [購入者] [コメント]
111 2021.10 Aさん うまい
222 2021.10 Aさん うまい
222 2021.10 Bさん まずい
333 2021.10 Aさん うまい
333 2021.10 Bさん まずい
333 2021.10 Cさん ふつう
作りたい形:
[商品ID] [購入日] [購入者] [コメント]
111 2021.10 Aさん うまい
222 2021.10 Aさん,Bさん うまい、まずい
333 2021.10 Aさん,Bさん,Cさん うまい、まずい、ふつう
教えていただいた方法で試みたのですが、うまくいかなかったので、
同じデータを二つ作り、[購入者]と[コメント]をマージでつなげるという力技になってしまいました。
よろしくお願いします。
(Excel初心者) 2021/11/04(木) 05:42
1) 商品ID と 購入日 の列を選択して、グループ化 2) 新しい列名に、集計を追加 して2行にする 列名は任意。 新しい列名 操作 縦棒 [購入者の集約] [合計] [ 購入者 ] [コメントの集約] [合計] [コメント] 3) List.Sum([購入者])を Text.Combine([購入者],",") 、List.Sum([コメント])を Text.Combine([コメント],",")に書き換え
let ソース = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content], 変更された型 = Table.TransformColumnTypes(ソース,{{"商品ID", Int64.Type}, {"購入日", type number}, {"購入者", type text}, {"コメント", type text}}), グループ化された行 = Table.Group(変更された型, {"商品ID", "購入日"}, {{"購入者の集約", each Text.Combine([購入者],","), type text}, {"コメントの集約", each Text.Combine([コメント],","), type text}}) in グループ化された行 (´・ω・`) 2021/11/04(木) 09:16
意味が???
数式バーの編集ではない方法ということであれば
↓の Chiquilinさんの回答
https://excelfactory.net/excelboard/exgeneral/excel.cgi?mode=all&namber=131816&rev=0
(マナ) 2021/11/04(木) 11:03
>マナさん
分かりづらくて申し訳ございません。
当方はカスタム列からText.Combine([購入者],",")を入力を試みていたのですが、
お示しいただいたリンク先では数式―バで入力を指示していたので、こちらが正しいやり方なんだなと勉強になりました。
(Excel初心者) 2021/11/11(木) 14:06
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.