Excel で2 つの列からクロスジョイン(すべての組み合わせ)を作成する完全ガイド

Excel で2 つのリスト(たとえば商品名とサイズ、地域と営業担当者、学生とコースなど)を扱う際、両方のリストのすべての組み合わせを生成したいことがあります。この操作は「クロスジョイン」(デカルト積とも呼ばれます)として知られています。本チュートリアルでは、ステップバイステップの手順、メリットとデメリット、実際の使用例をご紹介し、皆様のワークフローに最適な方法を選びやすくサポートします。
クロスジョインとは何ですか?
クロスジョイン(デカルト積とも呼ばれる)とは、2 つのリスト間で考えられるすべての組み合わせを生成する操作です。Excel では、リスト A の各項目とリスト B の各項目をペアにし、すべての組み合わせからなる完全なマトリックスを作成することを意味します。
クロスジョインは、次のような多くの実際のデータ活用シーンで非常に役立ちます。
製品バリエーション
色×サイズ×スタイルを自由に組み合わせて、フルラインナップの製品カタログを一気に生成!
売上分析
地域×営業担当者×四半期の組み合わせで、売上を多角的に分析します。
スケジューリングと計画
従業員×シフトや学生×コースなど、あらゆる組み合わせを自動生成します。
テストとシミュレーション
モデリング、予測、検証に役立つ多彩なシナリオを自動生成します。
例:
次のようなデータがある場合:
クロスジョインの結果は次のようになります:
Excel でクロスジョインを実行する
Excel にはクロスジョインを作成する複数の方法があり、最適な選択肢はお使いの Excel バージョンや数式・ツールへの習熟度、データセットの規模によって異なります。ここでは、シンプルな数式から Power Query や VBA といった高度なツールまで、実践的で効率的な4 つの手法をご紹介します。それぞれに独自のメリットがあるため、ご自身のワークフロー、データ規模、自動化ニーズに最も合う方法をお選びいただけます。
方法1:数式を使用したクロスジョイン(Excel 365)
1。データを準備します。最初のリストを列(例:製品の A2:A5)に、2 番目のリストを別の列(例:色の C2:C5)に配置します。
2。 結果を表示したい空白セルに次の数式を入力し、Enter キーを押してください。この数式はスピル表示され、すべての組み合わせを一度に返します。スクリーンショットをご参照ください。
=TEXTSPLIT(TEXTJOIN(",", TRUE, A2:A5 & "|" & TRANSPOSE(C2:C5)), "|", ",")
この数式の説明:
- A2:A5 & 「|」 & TRANSPOSE(C2:C5): 列 A の各値を列 Cの各値とペアにします。
- TEXTJOIN(",", TRUE, …):すべてのペアをカンマで区切って、1 つの長いテキスト文字列に結合します。
- TEXTSPLIT(…, 「|」, ","):テキストを再び2 列のテーブル形式に分割します。
簡単に言うと、この数式はA|Cのペアを生成し、それらを1 つのテキスト文字列に結合した後、構造化された2 列のテーブル形式に戻すことで、すべての可能な組み合わせを効果的に作り出します。
ヒント:
前述の数式に加え、以下の数式を使用しても同じ結果が得られます。
=LET(a,A2:A5,b,C2:C5,
MAKEARRAY(ROWS(a)*ROWS(b),2,
LAMBDA(r,c,
IF(c=1, INDEX(a, 1+INT((r-1)/ROWS(b))), INDEX(b, 1+MOD(r-1, ROWS(b))))
)
))
メリット
- 完全に動的
- ヘルパー列不要
- 元のリストが変更されると自動的に更新されます
デメリット
- Excel 365 が必要です
- 初心者には数式が複雑に見える
✨ すべての組み合わせを一覧表示 — 1 クリックで瞬時にあらゆる組み合わせを生成!
複雑な数式を駆使してすべての組み合わせを導き出す作業に疲れていませんか?Kutools for Excelなら、複数の列や値のすべての組み合わせを瞬時に一覧表示可能!数式も Power Query も不要、たった数回のクリックで完了です!

