viernes, noviembre 14, 2014

Usos poco comunes de la función ELEGIR

Si las funciones tuvieran sentimientos ELEGIR seguramente se sentiría subestimada; y con bastante razón.
La descripción de la función en la ayuda en línea de Excel reza literalmente:
Utiliza el argumento núm_índice para devolver un valor de una lista de argumentos de valores.
La cuestión se vuelve más interesante cuando seguimos leyendo y llegamos a las observaciones:
  • Si núm_índice es una matriz, cada valor se evaluará cuando se evalúe ELEGIR. 
  • Los argumentos de valor para ELEGIR pueden ser referencias de rango, así como valores individuales. 

Interesante! ELEGIR puede usar matrices como número de índice y las referencias pueden ser valores individuales y rangos.

Estas carcterísticas nos abren muchas más posibilidades de lo que podemos deducir de la escueta descripción en la ayuda.

Veamos algunos ejemplos:

Operaciones dinámicas con rangos.

Consideremos esta tabla de datos


Hemos definido los nombres "Plan", "Ventas" y "Diferencia" que se refieren a los respectivos rangos en la tabla. La fórmula

=SUMA(ELEGIR(1,Plan,Ventas,Diferencia))

da el total del plan de ventas de todos los productos. De la misma manera

=SUMA(ELEGIR(2,Plan,Ventas,Diferencia))

Para que la fórmula sea más dinámica podemos combinarla con la función COINCIDIR y usar vallidación de datos para crear una lista desplegable con las distintas opciones

=SUMA(ELEGIR(COINCIDIR(G2,B2:D2,0),Plan,Ventas,Diferencia))


Si bien podemos crear el mismo modelo usando INDICE, la ventaja de ELEGIR es que podemos usar rangos que este en distintas hojas.

BUSCARV de derecha a izquierda.

Uno de los usos de ELEGIR con matrices es hacer que BUSCARV (VLOOKUP) pueda trabajar de derecha a izquierda. Por ejemplo, en la tabla anterior si queremos encontrar a qué producto pertenece el importe 13,048 usamos

=BUSCARV(13048,ELEGIR({2,1},A3:A7,B3:B7),2,0)

Para entender como funciona esta fórmula podemos usar el evaluador de fórmulas (Fórmulas-Auditoría-Evaluar Fórmulas)


Podemos ver que la expresión ELEGIR({2,1},A3:A7,B3:B7) crea una matriz de dos columnas donde la primera es el importe de las ventas y la segunda los nombres de los productos.

En mi opinión el uso más importante de ELEGIR es reemplazar el sobrestimado uso de SI anidado. Como ya hemos señalado en una nota de este blog anidar funciones SI es una de las mejores maneras de cometer errores en una hoja de cálculo. Después de tres o cuatro niveles, la fórmula se vuelve practicamente incontrolable (y me disculparán todos esos cursos que insisten en enseñar a construir fórmulas SI anidadas como si fuera una gran proeza).

Para ejemplificarlo supongamos que queremos determinar el responsable de producción según el día de la semana. La fórmula  para seis días de la semana, donde en la celda B3 tenemos la fecha a considerarcon sería

con Si anidado

=SI(DIA(B3)=1,"Roberto",SI(DIA(B3)=2,"Juan",SI(DIA(B3)=3,"Carlos",SI(DIA(B3)=4,"Esteban",SI(DIA(B3)=5,"Raul","Jose")))))

Con ELEGIR

=ELEGIR(DIA(B3),"Roberto","Juan","Carlos","Esteban","Raul","Jose")

Como diría Gracián, "lo bueno si breve, dos veces bueno".

Que tengan un buen fin de semana

7 comentarios:

  1. ¡Muchísimas gracias, Jorge, por este artículo tan innovador sobre esta función tan poco conocida! Una muestra de la facilidad que ofrece para lograr soluciones mediante diferentes caminos.
    Una consulta: ¿por qué en la función ELEGIR del ejemplo se pone {2,1}, es decir, primero el 2 y luego el 1?

    ResponderBorrar
  2. Juan Gabriel,
    pongámoslo de esta manera: {2,1} le indica a ELEGIR que use el rango B3:B7 como primera columna de la matriz y el rango A3:A7 como segunda columna. De esa manera BUSCARV puede funcionar tal como fue diseñada, de izquierda a derecha.

    ResponderBorrar
  3. No puedo entender porque no me sale, para mi es una solucion maravillosa ya que me ahorra el paso de tener que intercambiar columnas para el buscarv
    muy buenos los post

    ResponderBorrar
  4. Raulo, enviame el archivo con lo que intentas hacer para que pueda ver donde está el problema (fijate en el enlace Ayuda, en la parte superior del blog).

    ResponderBorrar
  5. Hola Javier, si usas BUSCARH, es decir que tus datos están ordenados en filas y no en columnas (supongamos en el rango A1:E2), tienes dos posiblidades:

    1 - usar punto y coma en lugar de coma en la expresión {2;1} en la fórmula que quedaría así =BUSCARH(A9,ELEGIR({2;1},A1:E1,A2:E2),2,0)

    2 - usar TRANSPONER de esta manera: =BUSCARH(A9,ELEGIR(TRANSPONER({2,1}),A1:E1,A2:E2),2,0)

    ResponderBorrar
  6. Buenos días Jaime excelente sus comentarios, podría por favor indicarme cómo realizó en la función elegir {2.1} este sistema matricial es con paréntesis o llaves agradezco la atención

    ResponderBorrar
  7. Estimado, mi nombre es Jorge. En cuanto a la consulta, Excel utiliza las llaves para indicar que se trata de una matriz y los separadores para indicar las filas y las columnas. Los separdores dependen de las definiciones regionales del Windows del usuario

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.