Dentro de las funciones de PowerPivot encontramos un conjunto de funciones relativas al tipo de las expresiones. Todas estas funciones devuelve TRUE/FALSE (es decir, devuelven valor booleano) lo que nos va a permitir evaluar ciertos casos que nos van a ser muy atractivas para calculo mucho más complejos. Las funciones son:

Función Descripción
ISBLANK( < valor >) Devuelve TRUE si el <valor> es BLANK (celda vacía), si no devuelve FALSE
ISERROR( <valor> ) Devuelve TRUE si el <valor> devuelto es un error, si no devuelve FALSE
ISLOGICAL ( <valor> ) Devuelve TRUE si el <valor> es TRUE/FALSE, si no devuelve FALSE
ISNONTEXT ( <valor> ) Devuelve TRUE si el <valor> no es un número, si no devuelve FALSE
ISNUMBER ( <valor> ) Devuelve TRUE si el <valor> es número, si no devuelve FALSE
ISTEXT ( <valor> ) Devuelve TRUE si el <valor> es texto, si no devuelve FALSE

Veamos unos ejemplos. Dada la siguiente tabla en PowerPivot (Cualquier parecido con la realidad es pura casualidad :))

image_thumb_7_5E9527B7

Ejecutamos los siguientes cálculos

image_thumb_2_5E9527B7

Siendo

ISBLANK Apellido2: ISBLANK(Tabla[Apellido2]): Devuelve FALSE para las filas de Enrique y Jose ya que tienen apellido en estas filas.

ISERROR NumeroHijos1: ISERROR(Tabla[Numero Hijos]+1): Devuelve TRUE para las dos primeras filas, ya que el tipo de datos, aunque sea una cadena de texto, el intenta hacer un cast a numérico. Para el resto de filas si que puede y devuelve false

ISLOGICAL Casado: ISLOGICAL(Tabla[Casado]): Devuelve FALSE para todos ya que el tipo de dato que utiliza es un tipo cadena. Si nosotros quitamos la ocurrencia “MENTIRA” de la ultima fila y ponemos un valor booleano y además cambiamos el tipo, el comportamiento es el esperado

image_thumb_4_5E9527B7

Por último hacemos los siguientes cálculos:

image_thumb_5_5E9527B7

Siendo:

ISNONTEXT NumeroHijos: ISNONTEXT(Tabla[Numero Hijos]): Todos FALSE, porque esa columna esta declarad como Texto

ISNONTEXT Edad: ISNONTEXT(Tabla[Edad]): Todos TRUE, porque dicha columna esta declarada coVEmo Numérico

ISNUMBER NumeroHijos: ISNUMBER(Tabla[Numero Hijos]): Todos FALSE, porque dicha columna esta declarada como Texto

ISNUMBER Edad: ISNUMBER(Tabla[Edad]): Todos TRUE, porque dicha columna esta declarada como Numérico

ISTEXT NumeroHijos: ISTEXT(Tabla[Numero Hijos]): Todos TRUE, porque dicha columna esta declarada como Texto

ISTEXT Edad: ISTEXT(Tabla[Edad]): Todos TRUE, porque dicha columna esta declarada como Texto

Y bien ¿Esto de que nos sirve?

  1. Limpieza de datos: Si no podemos asegurar que nuestros datos estén los suficientemente limpios para poder operar estos cálculos van a evitar que introduzcamos error.
  2. Realizar cálculos complejos: En columnas de tipo texto  en las cuales tenemos también números gracias a estas operaciones vamos a poder realizar cálculos
  3. BLANK o VACIO: Ojo, esto no es un nulo, es una columna vacía. Cuando nosotros obtenemos datos desde un origen de base de datos, todos los NULL se convierten en BLANK. Gracias a estas operaciones podemos tratarlo.

Como broche, un cálculo con nuestros datos. Vamos a calcular el número de hijos que van a tener dentro de 5 años nuestros amigos. Para eso vamos a obtener el numero de hijos que tienen actualmente, compararemos la edad (si están entre los 20 y 40 años tendrán 1 hijo más) y solo lo tendrán si esta casado. Y todo esto comprobando el tipo de dato:

=IF(Tabla[Edad]>20&&Tabla[Edad]<40,IF(ISLOGICAL(Tabla[Casado]),IF(Tabla[Casado], IF(ISERROR(Tabla[Numero Hijos]+1), BLANK(), Tabla[Numero Hijos]+1) , BLANK()),BLANK()))

Y su resultado

image_thumb_9_0C827A70

Saludos

Referencias

1. Funciones de Información

 

Últimas entradas de Sergio Carrillo (ver todo)