Подсчитаем в MS EXCEL количество сочетаний из n элементов по k. С помощью формул выведем на лист все варианты сочетаний (английский перевод термина: Combinations without repetition).
Сочетаниями из n различных элементов по k элементов называются комбинации, которые отличаются хотя бы одним элементом. Например, ниже перечислены ВСЕ 3-х элементные сочетания, взятые из множества, состоящего из 5 элементов {1; 2; 3; 4; 5}:
(1; 2; 3); (1; 2; 4); (1; 2; 5); (1; 3; 4); (1; 3; 5); (1; 4; 5); (2; 3; 4); (2; 3; 5); (2; 4; 5); (3; 4; 5)
Примечание
: Это статья о подсчете количества сочетаний с использованием MS EXCEL. Теоретические основы советуем прочитать в специализированном учебнике. Изучать сочетания по этой статье — плохая идея.
Отличие Сочетаний от Размещений
В отличие от
Размещений
следующие 3-х элементные комбинации (1; 2; 3); (1; 3; 2); (2; 1; 3); (2; 1; 3); (3; 2; 1); (3; 1; 2) считаются одинаковыми, и в набор
Сочетаний
включается только одна из этих комбинаций. Очевидно, что для тех же n и k число
Сочетаний
всегда меньше чем число
Размещений
(так как при размещениях порядок важен, а для сочетаний — нет), причем в k! раз.
Подсчет количества Сочетаний
Число всех
Сочетаний
из n элементов по k можно вычислить по формуле:
Например, количество 4-х элементных комбинаций из 6 чисел {1; 2; 3; 4; 5; 6} равно 15=6!/(4!(6-4)!)
Примечание
: Для
Сочетаний
из n элементов по k также используется и другая запись:
В MS EXCEL для подсчета количества комбинаций без повторов существует специальная функция ЧИСЛКОМБ() , английское название функции — COMBIN(). Для предыдущего примера формула =ЧИСЛКОМБ(6;4) , разумеется, также вернет 15. Альтернативная формула для подсчета сочетаний =ФАКТР(6)/ФАКТР(6-4)/ФАКТР(4) .
Очевидно, что k меньше или равно n, т.к. нельзя выбрать из множества элементов n больше элементов, чем в нем содержится (предполагается, что элементы после выбора обратно не возвращаются). При k=n количество сочетаний всегда равно 1.
Примечание
: О Сочетаниях с повторениями (с возвращением элементов) можно прочитать в статье
Сочетания с повторениями: Комбинаторика в MS EXCEL
Вывод всех комбинаций Сочетаний
В файле примера созданы формулы для вывода всех Сочетаний для заданных n и k.
Задавая с помощью
элементов управления Счетчик
количество элементов множества (n) и количество элементов, которое мы из него выбираем (k), с помощью формул можно вывести все Сочетания.
В файле примера не забывайте увеличивать количество строк с формулами, чтобы поместились все ваши комбинации. Для этого выделите последние ячейки с формулами (сочетание №330) и скопируйте их вниз на нужно количество строк. При увеличении строк с формулами размер файла быстро растет, а скорости пересчета листа падает. Если строк 4 тысячи, то размер файла составляет около 2 Мб.
Задача
Автовоз может перевозить по 4 легковые машины. Необходимо перевезти 7 разных машин (LADA Granta, Hyundai Solaris, KIA Rio, Renault Duster, Lada Kalina, Volkswagen Polo, Lada Largus). Сколькими различными способами можно заполнить первый автовоз? Конкретное место машины в автовозе не важно.
Нам нужно определить число
Сочетаний
7 машин на 4-х местах автовоза. Т.е. n=7, а k=4. Оказывается, что таких вариантов =ЧИСЛКОМБ(7;4) равно 35.
Воспользуемся файлом примера (ссылка внизу статьи) , чтобы наглядно убедиться, что мы решили задачу правильно.
Произвольным образом сопоставим маркам машин числовые значения и сделаем сокращения названий марок: LADA Granta (LG=1), Hyundai Solaris (HS=2), …
Выставив в ячейках
В5
и
В6
значения 7 и 4 соответственно, определим все варианты размещений машин в автовозе (см. столбцы AJ:AM).
Примечание
: О Перестановках можно прочитать в статье
Перестановки без повторений: Комбинаторика в MS EXCEL
, а о Размещениях в статье
Размещения без повторений: Комбинаторика в MS EXCEL
.
Скажем, у меня есть следующие два столбца данных, и теперь я хочу сгенерировать список всех возможных комбинаций на основе двух списков значений, как показано на скриншоте слева. Возможно, вы можете перечислить все комбинации одну за другой, если есть несколько значений, но, если есть несколько столбцов с несколькими значениями, которые необходимо перечислить, возможные комбинации, вот несколько быстрых приемов, которые могут помочь вам справиться с этой проблемой в Excel .
Перечислите или сгенерируйте все возможные комбинации из двух списков с формулой
Перечислите или сгенерируйте все возможные комбинации из трех или более списков с кодом VBA
Составьте список или сгенерируйте все возможные комбинации из нескольких списков с помощью мощной функции
Перечислите или сгенерируйте все возможные комбинации из двух списков с формулой
Следующая длинная формула поможет вам быстро составить список всех возможных комбинаций значений двух списков. Пожалуйста, сделайте следующее:
1. Введите или скопируйте приведенную ниже формулу в пустую ячейку, в этом случае я введу ее в ячейку D2, а затем нажмите Enter ключ для получения результата, см. снимок экрана:
=IF(ROW()-ROW($D$2)+1>COUNTA($A$2:$A$5)*COUNTA($B$2:$B$4),»»,INDEX($A$2:$A$5,INT((ROW()-ROW($D$2))/COUNTA($B$2:$B$4)+1))&»-«&INDEX($B$2:$B$4,MOD(ROW()-ROW($D$2),COUNTA($B$2:$B$4))+1))
Внимание: В приведенной выше формуле $ A $ 2: $ A $ 5 — это диапазон значений первого столбца, а 2 млрд долларов: 4 млрд долларов — это диапазон значений второго списка, в котором вы хотите перечислить все их возможные комбинации, $ D $ 2 это ячейка, в которую вы поместили формулу, вы можете изменить ссылки на ячейки по своему усмотрению.
2. Затем выберите ячейку D2 и перетащите маркер заполнения вниз к ячейкам, пока не получите пустые ячейки, и все возможные комбинации будут перечислены на основе значений двух списков. Смотрите скриншот:
Перечислите или сгенерируйте все возможные комбинации из трех или более списков с кодом VBA
Возможно, вам будет сложно применить приведенную выше формулу, если есть данные из нескольких столбцов, ее будет сложно изменить. Здесь я представлю код VBA, чтобы быстро с этим справиться.
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код 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:A5") 'First column data
Set xDRg2 = Range("B2:B4") 'Second column data
Set xDRg3 = Range("C2:C4") '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: A5, B2: B4, C2: C4 диапазон данных, который вы хотите использовать, E2 — это выходная ячейка, в которой вы хотите найти результаты. Если вы хотите получить все комбинации из большего количества столбцов, измените и добавьте другие параметры в код по мере необходимости.
3. Затем нажмите F5 ключ для запуска этого кода, и все комбинации из 3 столбцов будут сгенерированы сразу, см. снимок экрана:
Составьте список или сгенерируйте все возможные комбинации из нескольких списков с помощью мощной функции
Если имеется несколько значений списков, необходимо указать возможные комбинации, возможно, вам будет сложно изменить код. Здесь я могу порекомендовать мощный инструмент — Kutools for Excel, он содержит удобную функцию Список всех комбинаций который может быстро перечислить все возможные комбинации на основе заданных списков данных.
Tips:Чтобы применить это Список всех комбинаций функция, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Нажмите Кутулс > Вставить > Список всех комбинаций, см. снимок экрана:
2. В Список всех комбинаций В диалоговом окне выполните операции, как показано в демонстрации ниже:
3. Затем все указанные значения и разделители были перечислены в диалоговом окне, см. Снимок экрана:
4.А затем нажмите Ok Кнопка, и появится окно подсказки, напоминающее вам о выборе ячейки для вывода результата, см. снимок экрана:
5. Нажмите OK, все возможные комбинации на основе данных списков были сгенерированы на листе, как показано на следующем снимке экрана:
Нажмите, чтобы скачать Kutools for Excel Сейчас !
Больше относительных статей:
- Создать все комбинации из 3 или нескольких столбцов
- Предположим, у меня есть 3 столбца данных, теперь я хочу сгенерировать или перечислить все комбинации данных в этих 3 столбцах, как показано ниже. Есть ли у вас какие-нибудь хорошие методы решения этой задачи в Excel?
- Найдите все комбинации, равные заданной сумме
- Например, у меня есть следующий список чисел, и теперь я хочу знать, какая комбинация чисел в списке дает в сумме 480, на следующем скриншоте вы можете увидеть, что есть пять групп возможных комбинаций, которые в сумме равны до 480, например, 300 + 60 + 120, 300 + 60 + 40 + 80 и т. д. В этой статье я расскажу о некоторых методах определения суммирования ячеек до определенного значения в Excel.
- Сгенерировать или перечислить все возможные перестановки
- Например, у меня есть три символа XYZ, теперь я хочу перечислить все возможные перестановки на основе этих трех символов, чтобы получить шесть разных результатов, например: XYZ, XZY, YXZ, YZX, ZXY и ZYX. Как в Excel быстро сгенерировать или составить список всех перестановок на основе разного количества символов?
- Составьте список всех возможных комбинаций из 4 цифр
- В некоторых случаях нам может потребоваться сгенерировать список всех возможных 4-значных комбинаций чисел от 0 до 9, что означает создание списка 0000, 0001, 0002… 9999. Чтобы быстро решить задачу списка в Excel, я предлагаю вам несколько уловок.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Коллеги, считает не совсем корректно, вернее, считает то нормально, но только для __идеальных__ входных данных, как в первоначальном примере.
К сожалению, я не учел некоторые детали в первоначальном ТЗ.
Попробовал поковырять формулы Владимира и МСН — либо ошибки, либо неверная выдача. Своих знаний никак пока не хватает.
Ошибки отработки формул:
1. входные данные должны быть разделены по отдельным колонкам, как в моем примере, (а не как вы предложили, в одной)— т.к. в качестве входных данных также выступают и фразы. Поэтому, даже если я объединяю свои входные данные в одну колонку — то сейчас формула не корректно отработает, т.к. сейчас в вашем варианте решения разделителем выступает пробел.
2. Если на входе число колонок (слов) отличается от трех в любую сторону, то тоже формула не работает (причина, думаю, та же, разделитель — пробел)
3. Первая колонка (фраза или слово) — всегда на первом месте, тогда как мне надо получить все варианты (любая фраза из любой колонки на первом месте, на втором месте, на любом месте)
Уточненное ТЗ
Входные данные
1. На входе может быть 2-10 колонок (или n колонок для общего случая)
2. В каждой колонке содержится текстовая фраза
3. Каждая фраза состоит из 0-10 слов (или m слов для общего случая), во фразе могут быть цифры 0-9 и числа, знаки препинания .,!?, скобки (), кавычки «», дефисы -, слеш прямой и обратный /, двоеточие :, точка с запятой ;, и т.д. Словом, любые знаки препинания и пунктуации (любые символы с клавиатуры)
4. Колонка может содержать пустые ячейки
5. Число строк с фразами в каждой колонке различно
Выходные данные
1. Одна колонка — фразы, вторая колонка — длина строки.
2. Каждая фраза комбинируется с каждой другой фразой, каждая фраза должна побывать на 1, 2, 3, …, n месте.
3. На орфографическое и грамматическое несоответствие слов между собой не обращаем внимания. На итоговый порядок знаков препинания — тоже.
4. Итоговый список отсортирован по возрастанию длины строки.
Если решение можно формулой — лучше формулой, что бы я смог хоть как-то подразобраться. Или скрипт=)
Я прикрепил новый пример.
Сори, что написал и сюда, и на excelworld.
In certain circumstances, it may be necessary for us to make a list of all of the conceivable four-digit combinations of the numbers 0 to 9, which would require us to generate a list that includes the digits 0000, 0001, 0002, and 99999. For a speedy solution to the list problem in Excel. It is possible that we’ll need to produce random numbers in Excel at some point. Numerous tasks, including the simulation and description of complex occurrences, the selection of random samples from larger data sets, and the generation of data encryption keys can all be accomplished with the help of random numbers.
Within the scope of this articles, we will explore a variety of approaches to the creation of an Excel-based random number generator with four digits.
Generate four Digit Random Number using RANDBETWEEN Function
In Excel, the RANDBETWEEN function may be found in the Math and Trigonometry section of the function library. Excel’s RANDBETWEEN function is responsible for producing a random value that falls between two specified values. Whenever a spreadsheet is opened or modified, RANDBETWEEN will produce a nearly new one. Let’s use this function to produce some random integers with 4 digits.
Step 1
In an excel sheet, select one cell and add the following formula in it. In our case we have selected B1 and added the formula in it.
=RANDBETWEEN(1000,9999)
After adding the formula, press enter. You will see a random number between 1000 to 9999 has been produced.
See the below given image.
Step 2
To reflect in other cells, click on the ‘+’ sign appears on the lower right corner of the cell B1, which activates the autofill function and then drag down.
See the below given image.
Generate four Digit Random Number using TEXT Function
Excel’s TEXT function takes a number and returns it in the format specified by the user as text. You can include formatted numbers within the body of text by making use of the TEXT function.
Step 1
In an excel sheet, select one cell and add the following formula in it. In our case we have selected A1 and added the formula in it.
=TEXT(ROW(A1)-1,"0000")
After adding the formula, press enter. You will see a combination of 4 digit numbers has been produced.
See the below given image.
Step 2
After that, pull the autofill handle to the bottom until all the possible combinations of 4 digits are listed.
В некоторых случаях нам может потребоваться сгенерировать список всех возможных 4-значных комбинаций чисел от 0 до 9, что означает создание списка 0000, 0001, 0002… 9999. Чтобы быстро решить задачу со списком в Excel, я предлагаю вам несколько уловок.
Список всех возможных комбинаций из 4 цифр с формулой
Список всех возможных комбинаций из 4 цифр со списком всех комбинаций
Перечислите все возможные комбинации из 4 цифр с помощью Вставить порядковый номер
Содержание
- Список всех возможных комбинаций из 4 цифр с формулой
- Список всех возможных комбинаций из 4 цифр с помощью List All C Комбинации
- Список всех возможных комбинаций из 4 цифр
- Список всех возможных комбинаций из 4 цифр с вставкой порядкового номера
- Вставить все комбинации из 4 цифр
Список всех возможных комбинаций из 4 цифр с формулой
В Excel вы можете использовать приведенную ниже формулу для перечисления всех возможных 4-значных комбинаций чисел от 0 до 9.
Выберите пустую ячейку и введите эту формулу = ТЕКСТ (СТРОКА (A1) – 1, «0000») и нажмите клавишу Enter , затем перетащите дескриптор автозаполнения вниз, пока не появятся все комбинации из 4 цифр.
Список всех возможных комбинаций из 4 цифр с помощью List All C Комбинации
Перетаскивать формулу вниз, пока не будут перечислены все комбинации, утомительно. Однако, если у вас установлен Kutools for Excel , вы можете использовать его утилиту Список всех комбинаций , чтобы быстро перечислить все комбинации из 4 цифр.
Kutools for Excel , с более чем 300 удобными функциями, упрощает вашу работу. |
Бесплатная загрузка |
После установки Kutools for Excel, сделайте следующее: (Загрузите Kutools for Excel бесплатно прямо сейчас! )
1. Выберите ячейку A1, введите в нее 0, затем перейдите к следующей ячейке и введите в нее 1. Затем выберите A1 и A2 и перетащите дескриптор автозаполнения вниз, пока не появится цифра 9. См. Снимок экрана:
2. Затем вам нужно отформатировать столбец как Text (столбец поместит комбинации), щелкните пустой заголовок столбца, говорит Столбец F, а затем щелкните правой кнопкой мыши, чтобы выбрать Формат. Ячейки , выберите Текст на вкладке Число в диалоговом окне Форматировать ячейки и нажмите ОК . См. Снимок экрана:
3. Нажмите Kutools > Вставить > Список всех комбинаций . См. Снимок экрана:
4. Появится диалоговое окно Список всех комбинаций , и вам просто нужно выполнить следующие операции:
(1) Выберите Value в список Тип ;
(2) Щелкните , чтобы выбрать свой список номеров (вы также можете напрямую ввести числа, разделенные запятыми, в текстовое поле), и нажмите Добавить , чтобы добавить первый список в Список комбинаций ;
(3) Повторите шаг (2) три раза, чтобы добавить три других списка номеров в Список комбинаций .
5. Нажмите ОК . Теперь появляется диалоговое окно, напоминающее вам о выборе ячейки для отображения результата. Здесь вам нужно выбрать первую ячейку столбца, который вы форматируете как Text .
6. Нажмите ОК . Теперь перечислены все 4-значные комбинации цифр от 0 до 9.
Нажмите здесь, чтобы узнать больше о «Список всех комбинаций»
Список всех возможных комбинаций из 4 цифр
Список всех возможных комбинаций из 4 цифр с вставкой порядкового номера
В Kutools для Excel , вы также можете использовать Вставить порядковый номер для решения этой задачи.
После установки Kutools for Excel, пожалуйста, сделайте следующее: (Бесплатная загрузка Kutools for Excel прямо сейчас!)
1. Выделите большой диапазон ячеек (более 100000 ячеек) и нажмите Kutools > Вставить > Вставить порядковый номер . См. Снимок экрана:
2. Затем в диалоговом окне Вставить порядковый номер выполните следующие действия:
(1) Нажмите New , чтобы создать новую последовательность. См. Снимок экрана:
(2) Введите 0 в качестве Начальное число, 1 как приращение и 4 как №. цифр , установите флажок Конечный номер и введите 9999 в текстовое поле. См. Снимок экрана:
3. Нажмите Добавить , чтобы добавить это правило последовательности, а затем нажмите Диапазон заполнения . см. снимок экрана:
Щелкните здесь, чтобы узнать подробности о вставке Порядковый номер.
Вставить все комбинации из 4 цифр
Kutools for Excel: 300+ функций, которые вы должны иметь в Excel, 30 -дневная бесплатная пробная версия отсюда