Страницы: 1
RSS
Поиск наиболее часто повторяющегося значения по критерию
 
Добрый день!

Последнюю неделю безостановочно пытаюсь найти  решение своей проблемы (гуглил все что только можно), но имеющиеся  варианты не соответствуют тому, что мне нужно получить.

Имеется  таблица, в которой названия складов (для примера) соответствуют ФИО  работника (пример во вложении). В зависимости от названия склада мне  нужно найти наиболее часто повторяющуюся имя и фамилию, которые ему  соответствуют (исходя из примера, например, наиболее часто повторяющееся  ФИО для Склад1). При этом:


1. Таблица не подлежит сортировке;
2. Название каждого склада повторяется;
3. В списке работников обязательно будут пропуски;
4.  Если работники не повторяются, или несколько работников повторяются  одинаковое количество раз, в таком случае мне нужно вывести ФИО первого  такого наиболее часто повторяющегося работника (сообщение формата  Н/Д/ЗНАЧ недопустимо)

Я понимаю, что для решения этой задачи  задействуются формулы "индекс" и "поискпоз" в массиве. Для расчета  максимального значения использовал функцию "МАКС". Функция "МОДА" не  подходит, так как не работает с нулевыми значениями (есть пропуски в списке работников). Беру для примера  самую простую формулу и пытаюсь корректировать ее:

{=ИНДЕКС(C2:C16;ПОИСКПОЗ(МАКС(СЧЁТЕСЛИ(C2:C16;C2:C16));СЧЁТЕСЛИ(C2:C16;C2:C16);0))}

Но  дальше начинаются трудности, так как я не могу правильно задать  условие, что поиск из всей таблицы должен осуществляться для конкретного  склада, и максимально повторяющееся ФИО должно выводиться только по  отношению к нему.

Я перепробовал различные  варианты, применяя функции МОДА, ЕСЛИ, СЧЕТЕСЛИМН, ЕСЛИОШИБКА и т.п.,  но, к сожалению, знания в этой области поверхностные, и их не хватает  для решения задачи.

Прошу помощи.
 
Может так?
=MATCH(MAX(COUNTIFS(C2:C16;C2:C16;B2:B16;B19));COUNTIFS(C2:C16;C2:C16;B2:B16;B19);0)
Но, при указании в качестве критерия отсутствующего в списке склада, ПОИСКПОЗ выдаст первое значение, что в принципе поправимо.
 
Для 365 или 2021:
=LET(x;ФИЛЬТР(C2:C16;B2:B16=B19);ИНДЕКС(СОРТ(ВЫБОР({1;2};x;СЧЁТЕСЛИМН(x;x));2;-1);1;1))
 
Спасибо вам большое за столь быстрый отклик! Все получилось, как мне и требовалось. Для себя выяснил, что полет мысли был правильный, но я не верно выставлял критерий поиска, по которому должен производиться отбор (я только усложнял, а оказалось все намного проще). Буду учиться дальше, может тоже кому нибудь смогу помочь:) Еще раз большое спасибо тем, кто создал этот замечательный ресурс, и конечно же тем, кто откликается на просьбы о помощи!
 
Массивная  =INDEX(C2:C16;MODE(IF((B2:B16=B19)*(C2:C16<>"");MATCH(C2:C16;C2:C16;))))
и быстрая
Скрытый текст
Изменено: БМВ - 23.11.2022 07:43:27
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх