Fórmula de Excel: matriz de retorno con función INDICE -

Tabla de contenido

Fórmula genérica

=SUM(INDEX(range,N(IF(1,(1,2,3)))))

Resumen

Para que INDEX devuelva una matriz de elementos a otra función, puede usar un truco oscuro basado en las funciones IF y N. En el ejemplo que se muestra, la fórmula en E5 es:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

donde "datos" es el rango con nombre B5: B10.

Explicación

Es sorprendentemente complicado conseguir que INDEX devuelva más de un valor a otra función. A modo de ilustración, la siguiente fórmula se puede utilizar para devolver los primeros tres elementos del rango denominado "datos", cuando se ingresan como una fórmula de matriz de varias celdas.

(=INDEX(data,(1,2,3)))

Los resultados se pueden ver en el rango D10: F10, que contiene correctamente 10, 15 y 20.

Sin embargo, si envolvemos la fórmula en la función SUMA:

=SUM(INDEX(data,(1,2,3)))

El resultado final es 10, mientras que debería ser 45, incluso si se ingresa como una fórmula de matriz. El problema es que INDICE solo devuelve el primer elemento de la matriz a la función SUM. Para forzar que INDEX devuelva varios elementos a SUM, puede ajustar la constante de matriz en las funciones N e IF de esta manera:

=SUM(INDEX(data,N(IF(1,(1,2,3)))))

que devuelve un resultado correcto de 45. De manera similar, esta fórmula:

=SUM(INDEX(data,N(IF(1,(1,3,5)))))

devuelve correctamente 60, la suma de 10, 20 y 30.

Esta técnica oscura a veces se llama "desreferenciar", porque evita que INDEX maneje los resultados como referencias de celda y, posteriormente, descarte todos los elementos de la matriz excepto el primero. En cambio, INDEX entrega una matriz completa de valores a SUM in. Jeff Weir tiene una buena explicación aquí sobre stackoverflow.

Nota para los lectores: no estoy seguro exactamente de por qué funciona esto. Si puede proporcionar una explicación clara, actualizaré para incluir.

Articulos interesantes...