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

Як згенерувати всі комбінації з 3 або декількох стовпців у Excel?

Припустимо, у мене є 3 стовпці даних, тепер я хочу сформувати або перерахувати всі комбінації даних у цих 3 стовпцях, як показано нижче. Чи є у вас якісь методи вирішення цього завдання в Excel?

Створіть усі комбінації на основі 3 стовпців даних, використовуючи формулу

Створюйте всі комбінації на основі 3 або декількох стовпців даних за допомогою коду VBA

Створюйте всі комбінації на основі 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 стовпців були перераховані, див. Знімок екрана:


Створюйте всі комбінації на основі 3 або декількох стовпців даних за допомогою коду VBA

Вищезазначену довгу формулу дещо складно використовувати, якщо існує необхідність використання кількох стовпців, її буде складно змінити. Тут я представив код VBA, щоб швидко з ним впоратися.

1. Утримуйте клавішу ALT + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.

2. Клацання Insert > Модуліта вставте наступний код у вікно модуля.

Код 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 для Excel, з його потужним Перелічіть усі комбінації Ви можете швидко та легко перерахувати всі комбінації декількох стовпців.

чайові:Щоб застосувати це Перелічіть усі комбінації По-перше, вам слід завантажити Kutools для Excel, а потім швидко та легко застосувати функцію.

після установки Kutools для Excel, будь ласка, зробіть так:

1. Клацання Кутулс > Insert > Перелічіть усі комбінації, див. скріншот:

2, в Перелічіть усі комбінації у діалоговому вікні вкажіть дані стовпців та роздільники для переліку комбінацій, як показано на наступному знімку екрана:

3. Після встановлення даних та розділювача натисніть кнопку Ok , у наступному вікні запиту виберіть клітинку, щоб знайти результат, див. знімок екрана:

4. А потім натисніть OK кнопки, всі комбінації були згенеровані відразу, як показано нижче:

Натисніть, щоб завантажити Kutools для Excel та безкоштовну пробну версію зараз!


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці та Ведення даних; Вміст розділених комірок; Поєднуйте повторювані рядки та суму / середнє... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Улюблені та швидко вставлені формули, Діапазони, діаграми та зображення; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Групування зведеної таблиці за номер тижня, день тижня та багато іншого ... Показати розблоковані, заблоковані клітини за різними кольорами; Виділіть клітини, які мають формулу / назву...
вкладка kte 201905
  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (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, будь ласка, змініть посилання на клітинки до ваших даних.
Підсписок Усі комбінації()
'Оновлення Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5 як діапазон
Dim xRg As Range
Dim xStr як рядок
Розмір xFN1, xFN2, xFN3, xFN4, xFN5 як ціле число
Розмір xSV1, xSV2, xSV3, xSV4, xSV5 як рядок
Встановіть xDRg1 = Range("A2:A7") 'Дані першого стовпця
Встановіть xDRg2 = Range("B2:B7") 'Дані другого стовпця
Встановіть xDRg3 = Range("C2:C7") 'Дані третього стовпця
Встановіть xDRg4 = Range("D2:D7") 'Дані четвертого стовпця
Встановіть xDRg5 = Range("E2:E7") 'Дані п'ятого стовпця
xStr = "-" 'Роздільник
Встановіть xRg = Range("H2") 'Вихідна комірка
Для xFN1 = 1 До xDRg1.Count
xSV1 = xDRg1.Елемент(xFN1).Текст
Для xFN2 = 1 До xDRg2.Count
xSV2 = xDRg2.Елемент(xFN2).Текст
Для xFN3 = 1 До xDRg3.Count
xSV3 = xDRg3.Елемент(xFN3).Текст
Для xFN4 = 1 До xDRg4.Count
xSV4 = xDRg4.Елемент(xFN4).Текст
Для xFN5 = 1 До xDRg5.Count
xSV5 = xDRg5.Елемент(xFN5).Текст
xRg.Value = xSV1 & xStr & xSV2 & xStr & xSV3 & xStr & xSV4 & xStr & xSV5
Встановити xRg = xRg.Offset(1, 0)
Далі
Далі
Далі
Далі
Далі
End Sub. Будь ласка, спробуйте, сподіваюся, це допоможе вам!
Цей коментар був мінімізований модератором на сайті
Привіт, skyyang, я змінив код на 7 рулонів, але, бачачи, що Excel має лише 1,048,576 1 0 рядків, код VBA не може дати всі комбінації. У вас є уявлення, як я можу продовжити роботу з іншими стовпцями? Я думаю, що цей код - Set xRg = xRg.Offset(XNUMX, XNUMX) потрібно змінити
Цей коментар був мінімізований модератором на сайті
Привіт, skyyang, я змінив код на 7 рулонів, але, бачачи, що Excel має лише 1,048,576 XNUMX XNUMX рядків, код VBA не може дати всі комбінації.
У вас є ідея, як я можу продовжити на інших колонках?
Я думаю, що цей код - Встановіть xRg = 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 я використовував чотири стовпці, а діапазон стовпців: E2:E75, B2:B267, C2:C195 і D2:D267. Вихідний діапазон – J2. У цьому випадку вихідний результат перевищив ліміт рядків. Будь ласка, допоможіть усунути помилку
Цей коментар був мінімізований модератором на сайті
Привіт. Отже, це код для 9 стовпців :)
Підсписок Усі комбінації()
'Оновлення Extendoffice
Dim xDRg1, xDRg2, xDRg3, xDRg4, xDRg5, xDRg6, xDRg7, xDRg8, xDRg9 як діапазон
Dim xRg As Range
Dim xStr як рядок
Розмір xFN1, xFN2, xFN3, xFN4, xFN5, xFN6, xFN7, xFN8, xFN9 як ціле число
Dim xSV1, xSV2, xSV3, xSV4, xSV5, xSV6, xSV7, xSV8, xSV9 як рядок
Встановіть xDRg1 = Range("A2:A3") 'Дані першого стовпця
Встановіть xDRg2 = Range("B2:B3") 'Дані другого стовпця
Встановіть xDRg3 = Range("C2:C10") 'Дані третього стовпця
Встановіть xDRg4 = Range("D2:D2") 'Дані третього стовпця
Встановіть xDRg5 = Range("E2:E3") 'Дані третього стовпця
Встановіть xDRg6 = Range("F2:F3") 'Дані третього стовпця
Встановіть xDRg7 = Range("G2:G4") 'Дані третього стовпця
Встановіть xDRg8 = Range("H2:H3") 'Дані третього стовпця
Встановіть xDRg9 = Range("I2:I3") 'Дані третього стовпця
xStr = "-" 'Роздільник
Встановіть xRg = Range("K2") 'Вихідна комірка
Для xFN1 = 1 До xDRg1.Count
xSV1 = xDRg1.Елемент(xFN1).Текст
Для xFN2 = 1 До xDRg2.Count
xSV2 = xDRg2.Елемент(xFN2).Текст
Для xFN3 = 1 До xDRg3.Count
xSV3 = xDRg3.Елемент(xFN3).Текст
Для xFN4 = 1 До xDRg4.Count
xSV4 = xDRg4.Елемент(xFN4).Текст
Для xFN5 = 1 До xDRg5.Count
xSV5 = xDRg5.Елемент(xFN5).Текст
Для xFN6 = 1 До xDRg6.Count
xSV6 = xDRg6.Елемент(xFN6).Текст
Для xFN7 = 1 До xDRg7.Count
xSV7 = xDRg7.Елемент(xFN7).Текст
Для xFN8 = 1 До xDRg8.Count
xSV8 = xDRg8.Елемент(xFN8).Текст
Для xFN9 = 1 До xDRg9.Count
xSV9 = xDRg9.Елемент(xFN9).Текст
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, comment faire pour que chaque valeurs soient placees dans une colonne differente en non séparées par un tiret ?
Цей коментар був мінімізований модератором на сайті
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?
Цей коментар був мінімізований модератором на сайті
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?
There are no comments posted here yet
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL