【M言語は難しくない】今回は複数行に拡散している値を、次のGIF画像のように「記号」をつなぎ目にして、1つのセルにまとめます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/出力.gif)
今回のポイント
今回のポイントは2つあります
1つ目は過去記事で紹介した「すべての行」によるグループ化です
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/グループ化詳細-1-644x358.jpg)
この「すべての行」によるグループ化により、グループ別にテーブルを作成します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/3つのテーブル.gif)
2つ目はリストの「値の抽出 / 1つのセルにリスト化」機能の活用です
こちらは、実際の例で見てみましょう!
空のクエリで次の画像のように、2つのリストを作成したとします
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/2つのリスト.jpg)
上の画像のリストを一旦、テーブル化した後、黄色に印を付けた「展開マーク」をクリックをすると「値を抽出する」が選択できます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/値を抽出.gif)
上のGIF画像のように「値を抽出する」を選択した後は、リストの「区切り記号」を指定できます
「区切り記号」を指定した後は、下の画像のように1つのセルにリストの値が出力されます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/リスト化されたセル.jpg)
今回使用するデータ
今回使用するデータは、次の画像のデータです
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/元データ-1.jpg)
名前の列をグループ化し、グループ毎に「商品列に含まれる商品」を1つのセルに出力します
グループ化の実施
今回の解説は、使用データをエディタで開くところから始めます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/エディタ-1.jpg)
上の画像にて、黄色の印を付けた「グループ化」をクリックします
なお、事前に「注文日」の列は削除しておきます
グループ化の内容は次の画像のように指定します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/グループ化-1.jpg)
・グループ化項目:名前の列をグループ化します
・新しい列名:詳細
・操作:前述のように「すべての行」を指定します
・列:空欄のままでOKです
上記のように指定してOKボタンを押すと、エディタ画面は次のようになります
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/詳細.jpg)
グループ化された名前毎に、テーブルが作成されています
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/テーブル中味.jpg)
次はグループ毎に、上の画像の商品列の内容をリスト化します
カスタム列の追加
前述のグループ毎にリスト化するには、カスタム列・作成画面を開くところから始めます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/image-87.png)
カスタム列・作成画面で、次の画面のように詳細列を指定すると、過去の記事の通りグループ毎にテーブルが作成されます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/image-88.png)
次の画像の「詳細.1」列が、上の画像から出力されたカスタム列の内容です
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/image-89.png)
今回はテーブルではなく、各テーブル内の商品リストを出力します
リストを出力するには、カスタム列・作成画面にて次の画像のようにリストになる列を加えます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/カスタム列リスト化.jpg)
これで、商品リストが各テーブル毎に出力されます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/リスト化された内容.jpg)
各リストにカーソルをあてると「リストの中味」が次の画像のように見れます
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/リスト化詳細.jpg)
こちらを前述の「今回のポイント」にて紹介したように、「展開マーク」をクリックし、「値を抽出する」から1つのセルにリストを出力します
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/実際に抽出.gif)
「値を抽出する」をクリックした後は次の画像のように、値を区切る記号を指定する画面が出てきますので、そちらで「記号」を指定してください
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/image-90.png)
記号を指定したら、次の画像のようにグループ毎に1つのセルにリストが出力されています
![](https://analytic-vba.com/wp/wp-content/uploads/2021/03/各セル.jpg)
応用編
仮に変換対象のデータが1列のケースも解説します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/07/e065a3155328ead2005eda4668ba5783.gif)
この場合は、一旦、カスタム列作成画面で「ダミー列」を追加します
![](https://analytic-vba.com/wp/wp-content/uploads/2023/07/image.png)
こうすることで「グループ化」機能を前述のようにうまく活用することができます
![](https://analytic-vba.com/wp/wp-content/uploads/2023/07/image-1.png)
<まとめ>
今回は複数の行の内容を、1つのセルに出力する方法を解説しました
ポイントは2つあり、まず1つ目はグループ化において「すべての行」を指定することです
この「すべての行」を指定すると、グループ毎にテーブルが作成されます
グループ毎にテーブルを作成したら、「カスタム列・作成画面」にて各テーブルからリストを作成しておきます
2つ目のポイントは、各リストの内容を「値を抽出する」機能にて1つのセルにリストを出力することです
今回紹介した方法は、それほど使用頻度は高くないと思います
ただ、今回の内容は、M言語の重要概念であるテーブルとリストを体感するのにいい内容だったと思います
特にグループ化において、「すべての行」を指定してグループ毎にテーブルを作成するパターンは色々と応用できそうです!
ぜひ、実際に手を動かしてみて試してみてください
記事を最後まで見て頂き誠にありがとうございました
参考までに今回使用したファイルを添付します
次回は、M関数のText関数について2つ事例を紹介します
![にほんブログ村 資格ブログ ビジネススキルへ](http://qualification.blogmura.com/businessskill/img/businessskill88_31.gif)
![にほんブログ村 IT技術ブログ VBAへ](http://it.blogmura.com/vba/img/vba88_31.gif)