lunes, 17 de octubre de 2011

Validación de datos personalizada.

Solucinaremos el problema de un lector con la Validación de datos de una celda formulada, o lo que es lo mismo con una Validación de datos personalizada:

...estoy trabajando en una hoja de cálculo y pretendo que en una casilla me sume un rango de celdas determinado, hasta aquí facil y sin problema; peró además he intentado introducir en esta casilla una regla de validación mediante la cual si se sobrepasa una cantidad fijada en la regla me salga un mensaje de error y no consigo que funcione, si introduzco directamente una cantidad superior a la permitida en la casilla si que sale el aviso, peró mediante la suma no, no se si es que no permite esta función o si debo hacerlo medianta algun otro sistema....


El problema es claro, en una celda tenemos introducida un fórmula de SUMA sobre otro rango de celdas, y pretendemos que la primera está validada, permitiendo sólo determinado rango de valores; sin embargo, Excel, con esta herramienta de Validación de datos sólo restringe la introducción directa de datos.
¿Cómo solucionar este inconveniente?, atacaremos por detrás a la celda a restringir.
Lo vemos con un sencillo ejemplo como siempre.
Tenemos un rango A1:C1 con diferentes valores, que sumaremos en D1. Será la celda D1 donde sumaremos el rango anterior, esto es, en D1:
=SUMA(A1:C1)
es precisamente la celda D1 la que queremos limitar entre un rango de valores, por ejemplo, que esté entre 5 y 8, es decir, pretendemos que la suma del rango A1:C1 quede siempre dentro del intervalo 5 y 8.


Seleccionamos el rango de celdas A1:C1, y desde la Ficha Datos > Herramientas de datos > Validación de datos


En la pestaña 'Configuración' permitimos Personalizada y en el editable de 'Fórmula' añadimos:
=Y($D$1>=5;$D$1<=8)
y listo.
Hemos conseguido restringir el valor de la celda D1, que provenía de la suma de tres celdas A1:C1, a un importe entre 5 y 8; aunque realmente las celdas validadas sean las del rango A1:C1.
Podemos comprobar como, efectivamente, si intentamos cambiar alguna de las celdas validadas para que la celda D1 incumpla la norma personalizada, nos devuelve el típico error de validación:

