
У меня есть следующие два массива:
{a,b,c}
{d,e,f}
Как получить этот массив?
{a*d,b*e,c*f}
Например, один массив — {0,1,1}, другой — {255,122,0}. Мне нужен этот массив:
{0,122,0}
На самом деле все настолько просто.
Это связано с этой темой:Excel: поиск последней ненулевой и непустой ячейки в отфильтрованном диапазоне
Я обнаружил, что эта формула SUBTOTAL(2,OFFSET(R5,ROW(R5:R200)-ROW(R5),0)) дает 1 для отфильтрованных данных (видимых) и 0 для отфильтрованных (невидимых). Таким образом, это массив из 196 элементов 0 или 1.
Другой массив, OFFSET(R5,ROW(R5:R200)-ROW(R5),0), по сути, представляет собой просто R5:R200.
Если я могу умножить каждый элемент одного массива на его соответствующий эквивалент в другом массиве и получить новый массив, то следующий ПРОСМОТР вернет последнее ненулевое число в отфильтрованных данных.
=ПРОСМОТР(2,1/НОВЫЙ-МАССИВ,R5:R200)
Это происходит потому, что массив SUBTOTAL дает 1 для каждой отфильтрованной (видимой) ячейки, и когда он умножается на содержимое ячейки, эти видимые ячейки с содержимым 0 станут 0 в новом массиве (вторая 1 в {0,1,1} умноженная на 0 в {255,122,0}). Таким образом, последняя ненулевая ячейка будет выбрана LOOKUP.
решение1
Как сказал @Jeeped, используйте ИНДЕКС:
INDEX({0,1,1}*{255,122,0},0)
Это вернет массив {0,122,0} в другую формулу.
Как вы можете видеть, если мы суммируем цифры:
=SUM(INDEX({0,1,1}*{255,122,0},0))
Что возвращает 122
решение2
решение3
Допустим, в ячейках A1, B1 и C1 у вас есть 1, 2 и 3 соответственно. А в ячейках A2, B3 и C2 у вас есть 4, 5 и 6 соответственно.
В ячейку A3 можно ввести формулу:
= А1:С1 * А2:С2
и он сгенерирует массив {4,10,18}, который будет передан в A3, B3 и C3 соответственно.