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

Jak generovat všechny kombinace 3 nebo více sloupců v aplikaci Excel?

Předpokládejme, že mám 3 sloupce dat, teď chci generovat nebo vypsat všechny kombinace dat v těchto 3 sloupcích, jak je uvedeno níže. Máte nějaké dobré metody pro řešení tohoto úkolu v aplikaci Excel?

Generujte všechny kombinace na základě 3 sloupců dat pomocí vzorce

Generujte všechny kombinace na základě 3 nebo více sloupců dat pomocí kódu VBA

Generujte všechny kombinace na základě 3 nebo více sloupců dat pomocí úžasné funkce


Generujte všechny kombinace na základě 3 sloupců dat pomocí vzorce

Následující dlouhý vzorec může pomoci vyjmenovat všechny kombinace 3 sloupců, postupujte takto:

1. Klikněte prosím na buňku, kam chcete výsledek odeslat, a poté do ní zkopírujte a vložte následující vzorec:

=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),"")

Poznámka: V tomto vzorci: A2: A4, B2: B6, C2: C5 jsou datové rozsahy, které chcete použít.

2. Poté přetáhněte rukojeť výplně dolů do buněk, dokud se nezobrazí prázdné buňky, to znamená, že byly uvedeny všechny kombinace 3 sloupců, viz screenshot:


Generujte všechny kombinace na základě 3 nebo více sloupců dat pomocí kódu VBA

Výše uvedený dlouhý vzorec je pro použití poněkud obtížný, pokud je potřeba použít více sloupců, bude obtížné jej upravit. Zde představím kód VBA, abych se s ním rychle vypořádal.

1. Podržte ALT + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.

2, klikněte Vložit > Modula vložte následující kód do okna modulu.

Kód VBA: Vygenerujte všechny kombinace 3 nebo více sloupců

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

Poznámka: Ve výše uvedeném kódu, A2: A4, B2: B6, C2: C5 jsou rozsah dat, který chcete použít, E2 je výstupní buňka, ve které chcete najít výsledky. Pokud chcete získat všechny kombinace více sloupců, změňte a podle potřeby přidejte do kódu další parametry.

3. Poté stiskněte tlačítko F5 klíč ke spuštění tohoto kódu a všechny kombinace 3 nebo více sloupců budou vygenerovány najednou, viz screenshot:


Generujte všechny kombinace na základě 3 nebo více sloupců dat pomocí úžasné funkce

Pokud máte Kutools pro Excel, s jeho silným Seznam všech kombinací Díky této funkci můžete rychle a snadno zobrazit všechny kombinace více sloupců.

Tipy:Použít toto Seznam všech kombinací funkce, za prvé, měli byste si stáhnout Kutools pro Excela poté tuto funkci rychle a snadno aplikujte.

Po instalaci Kutools pro Excel, udělejte prosím toto:

1, klikněte Kutools > Vložit > Seznam všech kombinací, viz screenshot:

2. V Seznam všech kombinací v dialogovém okně zadejte data sloupců a oddělovače pro výpis kombinací jako na následujícím obrázku obrazovky:

3. Po nastavení dat a oddělovače klikněte na Ok Tlačítko, v další výzvě vyberte buňku k vyhledání výsledku, viz screenshot:

4. A pak klikněte OK tlačítko, všechny kombinace byly vygenerovány okamžitě, jak je uvedeno níže:

Klikněte a stáhněte si Kutools pro Excel a bezplatnou zkušební verzi hned teď!


  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce a uchovávání údajů; Rozdělit obsah buněk; Zkombinujte duplicitní řádky a součet / průměr... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Oblíbené a rychlé vkládání vzorců„Rozsahy, grafy a obrázky; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Seskupování kontingenčních tabulek podle číslo týdne, den v týdnu a další ... Zobrazit odemčené, zamčené buňky různými barvami; Zvýrazněte buňky, které mají vzorec / název...
karta kte 201905
  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50%a snižuje stovky kliknutí myší každý den!
officetab dno
Komentáře (17)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Pro generování libovolné náhodné kombinace můžeme použít
=INDEX($A$2:$A$4,RANDBETWEEN(1,3))&"-"&INDEX($B$2:$B$6,RANDBETWEEN(1,5))&"-"&INDEX($C$2:$C$5,RANDBETWEEN(1,4))
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát za sdílení tohoto příspěvku. Moc děkuji @Balaji za jeho/její vzorec
Tento komentář byl moderátorem webu minimalizován
NEMŮŽU TI DOSTATEČNĚ PODĚKOVAT! UŠETŘILI MI TOLIK ČASU!
Tento komentář byl moderátorem webu minimalizován
JAK udělat níže uvedený vzorec pro 5 sloupců? Snažím se to zjistit, ale chyba při zadávání
=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),"")
Tento komentář byl moderátorem webu minimalizován
Dobrý den, Nikhil, pro získání všech kombinací z 5 sloupců vám může pomoci níže uvedený kód VBA, změňte prosím odkazy na buňky na svá data.
Sub ListAllCombinations()
'Aktualizovat Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5 jako rozsah
Dim xRg jako rozsah
Dim xStr jako řetězec
Dim xFN1, xFN2, xFN3, xFN4, xFN5 jako celé číslo
Dim xSV1, xSV2, xSV3, xSV4, xSV5 jako řetězec
Set xDRg1 = Range("A2:A7") 'Data prvního sloupce
Set xDRg2 = Range("B2:B7") 'Data druhého sloupce
Set xDRg3 = Range("C2:C7") 'Data třetího sloupce
Set xDRg4 = Range("D2:D7") 'Data čtvrtého sloupce
Set xDRg5 = Range("E2:E7") 'Data pátého sloupce
xStr = "-" 'Oddělovač
Set xRg = Range("H2") 'Výstupní buňka
Pro xFN1 = 1 To xDRg1.Počet
xSV1 = xDRg1.Položka(xFN1).Text
Pro xFN2 = 1 To xDRg2.Počet
xSV2 = xDRg2.Položka(xFN2).Text
Pro xFN3 = 1 To xDRg3.Počet
xSV3 = xDRg3.Položka(xFN3).Text
Pro xFN4 = 1 To xDRg4.Počet
xSV4 = xDRg4.Položka(xFN4).Text
Pro xFN5 = 1 To xDRg5.Počet
xSV5 = xDRg5.Položka(xFN5).Text
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5
Nastavit xRg = xRg.Offset(1, 0)
další
další
další
další
další
End SubProsím, zkuste to, doufám, že vám to pomůže!
Tento komentář byl moderátorem webu minimalizován
Ahoj skyyang, změnil jsem kód pro 7 rolí, ale když vidím, že Excel má pouze 1,048,576 1 0 řádků, kód VBA nemůže poskytnout všechny kombinace. Máte představu, jak mohu pokračovat v dalších sloupcích? Myslím, že tento kód - Set xRg = xRg.Offset(XNUMX, XNUMX) je potřeba změnit
Tento komentář byl moderátorem webu minimalizován
Ahoj skyyang, změnil jsem kód pro 7 rolí, ale když vidím, že Excel má pouze 1,048,576 XNUMX XNUMX řádků, kód VBA nemůže poskytnout všechny kombinace.
Máte nápad, jak mohu pokračovat v dalších sloupcích?
Myslím, že tento kód - Set xRg = xRg.Offset(1, 0)
potřeba změnit 
Tento komentář byl moderátorem webu minimalizován
=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),"")
Tento komentář byl moderátorem webu minimalizován
Potřebuji tento vzorec pro 4 sloupce
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát. Přesně to, co potřebuji :-)))
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát za tento kód. Upravil jsem kód pro množství sloupce, který potřebuji (25). Dík,
Tento komentář byl moderátorem webu minimalizován
HiIn VBA kód jsem použil čtyři sloupce a rozsah sloupce je E2:E75, B2:B267, C2:C195 & D2:D267. Výstupní rozsah je J2. V tomto případě byl výstupní výsledek překročen limit řádku. Prosím o pomoc s vyřešením chyby
Tento komentář byl moderátorem webu minimalizován
Ahoj, tak toto je kód pro 9 sloupců:')
Sub ListAllCombinations()
'Aktualizovat Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5, xDRg6, xDRg7, xDRg8, xDRg9 jako rozsah
Dim xRg jako rozsah
Dim xStr jako řetězec
Dim xFN1, xFN2, xFN3, xFN4, xFN5, xFN6, xFN7, xFN8, xFN9 jako celé číslo
Dim xSV1, xSV2, xSV3, xSV4, xSV5, xSV6, xSV7, xSV8, xSV9 jako řetězec
Set xDRg1 = Range("A2:A3") 'Data prvního sloupce
Set xDRg2 = Range("B2:B3") 'Data druhého sloupce
Set xDRg3 = Range("C2:C10") 'Data třetího sloupce
Set xDRg4 = Range("D2:D2") 'Data třetího sloupce
Set xDRg5 = Range("E2:E3") 'Data třetího sloupce
Set xDRg6 = Range("F2:F3") 'Data třetího sloupce
Set xDRg7 = Range("G2:G4") 'Data třetího sloupce
Set xDRg8 = Range("H2:H3") 'Data třetího sloupce
Set xDRg9 = Range("I2:I3") 'Data třetího sloupce
xStr = "-" 'Oddělovač
Set xRg = Range("K2") 'Výstupní buňka
Pro xFN1 = 1 To xDRg1.Počet
xSV1 = xDRg1.Položka(xFN1).Text
Pro xFN2 = 1 To xDRg2.Počet
xSV2 = xDRg2.Položka(xFN2).Text
Pro xFN3 = 1 To xDRg3.Počet
xSV3 = xDRg3.Položka(xFN3).Text
Pro xFN4 = 1 To xDRg4.Počet
xSV4 = xDRg4.Položka(xFN4).Text
Pro xFN5 = 1 To xDRg5.Počet
xSV5 = xDRg5.Položka(xFN5).Text
Pro xFN6 = 1 To xDRg6.Počet
xSV6 = xDRg6.Položka(xFN6).Text
Pro xFN7 = 1 To xDRg7.Počet
xSV7 = xDRg7.Položka(xFN7).Text
Pro xFN8 = 1 To xDRg8.Počet
xSV8 = xDRg8.Položka(xFN8).Text
Pro xFN9 = 1 To xDRg9.Počet
xSV9 = xDRg9.Položka(xFN9).Text
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5 & xStr & xSV6 & xStr & xSV7 & xStr & xSV8 & xStr & xSV9
Nastavit xRg = xRg.Offset(1, 0)
další
další
další
další
další
další
další
další
další
End Sub
Tento komentář byl moderátorem webu minimalizován
조합의 나열을 "단어-단어-단어" 순으로 나열하는 법은 이해했습니다.
그런데 "단어"가 아니라 숫자일 경우,
즉 숫자의 조합을 단순 나열이 아닌 덧셈이나 곱셈으로 적용하려멚씘댕려멻씌ꖄ려멻씌ꖄ

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

"1-1-1" 로 엑셀에 결과 값이 표기되는 것이 아니고

-1 로 엑셀에 표기될 수 있게 말입니다.
Tento komentář byl moderátorem webu minimalizován
Bonjour, komentář faire pour que chaque valeurs soient placées dans une colonne differente en non séparées par un tiret ?
Tento komentář byl moderátorem webu minimalizován
Esse código me ajudou bastante e combinou um item de cada coluna entre elas. Mas também preciso combinar dois itens de cada coluna, sem repetição. Alguém poderia me ajudar nisso?
Tento komentář byl moderátorem webu minimalizován
Esse código me ajudou bastante e combinou um item de cada coluna entre elas. Mas também preciso combinar dois itens de cada coluna, sem repetição. Alguém poderia me ajudar nisso?
Zatím zde nejsou žádné komentáře
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění

Sociální sítě

Copyright © 2009 - www.extendoffice.com. | Všechna práva vyhrazena. Poháněno ExtendOffice. | |. | Sitemap
Microsoft a logo Office jsou ochranné známky nebo registrované ochranné známky společnosti Microsoft Corporation ve Spojených státech a / nebo jiných zemích.
Chráněno Sectigo SSL