miércoles, noviembre 27, 2013

Validación de datos con criterios múltiples

Un lector me consulta como aplicar validación de datos con más de un criterio. Por ejemplo, que en un rango determinado se pueda ingresar valores entre 1 y 10 y que no haya duplicados.

Antes de mostrar la solución, es importante señalar el punto central que el mecanismo de Validación de Datos funciona con fórmulas que dan como resultado VERDADERO o FALSO. Para que el valor a introducir sea aceptado, la fórmula de la validación debe evaluar a VERDADERO.

En nuestro ejemplo queremos que las dos condiciones se cumplan simultáneamente. Para eso debemos usar la función Y. Si queremos aplicar la validación de datos múltiple en el rango B3:B10 usaremos la fórmula

=Y(CONTAR.SI($B$3:$B$10,B3)<2,Y(B3>=1,B3<=10))



Esta fórmula funciona de la siguiente manera:

CONTAR.SI($B$3:$B$10,B3)<2 evalúa si el valor a introducir aparecerá más de una vez. Si el valor ya aparece en el rango, el resultado de esta fórmula es FALSO.

Y(B3>=1,B3<=10)) verifica que el valor a introducir sea mayor o igual a 1 y menor o igual a 10.

Finalmente, la función Y al principio de la fórmula combina ambos resultados dando VERDADERO solamente si ambas condiciones se cumplen.

Si queremos evitar valores duplicados y los valores permitidos van de 1 a 10 y de 20 a 25, es decir, dos intervalos de números, ampliamos nuestra fórmula con la función O

=Y(CONTAR.SI($B$3:$B$10,B5)<2,O(Y(B5>=1,B5<=10),Y(B5>=20,B5<=25)))

La función O da VERDADERO si alguna de las funciones Y que son sus argumentos da VERDADERO.


2 comentarios:

  1. Hola Jorge, he despejado mis dudas en cuanto a la validación de datos, por lo cual agradezco tu colaboración. Podría enviarte un archivo para que lo analices y me pudieras ayudar en lo siguiente:

    Quiero utilizar un userform con Vba para evitar la duplicidad de los datos y ahora no consigo que en ese userform me detenga al intentar vaciar un numero que no corresponde.

    te repito que lo he logrado con la validación y deseo hacerlo con un userform utilizando if then else.

    Espero no incomodar,

    Saludos.

    ResponderBorrar

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