Найдите ячейки с помощью простого критерия

Найдите ячейки с помощью простого критерия

У меня есть такие данные:

введите описание изображения здесь

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

Мой текущий подход заключается в использовании «вспомогательной» колонки. ВВ1Я вхожу:

=IF(LEFT(A1)="A",1,"")

И вБи 2Я вхожу:

=IF(LEFT(A2)="A",MAX($B$1:B1)+1,"")

и копировать вниз. Это определяет строки интереса. Наконец, вС1Я использую:

=IFERROR(MATCH(ROWS($1:1),$B$1:$B$23,0),"")

и скопируйте вниз.

введите описание изображения здесь

Моя цель — исключить столбец «помощник».

Я вижу только два варианта:

  • использовать автофильтр
  • использовать VBAУДФ

Подход с использованием автофильтра плох, поскольку фильтр придется запускать заново каждый раз при обновлении данных.УДФподход плохой, потому что лист должен работать в среде без VBA.

Есть ли какая-нибудь формула или формула массива, которая может получить номера строк, или я застрял со «вспомогательным» столбцом?

решение1

Попробуйте ввести это как формулу массива с помощью Ctrl+ Shift+ Enter:

{=SMALL(IF(LEFT($A$1:$A$23)="A",ROW($A$1:$A$23),9E+99),ROW())}

Я предполагаю, что ваши критерии сложнее, чем эти в вашем фактическом приложении, хотя. Вы можете заменить их LEFT($A$1:$A$23)="A"любыми критериями, которые вам нравятся, и это все равно будет работать.

Обратите внимание, что это вернет результат, 9E+99если вы скопируете его вниз для большего количества строк, чем есть, начинающихся с «A». Вы можете настроить его так, чтобы он возвращал пустое значение:

{=IFERROR(SMALL(IF(LEFT($A$1:$A$14)="A",ROW($A$1:$A$14),""),ROW()),"")}

решение2

Попробуйте это:
Поставьте 0 в C1.
Из C2: =match(indirect("a"&c1+1&":a<last row>",true),"a*",0)+C1
Примечания: Соответствие не чувствительно к регистру. Вам нужно управлять ошибками после того, как спросите, найдены ли соответствия.

Связанный контент