Для файла из сообщения 8 массивная формула для диапазона AT4:CI64
Код |
---|
=ЕСЛИОШИБКА(ИНДЕКС(ЧАСТОТА(ЕСЛИ($A4:$N4=ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3);СТОЛБЕЦ($A:$N));ЕСЛИ($A4:$N4<>ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3);СТОЛБЕЦ($A:$N)));НАИМЕНЬШИЙ(ЕСЛИОШИБКА(ЕСЛИ(ЧАСТОТА(ЕСЛИ($A4:$N4=ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3);СТОЛБЕЦ($A:$N));ЕСЛИ($A4:$N4<>ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3);СТОЛБЕЦ($A:$N)))>1;СТРОКА($1:$15));"");ОСТАТ(СТОЛБЕЦ(G4);7)+1));"")
|
Для функции ЧАСТОТА формируются два массива номеров столбцов. Один, где элементы НЕ равны искомому, второй, где равны. Функция выдаёт массив, сколько раз подряд встречается искомый элемент. Выбираем те номера элементов, которые встречаются больше одного раза. Функция ЕСЛИОШИБКА исправляет элементы, которые вышли за длину массива, полученного функцией ЧАСТОТА. Выбираем наименьший (первый, второй, ... по столбцам) и функцией ИНДЕКС из такого же массива, сформированного функцией ЧАСТОТА, берём количество подряд идущих искомых элементов.
Искомый элемент находится в третьей строке, но только в одной ячейке из семи, поэтому для остальных столбцов мы его получаем с помощью формулы:
Код |
---|
ПРОСМОТР(99;1/(AN$3:AT$3<>"");AN$3:AT$3) |
таким образом, для всей строки искомый элемент будет соответствовать каждому столбцу.
Для каждой группы наименьшие надо начинать брать с первого по седьмой. Для этого используем фрагмент формулы:
Код |
---|
ОСТАТ(СТОЛБЕЦ(G4);7)+1 |
Ну и ошибку, когда наименьших больше нет, исправляет внешняя функция ЕСЛИОШИБКА
*А для диапазона ячеек P4:AC64 может быть, подойдёт такая массивная формула:
Код |
---|
=ЕСЛИ(ЕСЛИОШИБКА(A4=СМЕЩ(A4;;-1);0=1);O4;ПОИСКПОЗ(;(A4:$O4=A4)*(A4:$O4<>"");)-1)
|
Она показывает, сколько идёт подряд одинаковых значений.
**Вместо ;O4; можно написать ;"";, тогда длина повторов будет только один раз.