Функция массива только возвращает первое значение

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

{= ИНДЕКС (А: А, МИН (ЕСЛИ (ИТОГО (3,OFFSET(А2, СТРОКА (А2: А31)-строка (А2),0)), СТРОКА (А2: А31))))}

Проблема в том, что возвращаемое значение является только первым результатом, то есть если после фильтра первая ячейка будет A9, когда я перетаскиваю формулу, она будет возвращать только значение A9 во всех ячейках. Это моя первая попытка использования функции массива, поэтому я не знаю, что проверять, я думаю, что сама формула верна, но, поскольку это моя первая попытка, может быть, я что-то упустил. Я уже нажимаю Ctrl+Shift+Enter для проверки.

На самом деле моя цель - вернуть значения ячеек, которые соответствуют определенным критериям, я пытался использовать другую функцию, но поскольку это было слишком сложно, я пытался использовать встроенный фильтр Excel, а потому, что он скрывает только те ячейки, которые не соответствуют критериям, он выиграл ". работать с моей другой формулой, которая использует отфильтрованное значение. Если у вас есть другие решения, чем то, которое я использовал, пожалуйста, предложите его, но я предпочитаю те, которые не слишком сложны или используют vba. Заранее спасибо.

2 ответа

Решение

Я задал тот же вопрос некоторое время назад и получил хороший ответ от Рона Кодерра

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

Скажем, у нас есть данные в столбцах А и В. В C2 введите:

=SUBTOTAL(3,$A$2:$A2)

и скопировать вниз:

Вспомогательный столбец - это простой набор последовательных значений. Теперь мы отфильтруем собаку:

Помощник настроен так, чтобы оставаться простой последовательной последовательностью! Это позволяет нам использовать стандарт MATCH()/INDEX() подход, чтобы захватить видимые данные. В Sheet2 в ячейку А1 введите:

=IFERROR(INDEX(Sheet1!A:A,MATCH(ROWS($1:1),Sheet1!C:C,0)),"")

и скопировать вниз:

Если вы не можете использовать вспомогательный столбец, попробуйте одну из формул Кодера.

Используйте функцию транспонирования перед индексом. Или верните функцию горизонтально.

Другие вопросы по тегам