Cada día que pasa Microsoft nos ofrece nuevas y potentes herramientas y funciones, pero no debemos olvidar el pasado, ya que éste nos sigue dando opciones tan potentes como las nuevas.
Hoy hablaré de la función de macro Excel 4.0 EVALUAR.
Función muy interesante, y de amplia difusión en cualquier lenguaje de programación (EVALUATE en DAX o en VBA, o Expression.Evaluate en M-Power Query'), que hablita o fuerza entender una expresión de texto como una referencia y devuelve el resultado de ésta (a grandes rasgos).
Esta función EVALUAR(fórmula como texto) dentro del entorno de las funciones macro 4.0 realiza precisamente esta conversión.
Recuerda que este tipo de funciones la tenemos que desarrollar siempre dentro de la herramienta de nombres definidos. NO está operativa directamente en las celdas!!!
Planteemos el siguiente ejemplo.
Tenemos unos cálculos desarrollados que representan unos ratios estándar que resumen cierta información para un país concreto, tomados los datos de una tabla en nuestro libro:
Desarrollamos las fórmulas para nuestros ratios... pero antes crearemos los dos siguientes nombres definidos. Para lo cual (muy importante!) nos situaremos en la celda K3 (donde vamos a crear nuestra fórmula):
pais =!I3. Es decir, una celda a nuestra izquierda.
ratio =!H3. Es decir, dos celdas a nuestra izquierda.
Notemos que hemos añadido el signo de exclamación antes de la celda. Si no hicieramos esto, al aceptar, se referiría siempre a esa celda de la hoja en que se creó el nombre definido!!.
Sin embargo, al disponer la exclamación, estamos creando una referencia relativa que podemos usar sobre cualquier hoja del libro :OOO (supertruco!!)
Podemos crear nuestros 'ratios'. Así en K3 creamos el ratio A con la fórmula:
=SUMAPRODUCTO(TblVTAS[[Unidades]:[Unidades]]*(TblVTAS[[País]:[País]]=pais)*(TblVTAS[[Precio]:[Precio]]))
Nos indicará el Total de las ventas para el país elegido.
En K4 el ratio B:
=CONTAR.SI(TblVTAS[País];pais)
Nos dirá el número de veces que se ha vendido en el país marcado.
En K5 el ratio C:
=PROMEDIO.SI.CONJUNTO(TblVTAS[Unidades];TblVTAS[País];pais)
Calcula la media de unidades vendidas en el país.
En K6 el ratio D:
=CONTARA(UNICOS(FILTRAR(TblVTAS[Cliente];TblVTAS[País]=pais)))
Clientes únicos para ese país.
Y en K7 el último ratio E:
=TEXTO(
INDICE(FECHA(2021;SECUENCIA(12);1);
COINCIDIRX(MAX(SUMAR.SI.CONJUNTO(TblVTAS[Unidades];TblVTAS[Fechas];">="&FECHA(2021;SECUENCIA(12);1);TblVTAS[Fechas];"<="&FIN.MES(FECHA(2021;SECUENCIA(12);1);0);TblVTAS[País];pais));SUMAR.SI.CONJUNTO(TblVTAS[Unidades];TblVTAS[Fechas];">="&FECHA(2021;SECUENCIA(12);1);TblVTAS[Fechas];"<="&FIN.MES(FECHA(2021;SECUENCIA(12);1);0);TblVTAS[País];pais)));
"mmmm")
Donde obtendremos el mes con mayor unidades vendidas en el país.
A continuación crearemos dos nuevos nombres definidos:
Celda =FORMULATEXTO(INDICE(DATOS!$K$3:$K$7;COINCIDIR(ratio;DATOS!$I$3:$I$7;0)))
fxEVALUAR =EVALUAR(Celda)
Con el nombre definido 'Celda' recuperamos el texto de la fórmula que localizamos con la función INDICE (recuerda que una característica especial de INDICE es que retorna el valor de la celda, pero que también se puede interpretar como una referencia!!).
Es decir, con INDICE, en este contexto, identificamos la referencia de la celda correspondiente al ratio buscado!.
Otras funciones, también macros 4.0, que podríamos haber empleado para recuperar el texto de las fórmulas serían:
=INDICAR.FORMULA(celda_con_fórmula)
=INDICAR.CELDA(6;celda_con_fórmula)
Y finalmente, EVALUAR(Celda) convierte el texto obtenido en una fórmula tal cual la hubieramos escrito :O
Así pues, con nuestros ratios cálculados, nombres definidos con funciones macros 4.0 creados, podemos gestionar la elección de cualquiera de los ratios.
Nos podemos ir a otra hoja y crear el siguiente cuadro:
Donde podemos comprobar cómo en el rango resultado en D3:D8 aplicamos siempre la misma fórmula:
=fxEVALUAR
i.e., llamamos al mismo nombre definido, el cual depende del ratio elegido dos celdas a su izquierda, y del país situado una celda a su izquierda.
Tenemos por tanto una elección de fórmulas sujeta al ratio inicialmente formulado, tal como necesitábamos.
Hoy hablaré de la función de macro Excel 4.0 EVALUAR.
Función muy interesante, y de amplia difusión en cualquier lenguaje de programación (EVALUATE en DAX o en VBA, o Expression.Evaluate en M-Power Query'), que hablita o fuerza entender una expresión de texto como una referencia y devuelve el resultado de ésta (a grandes rasgos).
Esta función EVALUAR(fórmula como texto) dentro del entorno de las funciones macro 4.0 realiza precisamente esta conversión.
Recuerda que este tipo de funciones la tenemos que desarrollar siempre dentro de la herramienta de nombres definidos. NO está operativa directamente en las celdas!!!
Planteemos el siguiente ejemplo.
Tenemos unos cálculos desarrollados que representan unos ratios estándar que resumen cierta información para un país concreto, tomados los datos de una tabla en nuestro libro:
Desarrollamos las fórmulas para nuestros ratios... pero antes crearemos los dos siguientes nombres definidos. Para lo cual (muy importante!) nos situaremos en la celda K3 (donde vamos a crear nuestra fórmula):
pais =!I3. Es decir, una celda a nuestra izquierda.
ratio =!H3. Es decir, dos celdas a nuestra izquierda.
Notemos que hemos añadido el signo de exclamación antes de la celda. Si no hicieramos esto, al aceptar, se referiría siempre a esa celda de la hoja en que se creó el nombre definido!!.
Sin embargo, al disponer la exclamación, estamos creando una referencia relativa que podemos usar sobre cualquier hoja del libro :OOO (supertruco!!)
Podemos crear nuestros 'ratios'. Así en K3 creamos el ratio A con la fórmula:
=SUMAPRODUCTO(TblVTAS[[Unidades]:[Unidades]]*(TblVTAS[[País]:[País]]=pais)*(TblVTAS[[Precio]:[Precio]]))
Nos indicará el Total de las ventas para el país elegido.
En K4 el ratio B:
=CONTAR.SI(TblVTAS[País];pais)
Nos dirá el número de veces que se ha vendido en el país marcado.
En K5 el ratio C:
=PROMEDIO.SI.CONJUNTO(TblVTAS[Unidades];TblVTAS[País];pais)
Calcula la media de unidades vendidas en el país.
En K6 el ratio D:
=CONTARA(UNICOS(FILTRAR(TblVTAS[Cliente];TblVTAS[País]=pais)))
Clientes únicos para ese país.
Y en K7 el último ratio E:
=TEXTO(
INDICE(FECHA(2021;SECUENCIA(12);1);
COINCIDIRX(MAX(SUMAR.SI.CONJUNTO(TblVTAS[Unidades];TblVTAS[Fechas];">="&FECHA(2021;SECUENCIA(12);1);TblVTAS[Fechas];"<="&FIN.MES(FECHA(2021;SECUENCIA(12);1);0);TblVTAS[País];pais));SUMAR.SI.CONJUNTO(TblVTAS[Unidades];TblVTAS[Fechas];">="&FECHA(2021;SECUENCIA(12);1);TblVTAS[Fechas];"<="&FIN.MES(FECHA(2021;SECUENCIA(12);1);0);TblVTAS[País];pais)));
"mmmm")
Donde obtendremos el mes con mayor unidades vendidas en el país.
A continuación crearemos dos nuevos nombres definidos:
Celda =FORMULATEXTO(INDICE(DATOS!$K$3:$K$7;COINCIDIR(ratio;DATOS!$I$3:$I$7;0)))
fxEVALUAR =EVALUAR(Celda)
Con el nombre definido 'Celda' recuperamos el texto de la fórmula que localizamos con la función INDICE (recuerda que una característica especial de INDICE es que retorna el valor de la celda, pero que también se puede interpretar como una referencia!!).
Es decir, con INDICE, en este contexto, identificamos la referencia de la celda correspondiente al ratio buscado!.
Otras funciones, también macros 4.0, que podríamos haber empleado para recuperar el texto de las fórmulas serían:
=INDICAR.FORMULA(celda_con_fórmula)
=INDICAR.CELDA(6;celda_con_fórmula)
Y finalmente, EVALUAR(Celda) convierte el texto obtenido en una fórmula tal cual la hubieramos escrito :O
Así pues, con nuestros ratios cálculados, nombres definidos con funciones macros 4.0 creados, podemos gestionar la elección de cualquiera de los ratios.
Nos podemos ir a otra hoja y crear el siguiente cuadro:
Donde podemos comprobar cómo en el rango resultado en D3:D8 aplicamos siempre la misma fórmula:
=fxEVALUAR
i.e., llamamos al mismo nombre definido, el cual depende del ratio elegido dos celdas a su izquierda, y del país situado una celda a su izquierda.
Tenemos por tanto una elección de fórmulas sujeta al ratio inicialmente formulado, tal como necesitábamos.
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.