139 comentarios:

  1. Hola,
    Al introducir cualquier valor en el rango de validación me continua dando error, aunque este dentro del rango restringido.
    Un saludo.

    ResponderEliminar
  2. Hola,
    la validación restringe que la suma de los tres valores esté entre 5 y 8, no que cada una de las celdas esté entre estos valores...
    He confirmado que funciona como era de esperar, si la suma de los tres valores, en el rango de validación, no está entre 5 y 8, no admite el último valor introducido.
    Slds

    ResponderEliminar
  3. tengo la fecha (dia,mes,año)separadas cada una por columna y necesito colocarlas unidas en una sola columna 12/10/11 hay alguna formula para unirlas?.

    ResponderEliminar
  4. Hola Luis,
    podrías emplear la función
    =FECHA(año; mes; día)
    cada argumento el valor de una celda.
    También podrías emplear (es algo más 'cutre') la función =CONCATENAR(día;"/";mes;"/";año), hay alguna forma más, pero estas son la más sencillas.
    Slds

    ResponderEliminar
  5. si se da click en otra celda aun cuando no cumpla el valor antes de dar enter

    ResponderEliminar
    Respuestas
    1. ???
      Hola, que tal... no me queda claro si es una pregunta , una aclaración o una sugerencia...
      ???

      Slds

      Eliminar
  6. Hola, yo quisiera hacer algo parecido pero no se como
    espero me entienedan y puedan ayudar
    Quiero que en una celda se valide si se escribio el texto correcto, dependiendo de las opciones que yo especifique

    ej,
    quiero que en la celda A1 escriban solo "A" o "B" o "C"

    ResponderEliminar
    Respuestas
    1. Olvidenlo, jaja soy nuevo en las validaciones y no habia visto que esta la opcion lista
      igual gracias

      Eliminar
    2. Hola Cesar,
      efectivamente, la opción de permitir Lista es la adecuada para configurar la celda y restringir sólo a ciertos valores de un listado dado.
      Slds cordiales

      Eliminar
  7. Hola, cómo podría hacer una validación que solo permitiese escribir palabras terminadas en "s" y que además tuvieran una longitud mayor de 5 letras?
    gracias.

    ResponderEliminar
    Respuestas
    1. Hola,
      accede a la Validación de datos personalizada y añade la siguiente fórmula:
      =Y(DERECHA(C3;1)="s";LARGO(C3)>5)
      Saludos

      Eliminar
    2. Muchas gracias!

      Eliminar
  8. yo tengo una duda...

    dependiendo del numero de años trabajados le asigan un valor, que se incrementa una vez alcanzado los 5 y los 15 años.

    Si x <=5 entonces x*4

    SI x > 15, entonces serian 30+(x-15)

    Si esta entre 5 y 15, 20+(x-5)*2

    AL escribirlo todo en excel me sale esta formula, suponienod el valor x en la casilla A1

    =SI(A1<=5,A1*4;SI(A1>=15,30+((A1-15)*1);20+((A1-5)*2)))

    Que es lo que hago mal?? Me sale erro en la formula y me corre mucha prisa

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola que tal?
      lo único que veo mal son las comas en lugar de los puntos y coma, si bien eso depende de tu configuración de sistema, o bien debe ser TODO como o bien todo punto y coma:
      =SI(A1<=5;A1*4;SI(A1>=15;30+((A1-15)*1);20+((A1-5)*2)))
      ó
      =SI(A1<=5,A1*4,SI(A1>=15,30+((A1-15)*1);20+((A1-5)*2)))

      Slds

      Eliminar
    2. Muchisimas gracias !!!

      Eliminar
    3. Yo veo paréntesis innecesarios dado que 30+(x-15)=x+15
      y que 20 + (x-5)*2= 2x+10
      por tanto:
      =SI(A1<=5;A1*4;SI(A1>=15;A1+15;2*A1+10))

      por otro lado, aunque no sé de que se trata, me resulta curiosa la reducción del valor entre A1=14
      que daría 38 a A1=15 que se queda en 30.

      Eliminar
    4. Corcovado,
      Gracias por tu comentario y aporte
      Slds

      Eliminar
  9. hola,saludos, tengo una duda en excel, necesito obtener los diez empleados con mayor antigüedad en una tabla de excel, la tabla contiene en columnas clave, nombre, apellidos, fecha de ingreso, sueldo, departamento y antigüedad, lo he intentado con tablas dinamicas y filtros pero no se como especificar que solo me devuelva los diez empleados más veteranos en la empresa, es una lista de 149 registros, gracias

    ResponderEliminar
    Respuestas
    1. Hola!!
      tienes varias opciones, la más sencilla sería aplicando un Filtro sobre el campo 'Fecha ingreso', en concreto un Filtro de Diez mejores, cunado abra la venta diálogo selecciona Inferiores y 10 elementos (lo que necesites), te mostrará las 10 fechas menores de ese campo... es decir, los diez elementos con más antigüedad.
      Ojo, por que devuelve las 10 fechas menores, si hubiera varias repetidas se podría dar la situación de que te mostrará más de diez registros... en ese caso habría que aplicar algún otro filtro sobre otro campo para 'desempatar'.
      Slds cordiales

      Eliminar
    2. hola Ismael, muchas gracias por tu tiempo en responderme, si me sirvió tu solución, aunque pensé que habría una formula o un criterio de filtro o tabla dinamica para que solo me mostrara los diez registros más antiguos, y si la hay, entonces no pude aplicar bien el filtro como me dijiste, lo que me sucedió fue que me ordeno de fecha menor a mayor y solo seleccioné los diez primeros datos y los demás que no me servían los borré.
      saludos desde México y de nuevo muchas gracias

      Eliminar
    3. Hola,
      lo que te comenté es un criterio de filtro que se puede aplicar sin necesidad de borrar...
      Pero igualmente se puede aplicar el mismmo criterio sobre una Tabla dinámica, con similar proceder..
      En ninguno de los casos es necesario ordenar ni mucho menos borrar los registros.
      Saludos

      Eliminar
  10. Hola Ismael, felicidades por tu valiosa aportación
    tengo el siguiente tema, dos hojas de Excel una con dos datos articulo, numero asignado por personal

    en otro solo tengo el numero de articulo,

    ordeno los dos archivos por numero de articulo,
    pero siempre son diferentes, en uno tengo mas artículos,
    he utilizado desref, concidir, para obtener el numero que se ingresa, el resultado no es el numero consecutivo sino el numero del primer articulo encontrado
    gracias por tu ayuda

    ResponderEliminar
    Respuestas
    1. Hola Muchas Gracias!
      no termino de comprender qué necesitas obtener.
      Entiendo que tienes en dos hojas diferentes unos listados de datos con un campo común que el el número de artículo... pero me pierdo en el fin de conseguir el número que se ingresa ¿te refieres al último número ingresado?.
      Si pudieras enviarme el fichero a
      excelforo@gmail.com
      junto a un ejemplo..
      Saludos cordiales

      Eliminar
  11. Hola,quiero validar los datos en un rango y debe ser de 4 digitosy terminar en 1 , 2 ó 3

    ResponderEliminar
    Respuestas
    1. Hola!
      aplica una validación personalizada con esta fórmula, suponiendo configuras la validación para la celda C2
      =Y(LARGO(C2)=4;O(VALOR(DERECHA(C2))=1;VALOR(DERECHA(C2))=2;VALOR(DERECHA(C2))=3))

      Saludos

      Eliminar
  12. Buenas, deseo proteger una hoja de excel y que solo me permita ingresar texto en un rango determinado, si pongo proteger hoja protege todo

    ResponderEliminar
    Respuestas
    1. Hola Amparo,
      para proteger una hoja pero permitir introducir datos en algunas celdas, primero debes Desbloquearlas y luego proteger la hoja.
      Echa un vistazo a
      http://excelforo.blogspot.com.es/2010/05/proteger-hoja-en-excel.html

      Espero te sirva.
      Slds cordiales

      Eliminar
  13. Hola, necesito saber como introducir en una celda solo letras, pero que la cantidad no exceda de 6 caracteres. Gracias por su ayuda de antemano

    ResponderEliminar
    Respuestas
    1. Hola,
      agrega una Validación de datos personalizada con la siguiente función, suponiendo la celda en cuestión es D3:
      =Y(ESTEXTO(D3);LARGO(D3)<=6)

      Saludos

      Eliminar
  14. Si quiero realizar una validacion pero que no sea numerica,, ejmp
    quiero que dependiendo del valor de una celda colocar una lista, explico:
    A | B
    0-1 -> lista (pañales,talcos,pañitos)
    2-10 -> lista(juguetes,balones)
    11-15 -> lista(mp4,entrada cine)

    Asi que la lista en la columna B debe cambiar dependiendo del valor en la columna A

    ResponderEliminar
    Respuestas
    1. Hola Edwin,
      lo primero sería tener nombradas las tres listas:
      lista1
      lista2
      lista3
      (los nombres que quieras).
      Luego seleccionar la columna B y añadir una validación de datos tipos lista con la fórmula:
      =SI($F$17<=1;lista1;SI($F$17<=10;lista2;lista3))

      Saludos

      Eliminar
  15. buenas tardes quisiera que el usuario solo una letra "X" nada mas como hacerlo en validacion de datos

    ResponderEliminar
    Respuestas
    1. Hola!
      hay varias formas.. una muy sencilla en Validación de datos > tipo Lista y en origen 'X'

      Listo
      Un saludo!

      Eliminar
  16. Hola, felicitaciones por tu aporte =)...quiero hacer una validacion, es un codigo de 7 caracteres, los 3 primeros debe ser "UNI", los 4 sgtes un numero entre 100 y 999....ademas de ser de 3 digitos rellenar con "0".

    Yo lo intente asi:
    =Y(LARGO(B4)=7,IZQUIERDA(B4,3)="UNI",DERECHA(B4,4)=ALEATORIO.ENTRE(100,9999))....pero no resulto. Agradeceria me ayudaras.

    ResponderEliminar
  17. era un numero aleatorio entre 100 y 9999 =P

    ResponderEliminar
    Respuestas
    1. Hola Vanessa,
      prueba con
      =Y(LARGO(B4)=7;IZQUIERDA(B4;3)="UNI";VALOR(DERECHA(B4;4))>=100;VALOR(DERECHA(B4;4))<=9999)

      lo que debes tener claro que es distinto generar una lista de elementos para usarlos en la validación, que utilizar una fórmula personalizada en Validación para admitir los valores que cumplan esa regla...
      esto último es lo que conseguirás...

      Para tener una lista desplegable en la validación tendrás que construirlo en un rango aparte...
      Un cordial saludo

      Eliminar
  18. Como creo una validación de datos, que cuando en la columna U, el valor sea distianto a 0, en la columna V se deba ingresar una palabra cualquiera. Pero cuando U sea igual a 0 no sea necesario ingresar la palabra en V.

    ResponderEliminar
    Respuestas
    1. Hola Ariel,
      la validación de datos en una celda restringe o permite la introducción de valores(texto, fecha, números), pero no puede controlar o forzar al usuario a que ingrese una palabra...
      Saludos

      Eliminar
  19. Hola Ismael ,, una duda ,, como haria la validacion de una celda , dependiente de otra que varia de acuerdo a la celda validada... en la celda B3 que es la que quiero validar , va a depender de la celda E3. que son las existencias actuales , ejemplo ,, en la celda B3 digito 3 salidas , y esta salidas van a depender de las existencias ,, (E3) que hay 5 ,, pero esta celda va a reducir sus existencias al moneto que digite 3 en B3 ,, se me presenta un problema ,,que al momento de darle arriba de 3 salidas me dice que no puedo o me presenta error ,, haber si me puedes ayudar (recuerda que la celda E3, reducira sus existencias al momento de dar ladias ... saludos y gracias por tu apoyo

    ResponderEliminar
  20. Hola:
    Se puede hacer validacion de datos con una funcion de usurario?

    ResponderEliminar
    Respuestas
    1. Hola Sebastian,
      sí, claro... una función definida por el usuario (UDF) e a estos efectos es una función normal, y por tanto se puede emplear.
      Saludos

      Eliminar
  21. Hola de nuevo:
    Cuando intento utilizar una UDF para validación de datos me da un error:
    'No se puede encontrar uno de los rangos especificados'.
    A que puede deber?

    un saludo

    ResponderEliminar
    Respuestas
    1. Hola Sabastían,
      habría que ver la función.. pero si la quieres emplear en una Validación de datos (entiendo para desplegar ciertos valores), tendrías que asegurarte que la UDF tiene la capacidad de reflejar un rango de valores... y claro está, devuelve un rango correcto.

      El error parece indicar que la UDF no está funcionando correctamente en este aspecto, y devuelve un dato/s que no es entendido como rango por Excel.

      Saludos

      Eliminar
  22. Hola de nuevo:

    No se trata de la función en si. Solo por el hecho de introducirla en la barra de formulas de validación me da este error.

    por ejemplo he utilizado lo mas básico:

    function validar()
    validar=true
    end function

    y me da error. Por eso pienso que me estoy saltando algún paso, pero no se cual.
    un saludo

    ResponderEliminar
    Respuestas
    1. Hola Sebastian,
      parece existen restricciones en cuanto al uso de UDF dentro de las validaciones de datos (curioso, por que no en otras funcionalidades, por ejemplo, formatos condicionales).

      la solución consiste en crear un Nombre definido donde incluir la UDF, para luego incorporar el Nombre definido en la validación de datos...
      Algo retorcido, pero no hay más solución...

      Saludos

      Eliminar
  23. Buenas tardes, tengo un problema para hacer una validación de datos, quisiera que me saliera un mensaje de advertencia si dos cantidades provenientes de sumar rangos son diferentes, las cantidades a comparar las obtengo mediante la formula =suma, cada suma toma las cantidades de diferentes rangos pero el resultado debe ser el mismo
    Espero puedas ayudarme

    ResponderEliminar
    Respuestas
    1. Hola Gabi,
      creo que lo más sencillo sería añadir en una celda un condicional comparando ambas celdas con la función suma.
      Por ejemplo, en A1 tenemos
      =SUMA(A2:A10)
      y en B1:
      =SUMA(B2:B10)
      en C1 podemos controlar el hecho
      =SI(A1=B1;"OK";"OJO!!, Diferentes")

      Espero te sirva
      Saludos!

      Eliminar
    2. Gracias Ismael, en mi documento ya tenia esa condicional, solo quería el mensaje para asegurarme que el resultado de las sumatorias siempre fuera el mismo.
      Si se te ocurre algo para lo que busco te lo agradecería muchísimo, si no es posible muchas gracias por tu ayuda
      Saludos!

      Eliminar
    3. Hola,
      creo que habría que tirar de programación.
      Generar un evento change en el código de la hoja para que al cambiar el valor de esas dos celdas, compruebe si son iguales o no.. y en el caso que ocurra lance un MsgBox

      Mira este link
      http://excelforo.blogspot.com.es/2016/03/vba-macro-de-un-filtro-avanzado.html

      Saludos

      Eliminar
  24. Hola, gracias por tu aporte.. la verdad mi conocimiento de macros es prácticamente nulo.. pero encontré una solución a mi problema y quiero compartirla contigo y el foro.
    Sigamos con el ejemplo que pusiste en el comentario anterior
    En A1 tenemos
    =SUMA(A2:A10)
    y en B1:
    =SUMA(B2:B10)
    En la barra de formulas de validación de datos personal escribes lo siguiente:
    =SI(A1=B1,VERDADERO,FALSO)

    Con eso yo resolví mi problema espero le sea útil a alguien más
    Saludos!

    ResponderEliminar
  25. HOLA ISMAEL, MUY INTERESANTE TU PAGINA Y MUY BUENA, ME TOPE CON LA PAGINA POR UNA DUDA QUE TENGO EN LA VALIDACIÓN DE DATOS, QUIERO VALIDAR ESTOS DATOS (0,1,DF,SC,P,RM,NIC,-) EN UNA CEDA, QUE SOLO PUEDA MANEJAR ESTA DATOS AL MOMENTO DE LLEVAR LA PLANILLA, NO PUEDO UTILIZAR LISTA DESPLEGABLE, DEBIDO QUE DEBE LLENAR MUCHA CEDA A LA VES, Y LA LISTA QUITARÍA TIEMPO, HE INTENTADO CON VARIAS FORMULA Y NADA, OBVIAMENTE SU PRINCIPIANTE, TE AGRADECÍA CUALQUIER AYUDAR POSIBLE..... Dili

    ResponderEliminar
    Respuestas
    1. Hola,
      si no quieres/puedes aplicar una validación tipo lista tendrías que optar por una fórmula dentro de la validación de datos personalizada:
      =O(celda=0;celda=1;celda="DF";celda="SC";celda="P";celda="RM";celda="NIC";celda="-")
      'celda' representará la celda activa en el momento de crear la validación.
      Saludos

      Eliminar
    2. MUCHA GRACIAS ISMAEL, HA SERVIDO ES LO Q ANDO BUSCANDO, PERO SE ME ESTA PRESENTADO UNA PREGUNTA, DEBIDO QUE LO HE INTENTADO, COMO TENGO QUE APLICA A VARIAS CELDA DESDE LA L HASTA AY EN FORMA HORIZONTAL, Y DESDE 12 HASTA 56 EN FILA, ESTA FORMULA TENGO QUE IRME A PIEL COLOCAR LA FORMULA EN CADA CELDA UNA POR UNA, O HAY UNA DE MANERA DE APLICARLA PARA TODAS, HE INTENTADO PERO NO HE PODIDO, Y NUEVAMENTE MUCHA GRACIAS POR TU AYUDAD, SALUDO. DILI

      Eliminar
  26. hola Ismael, ya resolvi el problema tuvo un momento digamos de ignorancia, ya mas calmada me vino la respuesta que era copia y pegar en las demás celda, por eso digo fue un momento, por lo general lo que se de excel es ha sido de experiencia vida, y porque me gusta. tengo una curiosidad cuando protege un libro, las misma condiciones de bloqueo en otro libro del mismo archivo, lo que he venido observado es que se realiza un copiado del formato, y se abre un archivo nuevo y se pega quedado el formato en archivo desprotegido para realizar cambio sin la debida autorización, no hay manera para que no ocurra, que pueda proteger el archivo sin que realice la operación mencionada, muchas gracias por tu colaboración y tu ayudad, saludo.. Dili

    ResponderEliminar
    Respuestas
    1. ;-)
      también valdría haber seleccionado el rango y con éste marcado incluir la fórmula en la validación personalizada tomando como celda de la fórmula la celda activa.

      Respecto al Libro protegido (u hoja protegida.. no me queda claro).. no entiendo el planteamiento ???

      Saludos

      Eliminar
  27. :P Hola Ismael, buena datos ya se para la proxima realizarlo de esta forma, en referente al planteamiento tengo un archivo de excel X con un formato protegido, pero viene un operador y copia el formato del archivo protegido, y lo copia en un archivo nuevo y pega, en que pego esta desprotegido para manipularlo y adaptarlo a su manera.

    ResponderEliminar
    Respuestas
    1. :(
      siempre hay formas de saltar por encima de las protecciones de hoja o Libro...
      Saludos

      Eliminar
  28. Hola Ismael, gracias por la información, disculpa que te moleste nuevamente, estoy tratando de realizar una formular una celda, o me aparece error, #!Valor!, o no corre formula como se espero, la idea es que aparezca en la celda el texto APLAZADO, cuando la celda indique que es <=9 NOTA y tiene mayor de 7 inasistencia en caso contrario cuando sea >=10 NOTA APROBADO y tiene menor de 7 inasistencia, por un lado, por el otro lado si la celda indica 0 y mas de 20 inasistencia seria INASISTENTE, y cuando la celda indica 1 menos de 20 inasistencia seria S.INFORMACIÓN. si es un poco enredado, espero que me pueda ayudar, y si me supe explicar, es algo parecido a eso (O13<=9;"APLAZADO";"APROBADO");(SI(U13>=20;"INASISTENTE";"S. INFORMACIÓN", saludo dili

    ResponderEliminar
    Respuestas
    1. Hola,
      entiendo el texto debe aparecer en otra celda, distinta de la celda con Nota e Inasistencias.. si es así, tendrías que aplicar un condicional, con algo más de estructura que el ejemplo que planteas:
      =SI(Y(nota<=9;inasistencia>7);"Aplazado";SI(Y(nota>9;inasistencia<7);"Aprobado";SI(Y(nota=0;inasistencia>20);"S.Información")))

      Espero haberte entendido bien.. no está muy claro la explicación.
      Saludos

      Eliminar
  29. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  30. Hola ismael, mucha gracias por la información me ha servido, no había pasado por aquí, anda un poco full con el trabajo, mucha gracias por tu colaboracion

    ResponderEliminar
  31. uff muy útil y muy bien explicado, tengo una consulta si quisiera un macro que se ejecute cuando una celda cambie de valor, perooo la celda cambia de valor por formula, es algo que se puede hacer?

    ResponderEliminar
  32. Hola Ismael. Necesito hacer una validación de datos personalizada en una columna llamada código que me servirá para una nota de venta. Dicho código debe iniciar forzosamente con las letras "HZ" (Ejemplo HZ-001, HZ123, HZ 01), he intentado con la fórmula =Y(izquierda(a4,2)="HZ") pero no me sale. Me puedes ayudar.

    ResponderEliminar
    Respuestas
    1. Hola Francisco,
      no hace falta la función Y... podría ser:
      =IZQUIERDA(A4;2)="HZ"

      asegúrate que la celda activa corresponde con la celda de la fórmula!!!
      probablemente el fallo esté ahí
      Un saludo

      Eliminar
    2. Hola buen dia!
      Yo tambien necesito hacer eso pero pongo la formula =IZQUIERDA(A4;2)="HZ" y no me la acepta, tambien me fije en que celda lo puse pero aun asi no funciona, no se si podrías ayudarme

      Eliminar
    3. Hola,
      debes seleccionar la celda en cuestión y entrar de Validación de datos personalizada.. en el campo editable incluir dicha fórmula.
      Nada más.
      Asegúrate que empleas el separador de argumentos de tu configuración (a veces es la coma y no el punto y coma)
      Slds

      Eliminar
    4. Si, muchas gracias! Solo puse la coma y funcionó! Gracias!

      Eliminar
  33. me puede brindar formulas para llevara a cabo la validación de datos personalizada

    ResponderEliminar
    Respuestas
    1. Hola Ronaldo,
      cómo estás?, un placer saludarte igualmente,
      Será un placer ayudarte.. pero ¿cuál es el fin de esa fórmula?, ¿qué necesitas hacer?

      Un cordial saludo

      Eliminar
  34. Ismael, de antemano se agradece que gente como tu destine su tiempo en compartir sus conocimientos con quienes nos vamos iniciando. Te comento que hice un sistema de inventarios en excel, pero lo que no he podigo lograr es que al querer dar salida a un artículo sin existencia o con existencia menor a la que tiene, el sistema no me lo permita, pense que talvez a traves de la validación de datos personalizada, pero la vdd es que me revulevo un poco a la hora de querer generar la formula

    ResponderEliminar
    Respuestas
    1. Hola Jorge,
      gracias por tus palabras.
      La validación, en todo caso, se tendría que hacer en esas celdas en las que se recogen las entradas y salidas... por lo que todo depende de cómo esté montado el sistema.
      Por ejemplo, un modelo muy muy simple:
      Celda A2 codigo producto, celda B2 cantidad stock (con la fórmula:=C2-D2+E2
      siendo
      C2 las entradas (manualmente)
      D2 las salidas (manualmente)
      E2 el saldo inicial (manualmente).
      En ese caso seleccionamos C2:D2 y añadimos una validación personalizada con la fórmula:
      =$B$2>=0

      asi nos aseguramos que cualquier cantidad introducida en C2:D2 (entradas o salidas) no permita un stock negativo.

      Espero te oriente
      Saludos

      Eliminar
  35. Hola Gabriel,
    no parece posible a priori, ya que los formatos personalizados afectan a valores numéricos..

    Saludos

    ResponderEliminar
  36. Buenos días. Por favor, tengo preparada la lista desplegable para 5 elementos seleccionables. Pero me gustaría obtener la suma de todos los elementos de la lista deplegable. Hay alguna forma de hacerlo? Muchas gracias por anticipado.

    Dennisse

    ResponderEliminar
    Respuestas
    1. Hola Denisse,
      entiendo quieres obtener la suma acumulada según el elemento desplegado...
      si es así, podrás emplear la función =SUMAR.SI(Rango_evaluación;celda_desplegable;rango_suma)

      Espero haberte comprendido
      Saludos

      Eliminar
  37. Gracias Ismael,
    Estoy usando la función SUMIFS (suma si conjunto) y una de las variables está ligada a una celda con una lista desplegable de 10 elementos. Por lo tanto, las celdas pueden ofrecer hasta 10 resultados diferentes. A la lista despegable, quisiera añadir una opción o condición ( por ejemplo: "ALL") que me permita ver tambíén la suma general de todos los elementos de la lista despegable; es decir, el total sin la segmentación que estoy usando gracias a la lista despegable.
    espero haberme explicado mejor.

    Muchas gracias de nuevo.


    ResponderEliminar
    Respuestas
    1. Hola,
      tendrías que incluir un condicional que gestione esa posibilidad:
      =SI(celda_validada="ALL";SUMIFS(rng_suma;rng:crit1;crit1);SUMIFS(rng_suma;rng:crit1;crit1;rng_crit2;crit2))
      como ves cuando la celda es ALL el SUMIFS no aplica criterio sobre el rango de evaluación 2...

      Espero haberme explicado
      Slds

      Eliminar
  38. Validar el rango a5:a20 para que no reciba codigos duplicados
    Los codigos deben empezar con C y en total tener 5 caracteres (incluyendo la C)
    pongo la formula que me dijo el rofesor pero me sale un error al poner eso
    =Y(CONTAR.SI($A$5:$A$20,A5)=1,LARGO(A5)=5,IZQUIERDA(A5)="C")

    ResponderEliminar
    Respuestas
    1. Hola Elsa,
      que tal estás?, un placer saludarte igualmente...
      He probado la fórmula que planteas y funciona correctamente... quizá el error que te salta sea por el separador de argumentos que estás empleando: coma en lugar de punto ',' y coma ';'
      Prueba:
      =Y(CONTAR.SI($A$5:$A$20;A5)=1;LARGO(A5)=5;IZQUIERDA(A5)="C")

      Un cordial saludo

      Eliminar
  39. VALIDACION DE DATOS:
    Validar el rango B5:B16 para que reciba numeros de DNI
    PERMITIR: Personalizada
    formula: =Y(LARGO(B5)=8,VALOR(B5)>0)
    me sale error

    ResponderEliminar
    Respuestas
    1. misma situación que el anterior:
      =Y(LARGO(B5)=8;VALOR(B5)>0)

      Eliminar
  40. HOLA HERMANO COMO HAGO PARA QUE EN UNA CELDA SOLO PUEDA ESCRIBIR EL PREFIJO "CB" DENTRO DE UNA CELDA Y SI NO ES "CB" QUE ME DE UN ERROR.

    ResponderEliminar
    Respuestas
    1. Hola,
      incorpora una Validación de datos personalizada en la celda (por ejemplo A1) con la fórmula =IZQUIERDA(A1;2)="CB"
      Slds

      Eliminar
  41. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  42. Hola, estoy tratando de validar que se tenga un contenido específico en una celda (si está en blanco no debería dejar)
    tengo esto: =Y(ESTEXTO(H22);H22="Supervisad") en validación de datos personalizado, pero por alguna razón si H22 está vacía, me deja copiar igual. Sabes que puede ser? he intentado con ESBLANCO(), ESNOTEXTO() y H22<>"" pero ninguna me funciona

    ResponderEliminar
    Respuestas
    1. Hola Carolina,
      yo probaría con:
      =Y($H$22="Supervisad";NO(ESBLANCO($H$22)))
      y con la opción que comenta Higinio Zap más abajo : 'omitir blancos' desmarcada
      Un saludo

      Eliminar
  43. ¿Has probado a quitar la opción "omitir blancos"?

    ResponderEliminar
    Respuestas
    1. Gracias por el buen aporte!
      Un saludo

      Eliminar
    2. Higinio, Ismael gracias por el aporte.
      Si probé con la opción "omitir blancos" pero este permite que se elimine el valor de la celda con "Supr", y por alguna razón, cuando coloco NO(ESBLANCO($H$22)) no realiza la validación, como que falla al ponerle la negación... en definitiva tuve que realizar la validación con Macros.
      Muchas gracias :)

      Eliminar
    3. Hola,
      entiendo que la pega era que una vez cumplida la regla de validación, procedías a borrar el dato y te lo permitía?...
      Este sería su comportamiento normal, ya que la validación es una herramienta que controla (permite/restringe) qué se escribe en la celda, pero NO que se borra o pega sobre ella.
      Para esos casos, como bien has indicado, están las macros, y sus eventos asociados al entorno de la hoja de cálculo

      un saludo

      Eliminar
  44. Gracias a ti por el buen trabajo que haces. Te sigo y me ayudas bastante. Si en algo puedo ayudar, mejor. Un saludo enorme

    ResponderEliminar
  45. Siento mucho que no funcionara,pero me alegro de que lo hayas solucionado. Intenté darte una solución que está claro que no sirvió

    ResponderEliminar
  46. HOLA ISMAEL COMO HAGO PARA INTRIODUCIR EN UNA CELDA SOLO NOMBRES QUE EMPIECEN CON C Y TERMINEN CON A GRACIAS DE ANTEMANO

    ResponderEliminar
    Respuestas
    1. Hola,
      probaría con una validación personalizada con la función:
      =Y(IZQUIERDA(celda;1)="C";DERECHA(celda;1)="A")

      Saludos

      Eliminar
  47. Hola, me puedes ayudar? necesito validar lo que se ingresa en una celda, las condiciones son las siguientes:

    Supervisor Senior tiene autorizado gastar
    $35 martes
    $65 miercoles
    $95 jueves

    Gerentes tienen autorizado gastar
    $150 lunes a viernes

    Y todos no pueden gastar más de lo autorizado por día.

    Quiere decir que un supervisor senior los días martes no puede gastar más de $35, y tampoco puede presentar dos o más facturas con la misma fecha si superan el monto autorizado pero si pueden presentar en una factura varios días de alimentos, el mismo caso para los gerentes.

    Entonces en mi base de datos tengo una columna con los puestos, fecha de factura y tiempos de comida y dependiendo que puesto ingresen, la fecha de la factura y cantidad de tiempos de comida (una factura de un día martes me dice que pagaron 2 tiempos de comida y gastaron $70 será permitido el ingreso porque gasto $35 por día.

    La formula que hice para validar, monto, días autorizados, tiempos de comida y puesto es la siguiente:


    En el libro tengo otra hoja donde estan las políticas de gastos, HOJA "Politica"
    En la hoja politica los datos estan ordenados de la siguiente forma:
    *aquí te separo cada columna con |
    Codigo (concatenacion de Puesto, descripción, dia) | Puesto | Descripción | Dia|


    En mi base de datos tengo los datos en la columna " "
    En la columna "G" ingresan el puesto
    En la columna "M" ingresan fecha de factura
    En la columna "O" ingresan días de comida por factura
    En la columna "Q" se ingresa el monto de las facturas

    Formula elaborada en la celda "Q3222"

    =SI(G3222="Supervisor Senior";Y(BUSCARV(G3222&"Alimentación"&DIASEM(M3222);Politica!$B$2:$F$65;4;0)>=(Q3222/O3222);SUMAR.SI.CONJUNTO($Q$2:Q3222;$M$2:M3222;M3222;$F$2:F3222;F3222)<=BUSCARV(G3222&"Alimentación"&DIASEM(M3222);Politica!$B$2:$F$65;4;0));Y(BUSCARV(G3222&"Alimentación";Politica!$B$2:$F$65;4;0)>=(Q3222/O3222);SUMAR.SI.CONJUNTO($Q$2:Q3222;$M$2:M3222;M3222;$F$2:F3222;F3222)<=BUSCARV(G3222&"Alimentación";Politica!$B$2:$F$8;4;0)))

    El problema es que la formula es muy larga y no me permite ingresarla en la validación de datos, lo puedo hacer con otra formula?

    ResponderEliminar
    Respuestas
    1. Hola,
      se me ocurre que en tu fórmula sustituyas esos rangos y funciones por Nombres definidos 'más cortos'; por ejemplo, con toda esta parte:
      Y(BUSCARV(G3222&"Alimentación"&DIASEM(M3222);Politica!$B$2:$F$65;4;0)>=(Q3222/O3222);SUMAR.SI.CONJUNTO($Q$2:Q3222;$M$2:M3222;M3222;$F$2:F3222;F3222)<=BUSCARV(G3222&"Alimentación"&DIASEM(M3222);Politica!$B$2:$F$65;4;0))

      podrías crear un nombre definido... y sucesivamente.
      Finalmente, podrás crear tu validación de datos personalizada

      Espero te sirva la idea
      Saludos

      Eliminar
  48. Hola, tengo un problema con una validación personalizada sobre una celda con fórmula.
    La fórmula que tengo en la columna P es la siguiente: =+SI(Y(O3>=6;O3<=11);"1";SI(Y(O3>=12;O3<=17);"2";SI(Y(O3>=18;O3<=29);"3";SI(Y(O3>=30;O3<=47);"4";SI(Y(O3>=48;O3<=71);"5")))))
    y el resultado que arroja puede ser: 1,2,3,4 o 5.
    Yo necesito validar otras celdas en función de cada uno de estos resultados pero si pongo en la fórmula de validación personalizada =$P3=1 no me toma la validación y no sé que estoy haciendo mal.
    Saludos y gracias!

    ResponderEliminar
    Respuestas
    1. Hola
      una validación personalizada debe retornar VERDADERO o FALSO para verificar si admite el valor introducido (1,2,3,4...), así pues debes convertir tus condiciones en fórmulas lógicas. Algo así:
      en P3 incorporas la validación personalizada:
      =O(Y(P3=1;O3>=6;O3<=11);Y(P302;O3>=12;O3<=17); etc...

      Saludos

      Eliminar
  49. Hola Ismael,

    De antemano agradecerte por los tremendos aportes y el seguimiento constante de las consultas. Me ayudaron mucho.

    Mi consulta. Llevo una tabla de ventas de almuerzos y los datos que ingreso en ella son el día de la compra, nombre del comprador, la empresa en cual se encuentra y el almuerzo escogido.

    Hice una hoja donde va la tabla a rellenar, otra con listas de clientes encabezadas con su empresa y otra con los almuerzos encabezados por el día (cada día son distintos almuerzos).

    En la tabla que relleno, validé con lista toda la columna de empresa, así al escoger la celda, solo puedo elegir las empresas que figuren en la hoja.

    Lo que necesito hacer, es que la columna de clientes este condicionada por la empresa. Y que la columna de almuerzos este condicionada por el día.

    Supongo que el condicionamiento es el mismo, pero lo aclaro por si el hecho de que el día este en número (ej: 01, 02, etc) puede cambiar algo.

    Las Hojas son así:

    Hoja a rellenar
    |DIA |NOMBRE |EMPRESA |PLATO|
    ----------------------------------------
    |01 |PEDRO |BANCO ITAU |LASAÑA|
    |02 |JUAN |BANCO BBVA |LOMO SALTADO|

    Hoja de clientes
    | BANCO ITAU |BANCO BBVA|
    --------------------------------
    |PEDRO |JUAN|
    |JOSE |CARLOS|

    Hoja de almuerzos
    | 01 | 02 |
    --------------------------------
    |LASAÑA |LOMO SALTADO|
    |ENSALDA |CHARQUICAN|

    Espero puedas ayudarme. De todos modos estoy muy agradecido.
    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola Pablo,
      lo que buscas es lo que se conoce como validación anidada.
      Puedes ver un ejemplo que seguro te servirá en:
      http://excelforo.blogspot.com.es/2010/04/validacion-de-celdas-anidadas-y.html

      Espero haberte entendido bien
      Un saludo cordial

      Eliminar
  50. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  51. Hola, tengo en una planilla en dos columnas aplicado validación de datos, funciona perfecto, el tema es que necesito insertar renglones en la planilla y no me deja. Es posible insertar renglones en la planilla? no en lista de verificación. Gracias

    ResponderEliminar
    Respuestas
    1. Hola Elvia Mabel,
      sí es posible... bastaría señeccionar las filas que necesitaras e Insertar desde el botón derecho del ratón (por ejemplo).
      Saludos

      Eliminar
  52. Hola buenas tardes.... quisiera si me pudiera ayudar, lo que pasa que manejo algunos descuentos por ejemplo si un empleado labora 1 dia se le descuentan $15, 2 y 3 $30, 4,5 y 6 $50, y si se pudiera que solo con llenar sus asistencia aparezca que descuento le corresponde...


    Saludos

    ResponderEliminar
    Respuestas
    1. Hola Mary,
      el descuento lo debes obtener en una celda contigua a la que introduces los días trabajados. Si en A1 añades los días, en B1 por ejemplo, puedes insertar:
      =SI(A1=1;15;SI(A1<=3;30;SI(A1<=6;50)))
      al tenerlo formulado funcionará como quiers

      Saludos

      Eliminar
    2. Es Usted muy amable ya le estuve intentando y me manda una corrección de SI PRUEBA LOGICA- FALSO O VERDADERO, se que debe funcionar pero no se que estoy haciendo mal :(

      Eliminar
    3. Hola,
      es una fórmula condicional (probada) a insertar en la celda
      Qué error concreto te devuelve??
      Asegúrate en todo caso que tu separador de argumentos es el ; y no la ,

      Slds

      Eliminar
    4. tenia Usted razón era (,) muchas gracias esto disminuirá mucho el tiempo que empleaba para eso y sobre todo los errores.... es Usted muy muy amable, que Dios lo bendiga siempre,,....

      Eliminar
  53. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  54. Hola, deseo crear una lista de palabras que cuando alguien intente escribir alguna de ellas en determinada columna, rechace la entrada.

    Caso:
    Tengo la columna A y van a escribir, en las celdas de esta columna, una lista de nombres de canciones. Deseo que cuando alguien escriba en una de esas celdas, cualquiera de las palabras que está en la "lista de palabras no permitidas", automáticamente, niegue la entrada del nombre de la canción.

    Ejemplo:

    Alguien escribe: "Moonlight sonata" (Pero la palabra "sonata" está en mi lista de palabras no permitidas).

    Automáticamente la hoja de excel, no permitirá que la canción "Moonlight sonata" quede en la celda.

    ¿Existe alguna validación personalizada para que esto sea posible?

    Agradezco tu ayuda.

    ResponderEliminar
  55. Esto lo he logrado, pero únicamente con una sola palabra. Necesito que sea una toda una lista de palabras que no estén permitidas en dichas celdas.

    ResponderEliminar
    Respuestas
    1. Hola,
      echa un vistazo a este post:
      http://excelforo.blogspot.com.es/2017/09/encontrar-palabras-de-una-lista-en-una-celda.html

      y llegas a la conclusión que la fórmula que buscas para añadir a la validación personalizada:
      =ESERROR(ENCONTRAR(INDICE(Lista;SUMAPRODUCTO(ESNUMERO(HALLAR(Lista;A2))*(FILA(Lista)-1)));$A2)>0)

      Saludos

      Eliminar
  56. hola deseo Relizar una validación de datos personalizada que impida que las cantidades que ponemos en la columna de costos exceda el total del presupuesto.
    el presupuesto es de 25,000 y los conceptos de costos son luz, renta, comida y extras.
    agradecería mucho tu ayuda

    ResponderEliminar
    Respuestas
    1. Hola,
      habría que conocer la distribución de las columnas..
      supongamos los conceptos están en las columnas B:E
      seleccionamos el rango B2:E2 y añadimos la validación de datos personalizada:
      =SUMA($B2:$E2)<=25000

      Saludos

      Eliminar
  57. Hola,
    necesitarás incluir este sencillo procedimiento en la ventana de código de la hoja:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Value < 5 Then
    Target.Value = 5
    ElseIf Target.Value > 10 Then
    Target.Value = 10
    End If
    End Sub

    Saludos

    ResponderEliminar
  58. Hola. Tengo una consulta. Como podría hacer para que según los códigos de una hoja, me salgan los destinos en otra. (=buscarv(d4;d1:f7;2;0)hasta ahí llegue bien), pero esa formula no me la deja usar en validacion de datos. Además si no esta el codigo tendria que ingresar el destino a mano... Alguna idea de como y que formulas tengo que concatenar?

    ResponderEliminar
    Respuestas
    1. Hola,
      si he entendido correctamente es incompatible lo que pretendes... no es posible incluir una validación de datos en una celda con fórmula (no aplicaría), y menos aún si además tienes que escribir manualmente algo sobre ella (la fórmula desaparecería).
      :(

      Saludos

      Eliminar
  59. HOLA, NECESITO UNA REALIZAR VALIDACION DE DATOS EN EXCEL TENGO UNA LISTA DE TIPOS DE VEHICULO AUTOMOVIL, CAMIONETA Y BUS PERO ME PIDEN QUE SE RENTA UN MAXIMO DE 2 ASIENTOS SI EL TIPO DE VEHICULO ES AUTOMOVIL O CAMIONETA Y SE PUEDEN ALQUILAR HASTA CUATRO ASIENTOS SI EL VEHICULO ES BUS COMO PUEDO HACER LA FORMULA EN PERSONALIZADA PARA LA VALIDACION DE DATOS.

    ResponderEliminar
    Respuestas
    1. Hola,
      aunque no están claras las condiciones podrías implantar una validación personalizada en la celda donde añadir el número de asientos:
      =SI(C3="automovil";D3<=2;SI(C3="camioneta";D3<=4;SI(C3="bus";D3>4)))

      suponiendo en C3 el tipo de vehículo y en D3 el número de asientos..

      Saludos

      Eliminar
    2. Pues el ejercicio está planteado de la siguiente manera:

      A) deberá marcar con una "X" solo con una X el tipo de vehículo de interés, (B19,B20,B21) solo está permitido seleccionar un tipo de vehículo una vez,si selecciona Automóvil(B19) ya no podrá marcar camioneta (B20) o microbús (B21).

      B) LA empresa brinda el servicio de renta de artículos extras.

      ✓asientos para niños(B25): se renta como máximo 2 asientos si el tipo de vehiculo es automóvil o camioneta y de podrán alquilar hasta cuatro asientos si alquila microbús.
      ✓ Se puede rentar cualquier cantidad de teléfono celular (B26)

      ✓ Se puede alquilar como máximo una hielera.

      ✓ únicamente se puede pagar el servicio de un conductor adicional (B28).

      Espero que me pueda ayudar son varias validaciones de datos que tengo que realizar de forma personalizada..

      Eliminar
    3. Hola,
      para el caso A), selecciona las tres celdas B19:B21 y añade la validación personalizada con fórmula:
      =CONTAR.SI($B$19:$B$21;"x")=1

      Para el B, revisa la idea propuesta en el comentario anterior...
      Saludos

      Eliminar
  60. Buen día Ismael, gracias por el aporte brindado a la pagina, estoy intentando validar los datos de DNI con valores que empiece con 0, al usar la formula Y(LARGO(H2)=8,VALOR(H2)>0) todo bien pero cuando dígito el 01234567 (8 números) no permite y cuando digito 012345678 (9 números) si acepta porque se borra el 0 como puedo solucionarlo.
    Muchas gracias por el apoyo.

    ResponderEliminar
    Respuestas
    1. Hola!
      yo probaría introduciendo el número como texto...
      bien cambia el formato de celda a texto o bien comienza con apostrofe y los dígitos ('01234567)
      Espero te sirva
      Slds

      Eliminar
    2. Muchas gracias por la respuesta, si he probado de la misma manera y si funciona pero quería validar si se puede con la opción de validación de datos.

      Saludos.

      Eliminar
    3. el tema es que la validación de datos solo 'entra en juego' cuando se escribe/introduce algo en una celda... hasta que no está escrito (no se valida) no salta la funcionalidad...
      Saludos

      Eliminar
  61. Hola me pueden ayudar debo realizar una validación que me permita crear una contraseña de 6 caracteres mínimo, con la inicial en mayúsculas y el último carácter debe ser un número. gracias

    ResponderEliminar
    Respuestas
    1. Hola,
      es algo largo, pero la fórmula en tu celda C5 validada podría ser:
      =Y(IGUAL(IZQUIERDA(C5;1);MAYUSC(IZQUIERDA(C5;1)));LARGO(C5)>=6;ESNUMERO(VALOR(DERECHA(C5;1))))

      Saludos

      Eliminar
  62. Hola, ¿como puedo hacer para que no me deje capturar nada si en la celda (hrasalida) no se ha capturado la hora?

    Gracias por tus maravillosos aportes

    ResponderEliminar
    Respuestas
    1. Hola,
      entenderé que por capturar quieres decir escribir algo en una celda.

      Si es así, la validación de datos personalizada en la celda en cuestión sería:
      =CONTAR.BLANCO(celda hrsalida)=0

      Saludos

      Eliminar
    2. Muchas gracias, eres lo maximo.

      Eliminar
  63. Hola Sebas,
    es algo raro lo que comentas... las validaciones 'no desaparecen' solas.. quizá haya otro proceso (o macro) que interactúe en esas celdas.

    tienes que seleccionar el rango completo, por ejemplo A3:A10 y aplicar la validación de datos personalizada con la fórmula
    =$a3<>"" y desmarcas la opción de 'Omitir blancos'
    pero OJO!!, cualquier validación al respecto que incorpores te va a exigir que entres en la celda y salgas sin escribir nada para que salte la regla de validación!!!
    Slds

    ResponderEliminar
  64. Hola,
    si es raro...
    si quieres envíame el fichero a:
    excelforo@gmail.com
    y lo reviso
    P.D.: indícame qué celdas tendrían esa validación

    Saludos

    ResponderEliminar
  65. Buen dia. como aria una validación para que en una fila de datos solo permita agregar un valor y tras introducir un dato en otra celda diferente el anterior lo elimine...

    ResponderEliminar
    Respuestas
    1. Hola,
      esto no es posible con la validación de datos... necesitarás algo de programación. Quizá un evento de hoja _Change que borre una celda tras el cambio de otra ¿?

      Slds

      Eliminar
  66. Buenos dias, como puedo validar 3 celdas para que en solo una de ellas se escriba una "x", y en las demas ya no permita escribir ningun dato, indistintamente de cual de las celdas este con una "x", agradeceria que me ayuden, gracias de antemano......

    ResponderEliminar
    Respuestas
    1. Hola!
      ya hay un comentario similar más arriba ;-)
      Sería un validación de datos personalizada.
      Selecciona las tres celdas y aplica la validación con la fórmula:
      =CONTAR.SI($D$5:$F$5;"x")<=1
      suponiendo las tres celdas sean D5:F5

      Saludos

      Eliminar

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