姓と世帯を含む大きなデータを持つテーブルがあります。それらを一意のリストにし、世帯名をコンマ区切りの値として取得しようとしています。
以下の表は、入力と目的の出力について説明しています。
ここに生データがあります。
家庭 | 名前 |
---|---|
スミス | ジェーン |
ボイヤー | アーニャ |
ミラー | ケイト |
スミス | ジョン |
ボイヤー | ダグ |
ボイヤー | サム |
ミラー | ジョー |
スミス | ジム |
ボイヤー | ジェフ |
私は見つけた同様のリクエストですが、Python向けでしたExcel でこれを実行できるものを探しています。ピボット テーブルを試しましたが、集計しようとするため機能しません。
答え1
望ましい出力を達成する方法はたくさんありますが、ここでは私がこれまでに知っているいくつかの方法を紹介します。
▶️ を使用するとPower Query
、およびで利用Windows Excel 2010+
可能Excel 365 (Windows or Mac)
Power Query を使用するには、次の手順に従います。
- まずソース範囲をテーブルに変換し、それに応じた名前を付けます。この例では次のように名前を付けました。
Table1
- Data次に、タブ --> Get & Transform Data--> Get Data--> From Other Sources-->から空のクエリを開きます。Blank Query
- 上記のようにPower Queryウィンドウが開きます。TabからHome--> Advanced Editor-->そして、表示されているものを削除して次の内容を貼り付けM-Code、を押します。Done
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Household", type text}, {"Names", type text}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"Household"}, {{"Names", each Text.Combine([Names],", "), type text}})
in
#"Grouped Rows"
- 最後に、それを再度インポートするには、Excel-->Close & LoadまたはをクリックしますClose & Load To--> 最初にクリックすると、New Sheet必要な出力を含む が作成され、後者をクリックすると、結果を配置する場所を尋ねるウィンドウが表示されます。
▶️ 利用GROUPBY()
可能な機能を使用するMS365
Office Insider バージョン:
=GROUPBY(A2:A10,B2:B10,ARRAYTOTEXT,,0)
▶️ または、LAMBDA()
ヘルパー関数を使用するBYROW()
--> 現在のチャネルに適用可能MS365
=LET(
_data, A2:B10,
_household, TAKE(_data,,1),
_names, UNIQUE(_household),
HSTACK(_names, BYROW(_names, LAMBDA(x, TEXTJOIN(", ",1,IF(x=_household,TAKE(_data,,-1),""))))))
▶️ または、POWER PIVOT
および で利用可能なを使用するWindows Excel 2013+
と、Excel 365 (Windows)
Power Pivot を使用するには、次の手順に従います。
- まずソース範囲をテーブルに変換し、それに応じた名前を付けます。この例では次のように名前を付けました。
Table_1
- データ内のセルをいくつか選択し、
Insert
Tab をクリックします -> をクリックしますPivot Table
--> がTable/Range
と表示されます。またはTable_1
を選択してクリックします--> 後者の場合は、セルの場所を選択して をクリックします。New Worksheet
Existing Worksheet
Add this data the Data Model
- 右側にフィールドペインが表示されます。ペイン内
Pivot Table
で右クリックして選択します。Table_1
Add Measure
- 選択に応じてメジャー名を入力し、数式セクションに以下の数式を入力します。
=CONCATENATEX(Table_1,[Names],", ")
- [OK] を押して、メジャー名が「Area」(この例では使用していますが、変更できます)である状態で、Area
Household
に選択して配置します。ROWS
Name-CommaSeparated
VALUES
Design
タブから を にReport Layout
変更しShow in Tabular Form
、次に をクリックしGrand Totals
て選択するOff for Rows and Columns
と、目的の出力が得られます。
⏩ 以降の別の代替バージョンExcel 2016+
:
=SUBSTITUTE(CONCAT(IF(D2=A$2:A$10,","&B$2:B$10,"")),",",,1)
上記の数式は、古いバージョンの場合のみ、編集モードを終了するときにCTRL+ SHIFT+を押す必要があります。ENTER