¿Por qué envolver una fórmula de matriz de Excel en una SUMA no produce la suma de los contenidos en este caso?

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Personas inteligentes,

En Excel, parece que envolver una fórmula de matriz en una SUMA no produce la suma del contenido de la matriz en todos los casos. (Es decir, me parece; claramente, podría estar confundido).

Esto surgió al intentar escribir el equivalente de una combinación interna en Excel. Por motivos relacionados con Excel para Mac, hago esto sin usar Visual Basic o MS Query: solo fórmulas matriciales e INDEX / MATCH. Creo que he tenido éxito, aparte de este extraño comportamiento que no entiendo.

Actualmente estoy usando un kludge, pero sería bueno no tener que hacerlo. Cualquier ayuda o consejo sería muy apreciado.

Lo siguiente reproduce el problema:

Tabla 1

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

Tabla 2

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

Se supone que el diseño anterior representa cómo aparecen estas dos pequeñas tablas en la hoja de cálculo: no ocurre nada inteligente. Los cuatro rangos obvios se denominan table1.key , table1.fkey , table2.key y table2.value .

Entonces, entonces, la unión interna. Me gustaría esos valores de la Tabla 2 que corresponden a una clave específica en la Tabla 1, con la unión en `table1.fkey = table2.key '. Entrando en la fórmula:

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

en dos celdas verticales da el resultado requerido; a saber:

1
10

(Cool, o qué?) Hasta ahora, muy bien. Pero ahora realmente quiero la suma de los dos números de arriba. Así que simplemente envolví la fórmula anterior en una SUMA e ingresé el resultado en una única celda:

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

¿Resultado?

2

¿Alguien tiene alguna idea de lo que está pasando?

James

¿Fue útil?

Solución

El argumento row_num de INDEX no puede ser una matriz cuando se utiliza en una fórmula de matriz de celda única. La función INDEX siempre está regresando 1. Prueba esto

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

Siempre devolverá 10, porque INDEX solo aceptará el primer elemento de la matriz. No sé por qué funcionan de manera diferente para las fórmulas de matriz de celda única frente a las multiceldas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top