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

Hvordan genereres alle kombinationer af 3 eller flere kolonner i Excel?

Antag, jeg har 3 kolonner med data, nu vil jeg generere eller liste alle kombinationer af dataene i disse 3 kolonner som vist nedenstående skærmbillede. Har du gode metoder til at løse denne opgave i Excel?

Generer alle kombinationer baseret på 3 kolonner med data ved hjælp af en formel

Generer alle kombinationer baseret på 3 eller flere kolonner med data ved hjælp af VBA-kode

Generer alle kombinationer baseret på 3 eller flere kolonner med data ved hjælp af en fantastisk funktion


Generer alle kombinationer baseret på 3 kolonner med data ved hjælp af en formel

Den følgende lange formel kan hjælpe med at liste alle kombinationer af 3 kolonner, gør som følger:

1. Klik på en celle, hvor resultatet skal udføres, og kopier og indsæt nedenstående formel i den:

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

Bemærk: I denne formel: A2: A4, B2: B6, C2: C5 er de dataområder, du vil bruge.

2. Træk derefter fyldhåndtaget ned til cellerne, indtil tomme celler vises, det vil sige, at alle kombinationer af de 3 kolonner er opført, se skærmbillede:


Generer alle kombinationer baseret på 3 eller flere kolonner med data ved hjælp af VBA-kode

Ovenstående lange formel er noget vanskelig at bruge, hvis der er flere kolonnedata, der skal bruges, vil det være besværligt at ændre. Her vil jeg introducere en VBA-kode for at håndtere det hurtigt.

1. Hold nede ALT + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

2. Klik indsatte > Moduler, og indsæt følgende kode i modulvinduet.

VBA-kode: Generer alle kombinationer af 3 eller flere kolonner

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

Bemærk: I ovenstående kode, A2: A4, B2: B6, C2: C5 er det dataområde, du vil bruge, E2 er den outputcelle, som du vil finde resultaterne. Hvis du ønsker at få alle kombinationer af flere kolonner, skal du ændre og tilføje andre parametre til koden efter behov.

3. Tryk derefter på F5 nøgle til at køre denne kode, og alle kombinationer af 3 eller flere kolonner genereres på én gang, se skærmbillede:


Generer alle kombinationer baseret på 3 eller flere kolonner med data ved hjælp af en fantastisk funktion

Hvis du har Kutools til Excel, med sin kraftfulde Liste over alle kombinationer funktion, kan du hurtigt og nemt liste alle kombinationer af flere kolonner.

Tips:At anvende dette Liste over alle kombinationer funktion, for det første skal du downloade Kutools til Excel, og anvend derefter funktionen hurtigt og nemt.

Efter installation Kutools til Excelskal du gøre som dette:

1. Klik Kutools > indsatte > Liste over alle kombinationer, se skærmbillede:

2. I Liste over alle kombinationer dialogboks, angiv kolonnedata og separatorer til liste over kombinationerne som vist på følgende skærmbillede:

3. Efter indstilling af data og separator skal du klikke på Ok knap, i den næste promptboks skal du vælge en celle for at finde resultatet, se skærmbillede:

4. Klik derefter på OK knap, er alle kombinationer genereret med det samme som vist nedenstående skærmbillede:

Klik for at downloade Kutools til Excel og gratis prøveversion nu!


  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner og opbevaring af data; Split celler indhold; Kombiner duplikatrækker og sum / gennemsnit... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Foretrukne og hurtigt indsætte formler, Områder, diagrammer og billeder; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Pivottabelgruppering efter ugenummer, ugedag og mere ... Vis ulåste, låste celler ved forskellige farver; Fremhæv celler, der har formel / navn...
kte-fane 201905
  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (17)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
