Por que envolver uma fórmula de matriz Excel em um montante não produzem a soma dos conteúdos neste caso?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Inteligente Pessoas,

No Excel, parece que embalar uma fórmula de matriz em um montante não produz a soma dos conteúdo da matriz em todos os casos. (Isto é, parece-me;. Claramente, eu poderia muito bem ser confundida)

Este surgiu quando tentando escrever o equivalente a uma junção interna no Excel. Por razões que envolvem Excel para Mac, eu estou fazendo isso sem o uso de Visual Basic ou MS Query: apenas fórmulas de matriz e INDEX / PARTIDA. Eu tenho, eu acho, conseguiu, para além deste comportamento bizarro que eu estou em uma perda para entender.

Atualmente estou usando um truque, mas seria bom para não ter que. Qualquer ajuda ou conselhos seria muito muito apreciada.

A seguir reproduz o problema:

Tabela 1

key | fkey
----+------
  a |   x
  a |   y
  b |   x
  b |   y

Tabela 2

key | value
----+------
  x |   1
  y |  10

O layout acima é suposto representar como essas duas tabelas pequenas aparecem na planilha: nada inteligente está acontecendo. As quatro faixas óbvias são nomeados como table1.key, table1.fkey, table2.key e table2.value.

Assim, então, juntar-se ao interior. Gostaria esses valores da Tabela 2 que correspondem a uma tecla específica no Quadro 1, com a junção em table1.fkey `= table2.key'. Entrando na fórmula:

{=("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE))}

em dois células verticais dá o resultado necessário; a saber:

1
10

(Cool, ou o quê?) Tão longe, tão bem. Mas agora eu realmente quero a soma dos dois números acima. Então, eu simplesmente envolveu a fórmula acima em uma soma, e entrou o resultado em um única célula:

{=SUM(("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE)))}

Resultado?

2

Alguém tem qualquer idéia do que diabos está acontecendo?

James

Foi útil?

Solução

O argumento núm_linha de INDEX não pode ser uma matriz, quando utilizado numa fórmula única matriz de células. A função índice é sempre retornando 1. Tente este

=SUM(INDEX(table2.value,{2,1}))

É sempre retornará 10, porque INDEX só aceitará o primeiro elemento da matriz. Eu não sei por que eles funcionam de forma diferente para fórmulas de matriz de células individuais vs multicell.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top