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

Jak wygenerować wszystkie kombinacje 3 lub wielu kolumn w programie Excel?

Przypuśćmy, że mam 3 kolumny danych, teraz chcę wygenerować lub wyświetlić wszystkie kombinacje danych w tych 3 kolumnach, jak pokazano poniżej. Czy masz jakieś dobre metody rozwiązania tego zadania w programie Excel?

Wygeneruj wszystkie kombinacje na podstawie 3 kolumn danych przy użyciu formuły

Generuj wszystkie kombinacje na podstawie 3 lub wielu kolumn danych przy użyciu kodu VBA

Generuj wszystkie kombinacje na podstawie 3 lub wielu kolumn danych, korzystając z niesamowitej funkcji


Wygeneruj wszystkie kombinacje na podstawie 3 kolumn danych przy użyciu formuły

Poniższa długa formuła może pomóc w wyszczególnieniu wszystkich kombinacji 3 kolumn, wykonaj następujące czynności:

1. Kliknij komórkę, w której chcesz wyprowadzić wynik, a następnie skopiuj i wklej do niej poniższą formułę:

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

Uwagi: W tym wzorze: A2: A4, B2: B6, C2: C5 to zakresy danych, których chcesz użyć.

2. Następnie przeciągnij uchwyt wypełniania w dół do komórek, aż zostaną wyświetlone puste komórki, co oznacza, że ​​wszystkie kombinacje 3 kolumn zostały wymienione, patrz zrzut ekranu:


Generuj wszystkie kombinacje na podstawie 3 lub wielu kolumn danych przy użyciu kodu VBA

Powyższa długa formuła jest nieco trudna w użyciu, jeśli istnieje wiele kolumn, których trzeba użyć, będzie to kłopotliwe przy modyfikowaniu. Tutaj przedstawię kod VBA, aby szybko sobie z tym poradzić.

1. Przytrzymaj ALT + F11 klawisze, aby otworzyć Microsoft Visual Basic for Applications okno.

2, Kliknij wstawka > Modułi wklej następujący kod w oknie modułu.

Kod VBA: Generuj wszystkie kombinacje 3 lub wielu kolumn

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

Uwagi: W powyższym kodzie, A2: A4, B2: B6, C2: C5 to zakres danych, którego chcesz użyć, E2 to komórka wyjściowa, w której chcesz zlokalizować wyniki. Jeśli chcesz uzyskać wszystkie kombinacje większej liczby kolumn, zmień i dodaj inne parametry do kodu zgodnie z potrzebami.

3. Następnie naciśnij F5 klucz do uruchomienia tego kodu, a wszystkie kombinacje 3 lub wielu kolumn zostaną wygenerowane jednocześnie, patrz zrzut ekranu:


Generuj wszystkie kombinacje na podstawie 3 lub wielu kolumn danych, korzystając z niesamowitej funkcji

Jeśli masz Kutools dla programu Excelze swoim potężnym Wyświetl wszystkie kombinacje możesz szybko i łatwo wyświetlić listę wszystkich kombinacji wielu kolumn.

Wskazówki:Aby to zastosować Wyświetl wszystkie kombinacje Po pierwsze, należy pobrać plik Kutools dla programu Excel, a następnie szybko i łatwo zastosuj tę funkcję.

Po zainstalowaniu Kutools dla programu Excel, zrób tak:

1, Kliknij Kutools > wstawka > Wyświetl wszystkie kombinacjezobacz zrzut ekranu:

2, w Wyświetl wszystkie kombinacje W oknie dialogowym określ kolumny, dane i separatory, aby wyświetlić kombinacje, jak pokazano na poniższym zrzucie ekranu:

3. Po ustawieniu danych i separatora kliknij Ok przycisk, w następnym oknie zachęty wybierz komórkę, aby zlokalizować wynik, zobacz zrzut ekranu:

4. A następnie kliknij OK przycisk, wszystkie kombinacje zostały wygenerowane natychmiast, jak pokazano na zrzucie ekranu:

