Функция Excel ПОИСКПОЗ + СЧЁТЕСЛИ: получение n-го значения в массиве

У меня есть формула, которую я использую в Excel для возврата строки # первого элемента, соответствующего указанному значению.

Формула: =MATCH(0,COUNTIF($B$1,List),0) + CTRL + SHIFT + ENTER и в Mac: CMD + RETURN

Становится:

MATCH(0,{**0**;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0},0)

Выходы: 1

Я хотел бы обновить функцию, чтобы найти 2-й, 3-й и т. д. экземпляр, соответствующий указанному значению.

Как это:

MATCH(0,{0;**0**;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0},0)

И это выводит: 2


person krumholz    schedule 10.04.2012    source источник
comment
Это может помочь: конец диапазона"> stackoverflow.com/questions/9588286/   -  person assylias    schedule 10.04.2012


Ответы (2)


Ваша текущая формула не находит позицию первого значения в списке, которое не соответствует B1?

Для второй попытки этой формулы массива

=SMALL(IF(List<>$B$1,ROW(List)-MIN(ROW(List))+1),2)

замените 2 любым значением n для n-го совпадения. Предполагается, что список представляет собой один столбец

person barry houdini    schedule 10.04.2012
comment
Это подходит как перчатка с одной небольшой модификацией, знаком равенства вместо меньше или больше: =МАЛЕНЬКИЙ(ЕСЛИ(Список=$B$1,СТРОКА(Список)-МИН(СТРОКА(Список))+1),2 ) - person krumholz; 10.04.2012
comment
@user1311882 user1311882 - нет проблем - как я уже сказал, я пытался привести его в соответствие с вашим оригиналом, если вы сопоставите ноль с COUNTIF, вы найдете позицию первой ячейки от not equal до $B$1 - чтобы найти позицию первый экземпляр $B$1, вы бы просто использовали =MATCH($B$1,List,0) - person barry houdini; 10.04.2012

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

используйте это MATCH(<Match value>,INDIRECT(" <column of data> " & <Last position found> +1 & ":<Column of Data><Last Row Of Data>"),0)+<Last position found>

см. это: динамический фильтр

person Ferdinand Musongela    schedule 12.06.2015