Почему обертывание формулы массива Excel в SUM в этом случае не приводит к получению суммы содержимого?

StackOverflow https://stackoverflow.com/questions/808011

  •  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 будет принимать только первый элемент массива.Я не знаю, почему они работают по-разному для формул массива с одной ячейкой по сравнению с многоклеточными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top