方法2:Power Query を使用したクロスジョイン
Power Query は、最新版のExcel すべてで動作し、コード不要のスムーズなアプローチを提供します。数式を一切記述することなく、簡単なポイント&クリック操作でクロスジョインを生成できます。以下のステップバイステップの手順に従ってください。
ステップ1:各列のデータでテーブルを作成する
1。 最初のデータリストを選択し、挿入 > テーブルをクリックします。テーブル作成ダイアログボックスでOKをクリックすると、最初のテーブルが作成されます。
2。テーブルデザインタブで、後から簡単に参照できるように、テーブルにわかりやすい名前を付けましょう。
3。 同じ手順を繰り返して、別の列のデータもテーブルに変換し、名前を付けましょう。
ステップ2:テーブルをインポートして接続として読み込む
1。 最初のテーブルを選択し、データ>テーブル/範囲からをクリックしてください(下記スクリーンショット参照)。![[データ] > [テーブル/範囲から] をクリック](http://cdn.extendoffice.com/images/stories/doc-excel/cross-join/doc-cross-join-9.webp)
2。 表示されたPower Query エディターウィンドウで、ホームタブから閉じて読み込む>閉じて読み込むをクリックします。![[閉じて読み込む] コマンドをクリック](http://cdn.extendoffice.com/images/stories/doc-excel/cross-join/doc-cross-join-10.webp)
3。データのインポートダイアログボックスが表示されたら、接続のみを作成オプションを選択して、OKをクリックします。![[接続のみ作成] オプションを選択](http://cdn.extendoffice.com/images/stories/doc-excel/cross-join/doc-cross-join-11.webp)
4。クエリと接続ペインが右側に表示され、1 つのクエリが「接続のみ」として追加されたことを確認できます。
5。 同じ手順を繰り返して、2 番目のテーブルも「接続のみ」のクエリとして読み込みましょう。すると、クエリと接続ペインに、最初のクエリと並んで表示されます。
ステップ3:参照クエリとカスタム列を作成する
1。クロス結合で最初のテーブルとして使用するクエリを右クリックし、参照を選択します。![[参照] を選択](http://cdn.extendoffice.com/images/stories/doc-excel/cross-join/doc-cross-join-14.webp)
2。Power Query エディターウィンドウで、列の追加タブに移動し、カスタム列をクリックしてください(下記スクリーンショット参照)。![[カスタム列] をクリック](http://cdn.extendoffice.com/images/stories/doc-excel/cross-join/doc-cross-join-15.webp)
3。カスタム列ダイアログボックスのカスタム列の数式ボックスに、クロス結合で使用するもう一方のテーブル名を入力し、OKボタンをクリックします。
注:
クエリ名にスペースが含まれている場合(例:Product Color)、カスタム列の数式ボックスに入力する際には、#"クエリ名"という構文で囲む必要があります。たとえば、「Product Color」の場合は、#"Product Color"と入力してください。
4。 新しいカスタム列が表示されたら、その内容を展開するために展開ボタンをクリックします。
5。 展開されたペインで、結合したい列がチェックされていることを確認し、OKをクリックします。
6。これで、2 つのテーブルから生成されるすべての組み合わせが表示されます。
ステップ4:ワークシートにデータを読み込む
ホームタブの閉じて読み込む>閉じて読み込むをクリックすると、すべての組み合わせを含むテーブルが新しいワークシートに読み込まれます。
→
メリット
- 大規模データに対応:数千行のデータでも卓越したパフォーマンスを発揮します。
- 再利用可能&リフレッシュ可能:ソース範囲に新たなデータを追加した場合でも、クエリをリフレッシュするだけで結果が自動的に更新されます。
デメリット
- 手順がやや多い
- 基本的な Power Query の知識が必要
方法3:PivotTable を使用したクロスジョイン
この方法は間接的ですが、数式を記述せずにすべての組み合わせを生成する必要がある場合に驚くほど効果的です。特に、視覚的でクリックベースの操作を好むユーザー、または動的配列数式をサポートしていないExcel バージョンを使用しているユーザーに役立ちます。
1。データリストごとに個別のテーブルを作成し、方法2 のステップ1で説明した手順と同じように名前を付けます。
2。 最初の列として使用するテーブルを選択し、挿入タブに移動して、ピボットテーブルをクリックしてください(下記スクリーンショット参照)。
3。テーブルまたは範囲からのピボットテーブルダイアログボックスで、既存のワークシートを選択してピボットテーブルの配置場所を指定し、このデータをデータモデルに追加するにチェックを入れて、OKをクリックします。
4。ピボットテーブルフィールドペインが右側に表示されたら、テーブルの列名にチェックを入れると、自動的に行エリアに追加されます。
5。 次に、すべてタブに切り替え、ピボットテーブルフィールドペインで、クロス結合の2 列目として使用するテーブルを選択し、その列名にチェックを入れて行エリアに追加します。すると、下記スクリーンショットのようにピボットテーブルが完成します。
6。PivotTable 内のセルを1 つクリックし、デザインタブでレポートレイアウト>表形式で表示を選択すると、PivotTable が表形式で表示されます(下記スクリーンショット参照)。![[表形式で表示] オプションを選択](http://cdn.extendoffice.com/images/stories/doc-excel/cross-join/doc-cross-join-26.webp)
7。 引き続き、レポートレイアウト > すべてのアイテムラベルを繰り返すをクリックして、すべての行にアイテムを表示します。![[すべての項目ラベルを繰り返す] を選択して各行にすべての項目を表示](http://cdn.extendoffice.com/images/stories/doc-excel/cross-join/doc-cross-join-27.webp)
8。 最後に、集計の合計>行と列の合計をオフにします。![行と列に対して [オフ] を選択](http://cdn.extendoffice.com/images/stories/doc-excel/cross-join/doc-cross-join-28.webp)
これにより、ピボットテーブルには集計行や集計列を含まないすべての組み合わせがクリーンに表示されます。
メリット
- 数式や Power Query は不要
- 非常に簡単で視覚的
- 簡易分析に最適
デメリット
- 動的ではない
- 手動操作が必要
- 出力結果は元データとリンクされていない
方法4:ユーザー定義関数を使用したクロスジョイン(Excel 365 / Excel 2021 以降)
2 つのリスト間のすべての可能な組み合わせを頻繁に生成する必要がある場合、ユーザー定義関数(UDF)はクリーンで再利用可能かつ高度に柔軟なソリューションを提供します。Excel 365 またはExcel 2021 ではスピル配列出力により結果が完全に動的になるため、クロスジョイン操作を強力かつ便利に自動化できます。
1。Alt + F11キーを押して、VBA エディターを開きます。
2。 次に、挿入 > モジュールをクリックし、次のコードを空のモジュールにコピー&ペーストしてください。
Function CrossJoin(list1 As Range, list2 As Range)
'Updateby Extendoffice
Dim arr1, arr2, result()
Dim i As Long, j As Long, r As Long
arr1 = list1.Value
arr2 = list2.Value
ReDim result(1 To UBound(arr1, 1) * UBound(arr2, 1), 1 To 2)
r = 1
For i = 1 To UBound(arr1, 1)
For j = 1 To UBound(arr2, 1)
result(r, 1) = arr1(i, 1)
result(r, 2) = arr2(j, 1)
r = r + 1
Next j
Next i
CrossJoin = result
End Function
3。Excel ワークシートに戻って、次の数式を入力し、Enterキーを押すと、Excel がすべての組み合わせを自動的にスピル表示します。
=CrossJoin(A2:A5, C2:C5) 
まとめ
以上のように、Excel でクロスジョインを実行するには複数の柔軟で効率的なソリューションがあり、特定のニーズや作業環境に基づいて最も適した方法を選択できます。
- 数式は、Excel 365 の動的配列数式を活用し、プログラミング不要で高速に結果を生成できるため、ネイティブな数式を好むライトユーザーに最適です。
- Power Queryは、明確で再利用可能なプロセスを提供し、大規模データセットの処理にもしっかり対応。データクレンジングや自動化レポート作成に最適です!
- PivotTableの操作方法はやや間接的ですが、慣れ親しんだユーザーにとっては非常に効果的で直感的です。
- VBA ユーザー定義関数は、カスタマイズ性が極めて高く、複雑なマクロコードへの統合が必要なシナリオに最適です。
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得