Возвращение массива с помощью в Excel с помощью функции ИНДЕКС
По какой-либо причине, если вы хотите выполнить некоторую операцию с диапазоном с определенными индексами, вы можете подумать об использовании функции ИНДЕКС для получения массива значений по определенным индексам. Нравится.
Разберемся на примере.
Здесь у меня есть столбец Оценить. Я хочу суммировать значения в позиции 1,3 и 5.
Я пишу эту формулу в C2.
=SUM(INDEX(A2:A11,{1,3,5}))
Удивительно, но функция ИНДЕКС не возвращает массив значений, когда мы предоставляем массив в качестве индексов. Мы получаем только первое значение. А функция СУММ возвращает сумму только одного значения.
Итак, как мы можем получить функцию INDEX, возвращающую этот массив. Я нашел это решение в Интернете, и я действительно не понимаю, как оно работает, но оно работает.
Общая формула для получения массива индексов
=SUM(INDEX(range,N(IF(1,{numbers})))
Диапазон: это диапазон, в котором вы хотите искать по заданным номерам индексов. Номер: это номера индексов.
Теперь применим приведенную выше формулу к нашему примеру.
Запишите эту формулу в C2.
=SUM(INDEX(A2:A11,N(IF(1,{1,3,5})))
И это вернет правильный ответ как 90.
Как это работает.
Ну, как я уже сказал, я не знаю, почему он работает и возвращает массив чисел, но вот что происходит.
link: / tips-if-condition-in-excel [IF]
(1, \ {1,3,5}):
Эта часть возвращает массив \ {1,3, 5}, как и ожидалось N (link: / tips-if-condition-in-excel [IF]
(1, \ {1,3,5}))
это переводится в N (\ {1,3,5}), что снова дает нам \ {1,3,5} ПРИМЕЧАНИЕ: функция N возвращает числовой эквивалент любого значения. Если значение не является числовым, оно возвращает 0 (как текст). А при ошибках возвращает error.
link: / lookup-formulas-excel-index-function [ИНДЕКС]
A2: A11, N (link: / tips-if-condition-in-excel [IF]
(1, \ {1,3 , 5}):
эта часть переводится как link: / lookup-formulas-excel-index-function [INDEX]
((A2: A11, \ {1,3,5})
и каким-то образом это возвращает массив \ {10,30,50}. Как вы видели ранее, когда пишете link: / lookup-formulas-excel-index-function [INDEX]
((A2: A11, \ { 1,3,5})
непосредственно в формуле он возвращает только 10. Но когда мы используем функцию N и IF, он возвращает весь массив. Если вы понимаете это, дайте мне знать в разделе комментариев ниже.
Как использовать ссылки на ячейки для значений индекса, чтобы получить массив
В приведенном выше примере мы жестко запрограммировали индексы в функции. Но что, если я хочу получить его из диапазон, который может измениться. Мы заменим \ {1,3,5} диапазоном? Давайте попробуем.
Здесь у нас есть эта формула в ячейке D2:
=SUM(INDEX(A2:A11,N(IF(1,A2:A5)))
Это возвращает 10. Самое первое значение данного индекса. Даже если мы e введите его как формулу массива с помощью CTRL + SHIFT + ENTER, он даст тот же результат.
Чтобы заставить его работать, добавьте оператор + или — (двойной унарный) перед диапазоном и введите его как формулу массива.
{=SUM(INDEX(A2:A11,N(IF(1,+A2:A5)))}
Это работает. Не спрашивай, как? Это просто работает. Если вы можете сказать мне, как я буду указывать здесь ваше имя и объяснение.
Итак, мы узнали, как получить массив из функции ИНДЕКС. В Excel творится что-то безумное. Если вы можете объяснить, как это работает здесь, в разделе комментариев ниже, я включу это в свое объяснение с вашим именем.