Страницы: 1
RSS
Подсчет уникальных значений массива по двум критериям, Варианты оптимизации формулы
 
Приветствую друзья. Решаю одну задачу и задумался об оптимизации примененного мной решения.

Есть список
01.01.2019Иванов
01.01.2019Иванов
01.01.2019Сидоров
02.01.2019Иванов
02.01.2019Петров
02.01.2019петров
Нужно найти в нем кол-во уникальных пар. То есть Иванов 01.01.2019 и Иванов 02.01.2019 это две уникальных пары.
Подразумевается, что список может продлеваться вниз.

Как решаю:
1)  Формула массива СУММ(1/СЧЁТЕСЛИМН($A$5:$A$10;  $A$5:$A$10;  $B$5:$B$10;  $B$5:$B$10)) - работает только в том случае, если указать фиксированный диапазон в котором содержаться данные. Как только указываю диапазон с запасом, захватывая пустые ячейки, то тут же получаю ошибку #ДЕЛ/0!

2) Понимая, что давать на вход к расчету нужно  только заполненный диапазон, определяю его таким образом:
$A$5:ИНДЕКС($A$5:$A$26;СЧЁТЗ($A$5:$A$26))
и уже составляю такую формулу ( подставляя вместо фиксированного адреса окончания диапазона индекс+счётз которые его определяют)
=СУММ(1/СЧЁТЕСЛИМН($A$5:ИНДЕКС($A$5:$A$26;СЧЁТЗ($A$5:$A$26));$A$5:ИНДЕКС($A$5:$A$26;СЧЁТЗ($A$5:$A$26));$B$5:ИНДЕКС($B$5:$B$26;СЧЁТЗ($B$5:$B$26));$B$5:ИНДЕКС($B$5:$B$26;СЧЁТЗ($B$5:$B$26))))

Вопрос, как можно оптимизировать формулу, думаю что  есть путь лаконичнее

P.S.
Интересует решение именно формулами.  
Изменено: Dyroff - 07.02.2019 23:17:16
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Решение, что называется, "в лоб", но лаконичнее, чем вариант с функцией ИНДЕКС:

=СУММ(ЕСЛИОШИБКА(1/СЧЁТЕСЛИМН($A$5:$A$25;  $A$5:$A$25;  $B$5:$B$25;  $B$5:$B$25);0))

Просто добавил обработку ошибки

Изменено: Sceptic - 08.02.2019 00:44:43
 
Sceptic, ну так он вместо ошибки ноль выдаст и все, а результат не посчитает.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Dyroff, разве? Формула массива. Проверку ошибки делаем не на итоговый результат расчета, а на слагаемые в функции СУММ. Попробуйте в файле, всё работает
 
Sceptic, да, точно, спасибо:) Перемудрил я.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
Страницы: 1
Наверх