For at generere enhver tilfældig kombination, vi kan bruge
=INDEX($A$2:$A$4,RANDBETWEEN(1,3))&"-"&INDEX($B$2:$B$6,RANDBETWEEN(1,5))&"-"&INDEX($C$2:$C$5,RANDBETWEEN(1,4))
Denne kommentar blev minimeret af moderatoren på webstedet
Mange tak for at dele dette opslag. Mange tak til @Balaji for hans/hendes formel
Denne kommentar blev minimeret af moderatoren på webstedet
JEG KAN IKKE TAKKE DIG NOG! SPAREDE MIG SÅ MEGET TID!
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan gør man nedenstående formel for 5 kolonner? Prøver at finde ud af det, men det giver fejl
=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),"")
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, Nikhil, For at få alle kombinationer fra 5 kolonner, kan nedenstående VBA-kode hjælpe dig, skift venligst cellereferencerne til dine data.
Underliste Alle kombinationer()
'Opdatering af Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5 Som område
Dim xRg As Range
Dim xStr As String
Dim xFN1, xFN2, xFN3, xFN4, xFN5 Som heltal
Dim xSV1, xSV2, xSV3, xSV4, xSV5 Som streng
Indstil xDRg1 = Range("A2:A7") 'Første kolonnedata
Indstil xDRg2 = Range("B2:B7") 'Anden kolonnedata
Indstil xDRg3 = Range("C2:C7") 'Tredje kolonnedata
Indstil xDRg4 = Range("D2:D7") 'Fjerde kolonnedata
Indstil xDRg5 = Range("E2:E7") 'Femte kolonnedata
xStr = "-" 'Separator
Indstil xRg = Range("H2") 'Outputcelle
For xFN1 = 1 Til xDRg1.Count
xSV1 = xDRg1.Item(xFN1).Tekst
For xFN2 = 1 Til xDRg2.Count
xSV2 = xDRg2.Item(xFN2).Tekst
For xFN3 = 1 Til xDRg3.Count
xSV3 = xDRg3.Item(xFN3).Tekst
For xFN4 = 1 Til xDRg4.Count
xSV4 = xDRg4.Item(xFN4).Tekst
For xFN5 = 1 Til xDRg5.Count
xSV5 = xDRg5.Item(xFN5).Tekst
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5
Indstil xRg = xRg.Offset(1, 0)
Næste
Næste
Næste
Næste
Næste
Afslut SubPrøv venligst, håber det kan hjælpe dig!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej skyyang, jeg ændrede koden for 7 ruller, men da Excel kun har 1,048,576 rækker, kan VBA-koden ikke give alle kombinationerne. Har du en idé om, hvordan jeg kan fortsætte på andre kolonner? Jeg tror, ​​at denne kode - Set xRg = xRg.Offset(1, 0) er nødvendig for at ændre
Denne kommentar blev minimeret af moderatoren på webstedet
Hej skyyang, jeg ændrede koden for 7 ruller, men da Excel kun har 1,048,576 rækker, kan VBA-koden ikke give alle kombinationerne.
Har du en idé om, hvordan jeg kan fortsætte på andre kolonner?
Jeg tror, ​​denne kode - Sæt xRg = xRg.Offset(1, 0)
behov for at ændre 
Denne kommentar blev minimeret af moderatoren på webstedet
=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),"")
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg har brug for denne formel til 4 kolonner
Denne kommentar blev minimeret af moderatoren på webstedet
Mange tak. Præcis hvad jeg har brug for :-)))
Denne kommentar blev minimeret af moderatoren på webstedet
Mange tak for denne kode. Jeg har ændret koden for mængden af ​​kolonne, jeg har brug for (25). Tak,
Denne kommentar blev minimeret af moderatoren på webstedet
HiI VBA-kode brugte jeg fire kolonner, og rækkevidden af ​​kolonnen er E2:E75, B2:B267, C2:C195 & D2:D267. Udgangsområdet er J2. I dette tilfælde var udgangsresultatet overskridelse af rækkegrænsen. Hjælp venligst med at løse fejlen
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Så dette er en kode til 9 kolonner :')
Underliste Alle kombinationer()
'Opdatering af Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5, xDRg6, xDRg7, xDRg8, xDRg9 As Range
Dim xRg As Range
Dim xStr As String
Dim xFN1, xFN2, xFN3, xFN4, xFN5, xFN6, xFN7, xFN8, xFN9 Som heltal
Dim xSV1, xSV2, xSV3, xSV4, xSV5, xSV6, xSV7, xSV8, xSV9 Som streng
Indstil xDRg1 = Range("A2:A3") 'Første kolonnedata
Indstil xDRg2 = Range("B2:B3") 'Anden kolonnedata
Indstil xDRg3 = Range("C2:C10") 'Tredje kolonnedata
Indstil xDRg4 = Range("D2:D2") 'Tredje kolonnedata
Indstil xDRg5 = Range("E2:E3") 'Tredje kolonnedata
Indstil xDRg6 = Range("F2:F3") 'Tredje kolonnedata
Indstil xDRg7 = Range("G2:G4") 'Tredje kolonnedata
Indstil xDRg8 = Range("H2:H3") 'Tredje kolonnedata
Indstil xDRg9 = Range("I2:I3") 'Tredje kolonnedata
xStr = "-" 'Separator
Indstil xRg = Range("K2") 'Outputcelle
For xFN1 = 1 Til xDRg1.Count
xSV1 = xDRg1.Item(xFN1).Tekst
For xFN2 = 1 Til xDRg2.Count
xSV2 = xDRg2.Item(xFN2).Tekst
For xFN3 = 1 Til xDRg3.Count
xSV3 = xDRg3.Item(xFN3).Tekst
For xFN4 = 1 Til xDRg4.Count
xSV4 = xDRg4.Item(xFN4).Tekst
For xFN5 = 1 Til xDRg5.Count
xSV5 = xDRg5.Item(xFN5).Tekst
For xFN6 = 1 Til xDRg6.Count
xSV6 = xDRg6.Item(xFN6).Tekst
For xFN7 = 1 Til xDRg7.Count
xSV7 = xDRg7.Item(xFN7).Tekst
For xFN8 = 1 Til xDRg8.Count
xSV8 = xDRg8.Item(xFN8).Tekst
For xFN9 = 1 Til xDRg9.Count
xSV9 = xDRg9.Item(xFN9).Tekst
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5 & xStr & xSV6 & xStr & xSV7 & xStr & xSV8 & xStr & xSV9
Indstil xRg = xRg.Offset(1, 0)
Næste
Næste
Næste
Næste
Næste
Næste
Næste
Næste
Næste
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
조합의 나열을 "단어-단어-단어" 순으로 나열하는 법은 이해했습니다.
그런데 "단어"가 아니라 숫자일 경우,
즉 숫자의 조합을 단순 나열이 아닌 덧셈이나 곱셈으로 적용하려면 어나 곱셈으로 적용하려면어떌 적용하려면 어떌?

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

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

-1 로 엑셀에 표기될 수 있게 말입니다.
Denne kommentar blev minimeret af moderatoren på webstedet
Bonjour, kommenter faire pour que chaque valeurs soient placées dans une colonne distincte en non séparées par un tiret ?
Denne kommentar blev minimeret af moderatoren på webstedet
Esse código me ajudou bastante e combinou um item de cada coluna entre elas. Mas também præciso combinar dois itens de cada coluna, som repetição. Alguém poderia me ajudar nisso?
Denne kommentar blev minimeret af moderatoren på webstedet
Esse código me ajudou bastante e combinou um item de cada coluna entre elas. Mas também præciso combinar dois itens de cada coluna, som repetição. Alguém poderia me ajudar nisso?
Der er endnu ingen kommentarer her
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL