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

Hur genererar jag alla kombinationer av 3 eller flera kolumner i Excel?

Om jag antar att jag har 3 kolumner med data, nu vill jag generera eller lista alla kombinationer av data i dessa 3 kolumner som visas nedan. Har du några bra metoder för att lösa denna uppgift i Excel?

Generera alla kombinationer baserat på tre datakolumner med hjälp av en formel

Generera alla kombinationer baserade på tre eller flera kolumner med data med hjälp av VBA-kod

Generera alla kombinationer baserat på tre eller flera kolumner med data med hjälp av en fantastisk funktion


Generera alla kombinationer baserat på tre datakolumner med hjälp av en formel

Följande långa formel kan hjälpa till att lista alla kombinationer av 3 kolumner, gör så här:

1. Klicka på en cell där resultatet ska skickas och kopiera och klistra sedan in formeln nedan:

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

Anmärkningar: I denna formel: A2: A4, B2: B6, C2: C5 är de dataområden som du vill använda.

2. Dra sedan fyllningshandtaget ner till cellerna tills tomma celler visas, det vill säga alla kombinationer av de tre kolumnerna har listats, se skärmdump:


Generera alla kombinationer baserade på tre eller flera kolumner med data med hjälp av VBA-kod

Ovanstående långa formel är något svår att använda, om det finns flera kolumner som data behöver användas, kommer det att vara besvärligt att ändra. Här kommer jag att införa en VBA-kod för att hantera den snabbt.

1. Håll ner ALT + F11 nycklar för att öppna Microsoft Visual Basic för applikationer fönster.

2. Klicka Insert > Modulernaoch klistra in följande kod i modulfönstret.

VBA-kod: Generera alla kombinationer av tre eller flera kolumner

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

Anmärkningar: I ovanstående kod, A2: A4, B2: B6, C2: C5 är det dataområde som du vill använda, E2 är den utdatacell som du vill hitta resultaten. Om du vill få alla kombinationer av fler kolumner, ändra och lägg till andra parametrar i koden efter behov.

3. Tryck sedan på F5 nyckel för att köra den här koden, och alla kombinationer av 3 eller flera kolumner genereras samtidigt, se skärmdump:


Generera alla kombinationer baserat på tre eller flera kolumner med data med hjälp av en fantastisk funktion

Om du har Kutools för Excel, med sin kraftfulla Lista alla kombinationer kan du snabbt och enkelt lista alla kombinationer av flera kolumner.

tips:Att tillämpa detta Lista alla kombinationer funktionen, först bör du ladda ner Kutools för Excel, och använd sedan funktionen snabbt och enkelt.

När du har installerat Kutools för Excel, gör så här:

1. Klicka Kutools > Insert > Lista alla kombinationer, se skärmdump:

2. I Lista alla kombinationer dialogrutan, ange kolumndata och separatorer för att lista kombinationerna enligt följande skärmdump:

3. När du har ställt in data och separator klickar du sedan på Ok knappen, i nästa rutan, välj en cell för att hitta resultatet, se skärmdump:

4. Och klicka sedan på OK -knappen, alla kombinationer har genererats omedelbart enligt nedanstående skärmdump:

Klicka för att ladda ner Kutools för Excel och gratis testversion nu!


  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner och förvaring av data; Delat cellinnehåll; Kombinera duplicerade rader och summa / genomsnitt... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Favorit och sätt snabbt in formler, Intervall, diagram och bilder; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Gruppering av pivottabell efter veckonummer, veckodagen och mer ... Visa olåsta, låsta celler av olika färger; Markera celler som har formel / namn...
kte-flik 201905
  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (17)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
