Почему обертывание формулы массива Excel в SUM в этом случае не приводит к получению суммы содержимого?
-
03-07-2019 - |
Вопрос
Умные Люди,
В Excel оказывается, что обертывание формулы массива в СУММУ не приводит к получению суммы содержимого массива во всех случаях.(То есть мне так кажется;очевидно, я вполне мог быть сбит с толку.)
Это возникло при попытке написать эквивалент внутреннего соединения в Excel.По причинам, связанным с Excel для Mac, я делаю это без использования Visual Basic или MS Query:только формулы массива и ИНДЕКС / СОВПАДЕНИЕ.Я думаю, мне это удалось, если не считать этого странного поведения, которое я никак не могу понять.
В настоящее время я использую kludge, но было бы неплохо не делать этого.Мы были бы очень признательны за любую помощь или совет.
Ниже воспроизводится проблема:
Таблица 1
key | fkey
----+------
a | x
a | y
b | x
b | y
Таблица 2
key | value
----+------
x | 1
y | 10
Приведенный выше макет должен представлять, как эти две маленькие таблицы отображаются в электронной таблице:ничего умного не происходит.Четыре очевидных диапазона названы следующим образом table1.key
, table1.fkey
, table2.key
, и table2.value
.
Итак, тогда, внутреннее соединение.Я бы хотел, чтобы те значения из таблицы 2, которые соответствуют определенному ключу в таблице 1, соединялись с `table1.fkey=table2.key'.Ввод формулы:
{=("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE))}
в два вертикальные ячейки дают требуемый результат;а именно:
1 10
(Круто, что ли?) Пока все в порядке.Но теперь мне действительно нужна сумма двух приведенных выше чисел.Поэтому я просто заключил приведенную выше формулу в СУММУ и ввел результат в одинокий ячейка:
{=SUM(("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE)))}
Результат?
2
Есть ли у кого-нибудь Любой представляете, что, черт возьми, происходит?
Джеймс
Решение
Аргумент row_num индекса не может быть массивом при использовании в формуле массива с одной ячейкой.Функция INDEX всегда возвращает 1.Попробуй это
=SUM(INDEX(table2.value,{2,1}))
Он всегда будет возвращать 10, потому что INDEX будет принимать только первый элемент массива.Я не знаю, почему они работают по-разному для формул массива с одной ячейкой по сравнению с многоклеточными.