Kliknij, aby pobrać Kutools dla programu Excel i bezpłatną wersję próbną teraz!


  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny i przechowywanie danych; Podziel zawartość komórek; Połącz zduplikowane wiersze i sumę / średnią... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Ulubione i szybkie wstawianie formuł, Zakresy, wykresy i obrazy; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Grupowanie tabel przestawnych według numer tygodnia, dzień tygodnia i więcej ... Pokaż odblokowane, zablokowane komórki w różnych kolorach; Podświetl komórki, które mają formułę / nazwę...
karta kte 201905
  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (17)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Aby wygenerować dowolną kombinację losową, której możemy użyć
=INDEX($A$2:$A$4,RANDBETWEEN(1,3))&"-"&INDEX($B$2:$B$6,RANDBETWEEN(1,5))&"-"&INDEX($C$2:$C$5,RANDBETWEEN(1,4))
Ten komentarz został zminimalizowany przez moderatora na stronie
Bardzo dziękuję za udostępnienie tego posta. Wielkie dzięki dla @Balaji za jego formułę
Ten komentarz został zminimalizowany przez moderatora na stronie
NIE MOGĘ CI WYSTARCZAJĄCO PODZIĘKOWAĆ! OSZCZĘDZIŁEM MNIE TYLE CZASU!
Ten komentarz został zminimalizowany przez moderatora na stronie
Jak zrobić poniższy wzór dla 5 kolumn? Próbuję rozgryźć, ale to daje błąd
=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),"")
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Nikhil, Aby uzyskać wszystkie kombinacje z 5 kolumn, poniższy kod VBA może ci pomóc, zmień odniesienia do komórek na swoje dane.
Lista podrzędnaWszystkichKombinacji()
„Aktualizuj do” Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5 jako zakres
Dim xRg jako zakres
Dim xStr jako ciąg
Dim xFN1, xFN2, xFN3, xFN4, xFN5 jako liczba całkowita
Wym. xSV1, xSV2, xSV3, xSV4, xSV5 jako ciąg
Ustaw xDRg1 = Range("A2:A7") 'Dane w pierwszej kolumnie
Ustaw xDRg2 = Range("B2:B7") 'Dane w drugiej kolumnie
Ustaw xDRg3 = Range("C2:C7") 'Dane w trzeciej kolumnie
Ustaw xDRg4 = Range("D2:D7") 'Dane w czwartej kolumnie
Ustaw xDRg5 = Range("E2:E7") 'Dane piątej kolumny
xStr = "-" 'Separator
Ustaw xRg = Zakres("H2") 'Komórka wyjściowa
Dla xFN1 = 1 do xDRg1.Count
xSV1 = xDRg1.Pozycja(xFN1).Tekst
Dla xFN2 = 1 do xDRg2.Count
xSV2 = xDRg2.Pozycja(xFN2).Tekst
Dla xFN3 = 1 do xDRg3.Count
xSV3 = xDRg3.Pozycja(xFN3).Tekst
Dla xFN4 = 1 do xDRg4.Count
xSV4 = xDRg4.Pozycja(xFN4).Tekst
Dla xFN5 = 1 do xDRg5.Count
xSV5 = xDRg5.Pozycja(xFN5).Tekst
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5
Ustaw xRg = xRg.Przesunięcie(1, 0)
Dalej
Dalej
Dalej
Dalej
Dalej
Koniec SubProszę spróbować, mam nadzieję, że może ci to pomóc!
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj skyyang, zmieniłem kod dla 7 rolek, ale widząc, że Excel ma tylko 1,048,576 1 0 wierszy, kod VBA nie może podać wszystkich kombinacji. Masz pomysł, jak mogę kontynuować w innych kolumnach? Myślę, że ten kod - Set xRg = xRg.Offset(XNUMX, XNUMX) trzeba zmienić
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj skyyang, zmieniłem kod dla 7 rolek, ale widząc, że Excel ma tylko 1,048,576 XNUMX XNUMX wierszy, kod VBA nie może podać wszystkich kombinacji.
Masz pomysł, jak mogę kontynuować na innych kolumnach?
Myślę, że ten kod - Set xRg = xRg.Offset(1, 0)
trzeba zmienić 
Ten komentarz został zminimalizowany przez moderatora na stronie
=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),"")
Ten komentarz został zminimalizowany przez moderatora na stronie
potrzebuję tej formuły dla 4 kolumn
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję bardzo. Dokładnie to, czego potrzebuję :-)))
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję bardzo za ten kod. Zmodyfikowałem kod na ilość potrzebnej mi kolumny (25). Dzięki,
Ten komentarz został zminimalizowany przez moderatora na stronie
Kod HiIn VBA Użyłem czterech kolumn, a zakres kolumn to E2:E75, B2:B267, C2:C195 i D2:D267. Zakres wyjściowy to J2. W tym przypadku wynik wyprowadzenia przekroczył limit wierszy. Proszę o pomoc w rozwiązaniu błędu
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam Więc to jest kod dla 9 kolumn :')
Lista podrzędnaWszystkichKombinacji()
„Aktualizuj do” Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5, xDRg6, xDRg7, xDRg8, xDRg9 jako zakres
Dim xRg jako zakres
Dim xStr jako ciąg
Dim xFN1, xFN2, xFN3, xFN4, xFN5, xFN6, xFN7, xFN8, xFN9 jako liczba całkowita
Dim xSV1, xSV2, xSV3, xSV4, xSV5, xSV6, xSV7, xSV8, xSV9 jako ciąg
Ustaw xDRg1 = Range("A2:A3") 'Dane w pierwszej kolumnie
Ustaw xDRg2 = Range("B2:B3") 'Dane w drugiej kolumnie
Ustaw xDRg3 = Range("C2:C10") 'Dane w trzeciej kolumnie
Ustaw xDRg4 = Range("D2:D2") 'Dane w trzeciej kolumnie
Ustaw xDRg5 = Range("E2:E3") 'Dane w trzeciej kolumnie
Ustaw xDRg6 = Range("F2:F3") 'Dane w trzeciej kolumnie
Ustaw xDRg7 = Range("G2:G4") 'Dane w trzeciej kolumnie
Ustaw xDRg8 = Range("H2:H3") 'Dane w trzeciej kolumnie
Ustaw xDRg9 = Range("I2:I3") 'Dane w trzeciej kolumnie
xStr = "-" 'Separator
Ustaw xRg = Zakres("K2") 'Komórka wyjściowa
Dla xFN1 = 1 do xDRg1.Count
xSV1 = xDRg1.Pozycja(xFN1).Tekst
Dla xFN2 = 1 do xDRg2.Count
xSV2 = xDRg2.Pozycja(xFN2).Tekst
Dla xFN3 = 1 do xDRg3.Count
xSV3 = xDRg3.Pozycja(xFN3).Tekst
Dla xFN4 = 1 do xDRg4.Count
xSV4 = xDRg4.Pozycja(xFN4).Tekst
Dla xFN5 = 1 do xDRg5.Count
xSV5 = xDRg5.Pozycja(xFN5).Tekst
Dla xFN6 = 1 do xDRg6.Count
xSV6 = xDRg6.Pozycja(xFN6).Tekst
Dla xFN7 = 1 do xDRg7.Count
xSV7 = xDRg7.Pozycja(xFN7).Tekst
Dla xFN8 = 1 do xDRg8.Count
xSV8 = xDRg8.Pozycja(xFN8).Tekst
Dla xFN9 = 1 do xDRg9.Count
xSV9 = xDRg9.Pozycja(xFN9).Tekst
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5 & xStr & xSV6 & xStr & xSV7 & xStr & xSV8 & xStr & xSV9
Ustaw xRg = xRg.Przesunięcie(1, 0)
Dalej
Dalej
Dalej
Dalej
Dalej
Dalej
Dalej
Dalej
Dalej
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
"단어-단어-단어" .
그런데 "단어" 아니라 숫자일 경우,
즉 ?

'Najlepsza wersja VBA: 3 kody do wyboru'.

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

-1 .
Ten komentarz został zminimalizowany przez moderatora na stronie
Bonjour, comment faire pour que chaque valeurs soient placeées dans une colonne differe en non séparées par un tiret ?
Ten komentarz został zminimalizowany przez moderatora na stronie
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?
Ten komentarz został zminimalizowany przez moderatora na stronie
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?
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL