Я пытаюсь эффективно «Индексировать, если» — копировать список с определенными критериями

Я пытаюсь эффективно «Индексировать, если» — копировать список с определенными критериями

У меня есть столбец данных и маркер рядом с ним. Подумайте:

ID#1 -- A
ID#2 -- B
ID#3 -- A

Я пытаюсь переместить только идентификационные номера с маркером A, поэтому мой конечный результат:

ИД#1
ИД#3

Это очень просто сделать с помощью VBA - отфильтровать диапазон, скопировать, вставить. Я пытаюсь найти решение этой проблемы без использования VBA. Я пробовал различные формулы массива - Index(range,sumproduct(row*criteria)), но у меня не получается заставить это работать. Как мне заставить это работать?

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

решение1

Использовать:

=IFERROR(INDEX($A$1:$A$8,SMALL(IF($B$1:$B$8="A",ROW($B$1:$B$8),999999),ROW(A1))),"")

Small вернет идентификаторы с «A» для каждой строки (от наименьшего к наибольшему)
A1:A8 измените его так, чтобы он соответствовал вашему столбцу идентификаторов
B1:B8 измените его так, чтобы он соответствовал вашему столбцу A
Оставьте $ для фиксированных ссылок
нажмите Ctrl+ Shift+ Enterвместо Enterэто формула массива

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