Функция массива только возвращает первое значение
Я пытаюсь использовать функцию массива в 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)),"")
и скопировать вниз:
Если вы не можете использовать вспомогательный столбец, попробуйте одну из формул Кодера.
Используйте функцию транспонирования перед индексом. Или верните функцию горизонтально.