För att generera valfri slumpmässig kombination kan vi använda
=INDEX($A$2:$A$4,RANDBETWEEN(1,3))&"-"&INDEX($B$2:$B$6,RANDBETWEEN(1,5))&"-"&INDEX($C$2:$C$5,RANDBETWEEN(1,4))
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket för att du delar detta inlägg. Tack så mycket till @Balaji för hans/hennes formel
Denna kommentar minimerades av moderatoren på webbplatsen
JAG KAN INTE TACKA DIG NOG! SPARADE MIG SÅ MYCKET TID!
Denna kommentar minimerades av moderatoren på webbplatsen
Hur gör man nedanstående formel för 5 kolumner? Försöker lista ut men det ger fel
=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),"")
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Nikhil, För att få alla kombinationer från 5 kolumner, kan nedanstående VBA-kod hjälpa dig, vänligen ändra cellreferenserna till dina data.
Sub ListAllCombinations()
'Uppdatering av Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5 Som intervall
Dim xRg As Range
Dim xStr As String
Dim xFN1, xFN2, xFN3, xFN4, xFN5 Som heltal
Dim xSV1, xSV2, xSV3, xSV4, xSV5 Som sträng
Set xDRg1 = Range("A2:A7") 'Första kolumndata
Set xDRg2 = Range("B2:B7") 'Andra kolumndata
Set xDRg3 = Range("C2:C7") 'Tredje kolumndata
Set xDRg4 = Range("D2:D7") 'Fjärde kolumndata
Set xDRg5 = Range("E2:E7") 'Femte kolumndata
xStr = "-" 'Separator
Set xRg = Range("H2") 'Utdatacell
För xFN1 = 1 Till xDRg1.Count
xSV1 = xDRg1.Item(xFN1).Text
För xFN2 = 1 Till xDRg2.Count
xSV2 = xDRg2.Item(xFN2).Text
För xFN3 = 1 Till xDRg3.Count
xSV3 = xDRg3.Item(xFN3).Text
För xFN4 = 1 Till xDRg4.Count
xSV4 = xDRg4.Item(xFN4).Text
För xFN5 = 1 Till xDRg5.Count
xSV5 = xDRg5.Item(xFN5).Text
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5
Ställ in xRg = xRg.Offset(1, 0)
Nästa
Nästa
Nästa
Nästa
Nästa
Avsluta SubSnälla försök, hoppas det kan hjälpa dig!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej skyyang, jag ändrade koden för 7 rullar, men eftersom Excel bara har 1,048,576 1 0 rader kan VBA-koden inte ge alla kombinationer. Har du en idé om hur jag kan fortsätta på andra kolumner? Jag tror att den här koden - Set xRg = xRg.Offset(XNUMX, XNUMX) behövde ändras
Denna kommentar minimerades av moderatoren på webbplatsen
Hej skyyang, jag ändrade koden för 7 rullar, men eftersom Excel bara har 1,048,576 XNUMX XNUMX rader kan VBA-koden inte ge alla kombinationer.
Har du en idé om hur jag kan fortsätta på andra kolumner?
Jag tror att den här koden - Set xRg = xRg.Offset(1, 0)
behövde förändras 
Denna kommentar minimerades av moderatoren på webbplatsen
=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),"")
Denna kommentar minimerades av moderatoren på webbplatsen
Jag behöver den här formeln för 4 kolumner
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket. Precis vad jag behöver :-)))
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket för den här koden. Jag har ändrat koden för mängden kolumn jag behöver (25). Tack,
Denna kommentar minimerades av moderatoren på webbplatsen
HiIn VBA-kod använde jag fyra kolumner och kolumnintervallet är E2:E75, B2:B267, C2:C195 & D2:D267. Utmatningsområdet är J2. I det här fallet överskred utgångsresultatet radgränsen. Hjälp till att lösa felet
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Så detta är en kod för 9 kolumner :')
Sub ListAllCombinations()
'Uppdatering av Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5, xDRg6, xDRg7, xDRg8, xDRg9 Som intervall
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 sträng
Set xDRg1 = Range("A2:A3") 'Första kolumndata
Set xDRg2 = Range("B2:B3") 'Andra kolumndata
Set xDRg3 = Range("C2:C10") 'Tredje kolumndata
Set xDRg4 = Range("D2:D2") 'Tredje kolumndata
Set xDRg5 = Range("E2:E3") 'Tredje kolumndata
Set xDRg6 = Range("F2:F3") 'Tredje kolumndata
Set xDRg7 = Range("G2:G4") 'Tredje kolumndata
Set xDRg8 = Range("H2:H3") 'Tredje kolumndata
Set xDRg9 = Range("I2:I3") 'Tredje kolumndata
xStr = "-" 'Separator
Set xRg = Range("K2") 'Utdatacell
För xFN1 = 1 Till xDRg1.Count
xSV1 = xDRg1.Item(xFN1).Text
För xFN2 = 1 Till xDRg2.Count
xSV2 = xDRg2.Item(xFN2).Text
För xFN3 = 1 Till xDRg3.Count
xSV3 = xDRg3.Item(xFN3).Text
För xFN4 = 1 Till xDRg4.Count
xSV4 = xDRg4.Item(xFN4).Text
För xFN5 = 1 Till xDRg5.Count
xSV5 = xDRg5.Item(xFN5).Text
För xFN6 = 1 Till xDRg6.Count
xSV6 = xDRg6.Item(xFN6).Text
För xFN7 = 1 Till xDRg7.Count
xSV7 = xDRg7.Item(xFN7).Text
För xFN8 = 1 Till xDRg8.Count
xSV8 = xDRg8.Item(xFN8).Text
För xFN9 = 1 Till 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
Ställ in xRg = xRg.Offset(1, 0)
Nästa
Nästa
Nästa
Nästa
Nästa
Nästa
Nästa
Nästa
Nästa
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
조합의 나열을 "단어-단어-단어" 순으로 나열하는 법은 이해했습니다.
그런데 "단어"가 아니라 숫자일 경우,
즉 숫자의 조합을 단순 나열이 아닌 덧셈이나 곱셈으로 적용하렔면어떌 적용하렔면 어떌

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

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

-1 로 엑셀에 표기될 수 있게 말입니다.
Denna kommentar minimerades av moderatoren på webbplatsen
Bonjour, kommentera faire pour que chaque valeurs soient placées dans une colonne distincte en non séparées par un tiret ?
Denna kommentar minimerades av moderatoren på webbplatsen
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?
Denna kommentar minimerades av moderatoren på webbplatsen
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?
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL