lunes, 16 de enero de 2012

Validacíon de datos vinculada por aproximación en Excel.

Se me planteó una cuestión hace algunos días en la que se necesitaba una adaptación de una Validación de datos, vinculada a otra anterior en nuestro hoja de Excel. En esta ocasión existía la peculiaridad que diferentes elementos de la primera validación nos debían llevar en la segunda a los mismos listados.
Leamos el planteamiento del lector:

...Quiero usar dos listas de validación de datos a efectos de contabilidad. La primera incluye los posibles movimientos, por ejemplo: gasto de efectivo, gasto banco, ingreso de efectivo e ingreso banco. En la segunda columna quiero que la lista desplegable sea condicional en función de si la primera columna se refiere a ingresos o gastos con independencia de que sea de efectivo o bancario (tipos de ingresos o tipos de gastos).
Hasta ahora empleaba una fórmula de la siguiente forma:
=SI(O(K179=$C$6;K179=$C$7);$A$109:$A$116;SI(O(K179=$C$1;K179=$C$2);$A$123:$A$166;0))
El problema es que al ir incluyendo categorías para la primera columna la fórmula se hace enorme y no entra en la casilla de validación de datos.
Necesitaría alguna formula que verificara que K179 es igual a algún valor de un rango para ahorrarme los fórmulas O de muchos parámetros...


El objetivo parece claro, debemos minimizar y abarcar al tiempo el mayor número de tipos de ingresos/gastos. Trabajaremos bajo la hipótesis que los elementos de la primera validación siempre contendrán un texto tipo 'ingreso' o 'gasto' según el tipo de movimiento que se trate. En el ejemplo planteado: 'gasto de efectivo', 'gasto banco', 'ingreso de efectivo' e 'ingreso banco'

Validacíon de datos vinculada por aproximación en Excel.


Observemos el planteamiento, disponemos en el rango A1:A5 los tipos de movimientos, que irán a la primera celda de Validación; y tenemos dos rangos más C1:C6 y E1:E4 para la segunda celda validada condicionada al resultado de la primera. Para trabajar de manera más cómoda, y que pueda funcionar correctamente, hemos asignado nombre a esos rangos:
gasto =Hoja1!$E$2:$E$4
ingreso =Hoja1!$C$2:$C$6
tipo =Hoja1!$A$2:$A$5

En la celda G2 configuramos la primera validación de datos, como tantas veces hemos hecho ya, sobre el rango llamado 'tipo'. Desde la Ficha Datos > Herramientas de datos > Validación de datos:

Validacíon de datos vinculada por aproximación en Excel.


Es en la segunda Validación de datos donde está la clave para completar nuestro ejercicio. La clave es aplicar, en lugar de una búsqueda exacta de los conceptos de 'tipos de ingresos y gastos' (gasto de efectivo, gasto banco, ingreso de efectivo e ingreso banco), aplicar una búsqueda aproximada, por ejemplo con la función HALLAR, que dependa del valor del primer desplegable. Es importante usar, en este caso, la función HALLAR de Excel, ya que ésta nos habilita el uso de comodines y no discrimina las minúsculas de las mayúsculas, lo que nos va bien para globalizar las búsquedas por aproximación.
La fórmula que dispondremos como origen de la celda validada dependiente será:
=INDIRECTO(SI(ESERROR(HALLAR("*ingr*";G2));SI(HALLAR("*gast*";G2)>=1;"gasto");"ingreso"))

Validacíon de datos vinculada por aproximación en Excel.


Esta fórmula dirige hacia los rangos 'ingreso' o 'gasto', en función de si en la primera celda validada existe el texto 'ingr' o 'gast' (en mayúscula o minúscula). La función INDIRECTO es la encargada de convertir las palabras 'ingreso' y 'gasto' en un rango de celdas entendible por la Validación de datos.
Vemos el resultado:

Validacíon de datos vinculada por aproximación en Excel.


En resumen, es suficiente que la primera validación contenga un texto 'ingr' para que la segunda desplegue los elementos del rango 'ingreso', o que contenga el texto 'gast' para que la segunda celda validada condicionada despliegue los elementos del rango 'gasto.

1 comentario:

Nota: solo los miembros de este blog pueden publicar comentarios.