4

У меня есть строка ввода, которая содержит клетки:

  • 30
  • 30
  • 30
  • 50
  • 50
  • 60
  • 100

Я хочу сгенерировать все возможные комбинации длины 3 из этого набора. Поэтому я хотел бы, чтобы строки содержали 3 заполненных ячейки, а элементы каждой строки содержали уникальный набор, не зависящий от порядка. Другими словами, у меня не было бы 50, 30, 50 и 30, 50, 50.

Я сделал это вручную, так что это может быть не идеально, но я считаю, что мой вывод должен быть:

  • 30, 30, 30
  • 30, 30, 50
  • 30, 30, 60
  • 30, 30, 100
  • 30, 50, 50
  • 30, 50, 60
  • 30, 50, 100
  • 30, 60, 100
  • 50, 50, 60
  • 50, 50, 100
  • 50, 60, 100

Я знаю, что могу генерировать их с помощью VBA, но я хотел бы знать: есть ли в Excel какие-либо собственные команды для генерации этих строк?

2 ответа2

10

Вы можете использовать функцию CROSSJOIN в Excel (для Excel 2010 и 2013 требуется надстройка PowerPivot, которую можно бесплатно загрузить с сайта Microsoft). Подробную информацию о функции CROSSJOIN можно найти на веб-сайте MSDN.

В итоге, установите ваши базовые данные в виде двух (дублирующих) таблиц table1 и table2 убедившись, что они имеют разные имена столбцов, затем используйте CROSSJOIN(table1, table2) .

4

Если вы еще не видели эту ссылку, она может пригодиться. Ниже приведены примеры формул. https://stackoverflow.com/questions/10692653/excel-vba-to-create-every-possible-combination-of-a-range

Тем не менее, ответ CROSSJOIN выше - более чистый путь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .