Note: The other languages of the website are Google-translated. Back to English

Excelで3列または複数列のすべての組み合わせを生成するにはどうすればよいですか?

3列のデータがあるとすると、次のスクリーンショットに示すように、これらの3列のデータのすべての組み合わせを生成または一覧表示します。 Excelでこのタスクを解決するための良い方法はありますか?

式を使用して、3列のデータに基づいてすべての組み合わせを生成します

VBAコードを使用して、3列または複数列のデータに基づいてすべての組み合わせを生成します

すばらしい機能を使用して、3列または複数列のデータに基づいてすべての組み合わせを生成します


式を使用して、3列のデータに基づいてすべての組み合わせを生成します

次の長い数式は、3つの列のすべての組み合わせを一覧表示するのに役立ちます。次のようにしてください。

1。 結果を出力するセルをクリックしてから、以下の数式をコピーして貼り付けてください。

=IFERROR(INDEX($A$2:$A$4,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$6)*(COUNTA($C$2:$C$5)))))+1)&"-"&INDEX($B$2:$B$6,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$5)),COUNTA($B$2:$B$6))+1)&"-"&INDEX($C$2:$C$5,MOD((ROW(1:1)-1),COUNTA($C$2:$C$5))+1),"")

注意:この式では: A2:A4, B2:B6, C2:C5 使用するデータ範囲です。

2。 次に、空白のセルが表示されるまで、塗りつぶしハンドルをセルまでドラッグします。つまり、3つの列のすべての組み合わせが一覧表示されます。スクリーンショットを参照してください。


VBAコードを使用して、3列または複数列のデータに基づいてすべての組み合わせを生成します

上記の長い式は使用がやや難しく、データを使用する必要のある列が複数ある場合、変更が面倒になります。 ここでは、すぐに対処できるVBAコードを紹介します。

1。 を押し続けます Alt + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。

2に設定します。 OK をクリックします。 インセット > モジュール、モジュールウィンドウに次のコードを貼り付けます。

VBAコード:3列または複数列のすべての組み合わせを生成します

Sub ListAllCombinations()
'Updateby Extendoffice
Dim xDRg1, xDRg2, xDRg3 As Range
Dim xRg  As Range
Dim xStr As String
Dim xFN1, xFN2, xFN3 As Integer
Dim xSV1, xSV2, xSV3 As String
Set xDRg1 = Range("A2:A4")  'First column data
Set xDRg2 = Range("B2:B6")  'Second column data
Set xDRg3 = Range("C2:C5")  'Third column data
xStr = "-"   'Separator
Set xRg = Range("E2")  'Output cell
For xFN1 = 1 To xDRg1.Count
    xSV1 = xDRg1.Item(xFN1).Text
    For xFN2 = 1 To xDRg2.Count
        xSV2 = xDRg2.Item(xFN2).Text
      For xFN3 = 1 To xDRg3.Count
        xSV3 = xDRg3.Item(xFN3).Text
        xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3
        Set xRg = xRg.Offset(1, 0)
       Next
    Next
Next
End Sub

注意:上記のコードでは、 A2:A4, B2:B6, C2:C5 使用するデータ範囲は、 E2 結果を検索する出力セルです。 より多くの列のすべての組み合わせを取得する場合は、必要に応じて他のパラメーターを変更してコードに追加してください。

3。 次に、 F5 このコードを実行するためのキーを押すと、3つまたは複数の列のすべての組み合わせが一度に生成されます。スクリーンショットを参照してください。


すばらしい機能を使用して、3列または複数列のデータに基づいてすべての組み合わせを生成します

あなたが持っている場合 Kutools for Excel、その強力な すべての組み合わせを一覧表示 この機能を使用すると、複数の列のすべての組み合わせをすばやく簡単に一覧表示できます。

ヒント:これを適用する すべての組み合わせを一覧表示 機能、まず、ダウンロードする必要があります Kutools for Excel、次に機能をすばやく簡単に適用します。

インストールした後 Kutools for Excel、次のようにしてください。

1に設定します。 OK をクリックします。 クツール > インセット > すべての組み合わせを一覧表示、スクリーンショットを参照してください:

2。 の中に すべての組み合わせを一覧表示 ダイアログボックスで、次のスクリーンショットのように、組み合わせを一覧表示するための列データと区切り文字を指定します。

3。 データと区切り文字を設定したら、をクリックします Ok ボタンをクリックし、次のプロンプトボックスで、結果を見つけるためのセルを選択します。スクリーンショットを参照してください。

4。 次に、をクリックします OK ボタンをクリックすると、以下のスクリーンショットに示すように、すべての組み合わせがすぐに生成されます。

クリックしてKutoolsfor Excelと無料トライアルを今すぐダウンロードしてください!


  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする およびデータの保持。 分割セルコンテンツ; 重複する行と合計/平均を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • お気に入りの数式をすばやく挿入する、範囲、チャート、写真; セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • ピボットテーブルのグループ化 週番号、曜日など... ロック解除された、ロックされたセルを表示する さまざまな色で; 式/名前を持つセルを強調表示する...
kteタブ201905
  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (17)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
ランダムな組み合わせを生成するには、
=INDEX($A$2:$A$4,RANDBETWEEN(1,3))&"-"&INDEX($B$2:$B$6,RANDBETWEEN(1,5))&"-"&INDEX($C$2:$C$5,RANDBETWEEN(1,4))
このコメントは、サイトのモデレーターによって最小化されました
この投稿を共有していただきありがとうございます。 @Balajiの公式に感謝します
このコメントは、サイトのモデレーターによって最小化されました
あなたには感謝してもしきれません! とても時間を節約できました!
このコメントは、サイトのモデレーターによって最小化されました
5列の式の下でどのように行うのですか? 理解しようとしていますが、エラーが発生します
=IFERROR(INDEX($A$2:$A$4,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$6)*(COUNTA($C$2:$C$5)))))+1)&"-"&INDEX($B$2:$B$6,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$5)),COUNTA($B$2:$B$6))+1)&"-"&INDEX($C$2:$C$5,MOD((ROW(1:1)-1),COUNTA($C$2:$C$5))+1),"")
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、Nikhil、5列からすべての組み合わせを取得するには、以下のVBAコードが役立つ可能性があります。データへのセル参照を変更してください。
サブリストAllCombinations()
'Updateby Extendoffice
範囲としての薄暗いxDRg1、xDRg2、xDRg3、xDRg4、xDRg5
範囲としての薄暗いxRg
文字列としての薄暗いxStr
整数としての薄暗いxFN1、xFN2、xFN3、xFN4、xFN5
Dim xSV1、xSV2、xSV3、xSV4、xSV5 As String
Set xDRg1 = Range( "A2:A7")'最初の列のデータ
Set xDRg2 = Range( "B2:B7")'XNUMX番目の列のデータ
Set xDRg3 = Range( "C2:C7")'XNUMX列目のデータ
Set xDRg4 = Range( "D2:D7")'XNUMX番目の列のデータ
Set xDRg5 = Range( "E2:E7")'XNUMX列目のデータ
xStr ="-"'セパレータ
Set xRg = Range( "H2")'出力セル
xFN1=1の場合xDRg1.Countへ
xSV1 = xDRg1.Item(xFN1).Text
xFN2=1の場合xDRg2.Countへ
xSV2 = xDRg2.Item(xFN2).Text
xFN3=1の場合xDRg3.Countへ
xSV3 = xDRg3.Item(xFN3).Text
xFN4=1の場合xDRg4.Countへ
xSV4 = xDRg4.Item(xFN4).Text
xFN5=1の場合xDRg5.Countへ
xSV5 = xDRg5.Item(xFN5).Text
xRg.Value = xSV1&xStr&xSV2&xStr&xSV3&xStr&xSV4&xStr&xSV5
xRg = xRg.Offset(1、0)を設定します
次へ
次へ
次へ
次へ
次へ
終了サブ試してみてください、それがあなたを助けることができることを願っています!
このコメントは、サイトのモデレーターによって最小化されました
こんにちはスカイヤン、私は7ロールのコードを変更しましたが、Excelの行数が1,048,576行しかないため、VBAコードですべての組み合わせを指定することはできません。他の列を続行する方法を知っていますか? このコード-SetxRg= xRg.Offset(1、0)を変更する必要があると思います
このコメントは、サイトのモデレーターによって最小化されました
こんにちはskyyang、私は7ロールのコードを変更しましたが、Excelには1,048,576行しかないため、VBAコードですべての組み合わせを指定することはできません。
他のコラムを続ける方法を知っていますか?
私はこのコードだと思います-SetxRg= xRg.Offset(1、0)
変更する必要があります 
このコメントは、サイトのモデレーターによって最小化されました
=IFERROR(INDEX($A$2:$A$5,INT((ROW(1:1)-1)/((COUNTA($B$2:$B$3)*(COUNTA($C$2:$C$3)* (COUNTA($D$2:$D$4)* (COUNTA($E$2:$E$6)* (COUNTA($H$2:$H$6)* (COUNTA($G$2:$G$6)* (COUNTA($H$2:$H$6))))))))))+1)&"-"&INDEX($B$2:$B$3,MOD(INT((ROW(1:1)-1)/COUNTA($C$2:$C$3)),COUNTA($B$2:$B$3))+1)&"-" &INDEX($C$2:$C$3,MOD(INT((ROW(1:1)-1)/COUNTA($D$2:$D$4)),COUNTA($C$2:$C$3))+1)&"-" &INDEX($D$2:$D$4,MOD(INT((ROW(1:1)-1)/COUNTA($E$2:$E$6)),COUNTA($D$2:$D$4))+1)&"-" &INDEX($E$2:$E$6,MOD(INT((ROW(1:1)-1)/COUNTA($F$2:$F$6)),COUNTA($E$2:$E$6))+1)&"-" &INDEX($F$2:$F$6,MOD(INT((ROW(1:1)-1)/COUNTA($G$2:$G$6)),COUNTA($F$2:$F$6))+1)&"-" &INDEX($G$2:$G$6,MOD(INT((ROW(1:1)-1)/COUNTA($H$2:$H$6)),COUNTA($G$2:$G$6))+1)&"-"&INDEX($H$2:$H$6,MOD((ROW(1:1)-1),COUNTA($H$2:$H$6))+1),"")
このコメントは、サイトのモデレーターによって最小化されました
私は4列のためにこの式が必要です
このコメントは、サイトのモデレーターによって最小化されました
どうもありがとう。 まさに私が必要なもの:-)))
このコメントは、サイトのモデレーターによって最小化されました
このコードをありがとうございました。 必要な列の量(25)に合わせてコードを変更しました。 ありがとう、
このコメントは、サイトのモデレーターによって最小化されました
HiIn VBAコードでは、2つの列を使用しました。列の範囲は、E75:E2、B267:B2、C195:C2、およびD267:D2です。 出力範囲はJXNUMXです。 この場合、出力結果は行制限を超えていました。 エラーの解決にご協力ください
このコメントは、サイトのモデレーターによって最小化されました
こんにちはこれは9列のコードです:')
サブリストAllCombinations()
'Updateby Extendoffice
Dim xDRg1、xDRg2、xDRg3、xDRg4、xDRg5、xDRg6、xDRg7、xDRg8、xDRg9 As Range
範囲としての薄暗いxRg
文字列としての薄暗いxStr
Dim xFN1、xFN2、xFN3、xFN4、xFN5、xFN6、xFN7、xFN8、xFN9整数として
Dim xSV1、xSV2、xSV3、xSV4、xSV5、xSV6、xSV7、xSV8、xSV9 As String
Set xDRg1 = Range( "A2:A3")'最初の列のデータ
Set xDRg2 = Range( "B2:B3")'XNUMX番目の列のデータ
Set xDRg3 = Range( "C2:C10")'XNUMX列目のデータ
Set xDRg4 = Range( "D2:D2")'XNUMX列目のデータ
Set xDRg5 = Range( "E2:E3")'XNUMX列目のデータ
Set xDRg6 = Range( "F2:F3")'XNUMX列目のデータ
Set xDRg7 = Range( "G2:G4")'XNUMX列目のデータ
Set xDRg8 = Range( "H2:H3")'XNUMX列目のデータ
Set xDRg9 = Range( "I2:I3")'XNUMX列目のデータ
xStr ="-"'セパレータ
Set xRg = Range( "K2")'出力セル
xFN1=1の場合xDRg1.Countへ
xSV1 = xDRg1.Item(xFN1).Text
xFN2=1の場合xDRg2.Countへ
xSV2 = xDRg2.Item(xFN2).Text
xFN3=1の場合xDRg3.Countへ
xSV3 = xDRg3.Item(xFN3).Text
xFN4=1の場合xDRg4.Countへ
xSV4 = xDRg4.Item(xFN4).Text
xFN5=1の場合xDRg5.Countへ
xSV5 = xDRg5.Item(xFN5).Text
xFN6=1の場合xDRg6.Countへ
xSV6 = xDRg6.Item(xFN6).Text
xFN7=1の場合xDRg7.Countへ
xSV7 = xDRg7.Item(xFN7).Text
xFN8=1の場合xDRg8.Countへ
xSV8 = xDRg8.Item(xFN8).Text
xFN9=1の場合xDRg9.Countへ
xSV9 = xDRg9.Item(xFN9).Text
xRg.Value = xSV1&xStr&xSV2&xStr&xSV3&xStr&xSV4&xStr&xSV5&xStr&xSV6&xStr&xSV7&xStr&xSV8&xStr&xSV9
xRg = xRg.Offset(1、0)を設定します
次へ
次へ
次へ
次へ
次へ
次へ
次へ
次へ
次へ
End Subの
このコメントは、サイトのモデレーターによって最小化されました
조합의나열을"단어-단어-단어"순으✧나열하는법은이해했습니다。
그런데"단어"가아니라숫자일경우、
즉숫자의조합을단순나열이아닌덧셈이나곱셈으✧적용하려면어떻게해

'VBA코드:3개또는여러열의모든조합생성'에서말이죠。

「1-1-1」✧엑셀에결과값이표기되는것이아니고

-1問엑셀에표기될수있게말입니다。
このコメントは、サイトのモデレーターによって最小化されました
Bonjour、コメントfaire pour quechaquevaleurssoientplacéesdansunecolonnedisciente ennonséparéesparuntiret?
このコメントは、サイトのモデレーターによって最小化されました
Esse código me ajudou bastante e compinou um item de cada coluna entre elas. Mas também preciso compinar dois itens de cada coluna, sem repetição. Alguém poderia me ajudar nisso?
このコメントは、サイトのモデレーターによって最小化されました
Esse código me ajudou bastante e compinou um item de cada coluna entre elas. Mas também preciso compinar dois itens de cada coluna, sem repetição. Alguém poderia me ajudar nisso?
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護