Декартово произведение в Excel
При работе с данными может возникнуть потребность из двух списков создать новый в котором каждый элемент первого списка будет сопоставлен с каждым элементом второго списка.
Пример. У нас есть список товаров (Монитор, Клавиатура, Мышь) и список магазинов (Магазин №1, Магазин №2). В результате должна получиться таблица следующего вида:
Подобные задачи часто встречаются при разработке каких либо моделей, например когда нужно сопоставить остатки по каждому товару в каждом магазине и отразить эти значения в таблице.
Данная задача достаточно просто решается с помощью процедуры, в которой мы прописываем циклы для обхода первого и второго списков, на VBA скрипт выглядит следующим образом:
Такой же результат можно легко получить с помощью SQL запроса, используя соединение двух таблиц через CROSS JOIN:
Недавно в качестве спортивного интереса мне захотелось решить данную задачу, используя только стандартные формулы в Excel.
Пример работающего решения можно скачать по ссылке ниже.