Validación de datos con macros

Saludos,
Necesito validar una celda pero mis reglas de validación son varias anidaciones, por ejemplo, si la Celda b2 dice "Capacitación" y la celda c2 dice "Arquitectónicos" y la d2 dice "Curso" entonces dame el Menú llamado CT_ARQ_CU (esté ya tiene nombre de rango en otra hoja)
Uso algo así Si(y(b2="Capacitación",c2="Arquitectónicos"...),CT_ARQ_CU,si(y(b2="Capacitación",c2="Arquitectónicos",d2="Taller"),CT_ARQ_TA...
Pero las combianciones son demasiadas, tengo Capacitación, servicio, apoyos, otros, para la columna B, y tengo arquitectónicos, maderas, industriales... Para c2, y cursos, talleres, demostraciones, certificaciones... Para D2
Es un mundo de anidaciones por eso mi fórmula es muy grande... Más de 255 caracteres que son el límite. Puedo reducir el nombre de cada clasificación, por ejemplo capacitación por CT, y arquitectónicos por ARQ..., pero incluso las propias fórmulas creo que abarcan los 255...
Lo quiero hacer con macro, pero lo que he intentado no funciona.

1 Respuesta

Respuesta
1
La macro como dices funciona, pero si lo que te manejas son fórmulas, creo que lo mejor es que utilices las fórmulas, el tema de las anidaciones se puede resolver de otra manera, por ejemplo para tu caso en cada condición que quieras poner colocaría que como resultados de verdadero me bote 0, y como resultado de falso me bote 1, pensando que el contro radica en que no existan falsos en todas la condiciones, crearías una ultima columna con la suma de todas tus condiciones y claro si todo es verdadero te daría 0, y por cuantos falsos haya te botaran "1", esto te ayudaría incluso a inspeccionar cual es el problema de manera rápida.
Si esto te sirve no olvides finalizar la pregunta, si consideras que necesitas otra cosa me avisas.
Hola,
No me funcionan los 0 y 1 puesto que tengo un total de 34 menús desplegables diferentes. Y el problema es que el límite de caracteres no me deja terminar mi fórmula, por eso lo quiero poner en macro.
Pues en ese caso habría que ver un ejemplo más concreto, pero te puede decir que con la función if puedes validar la info, pero claro tendrías que hacer un if por cada condición que necesitas, similar que cuando anidas.
if A5 = "1condi" then
if B5 = "2condi" then
if C5 = "3condi" then
Y así sucesivamente hasta que completes tu total de condiciones y pongas por ejemplo
Range("A6").value = "CT_ARQ_CU"
y claro, tienes que terminar los if que abriste, para  mi caso 3
end if
end if
end if
Decidí no hacer macro debido a que la extensión de los archivos cambia y eso generaría un problema con los usuarios de mi formato.
La fórmula quedó de la siguiente forma:
=SI(O(AU2="ST",AU2="AP",AU2="OT"),VACIO,SI(BH2="CTAR",CTAR,SI(BH2="CTIN",CTIN,SI(BH2="CTMA",CTMA,SI(BH2="CTPL",CTPL,SI(BH2="CTTO",CTTO,SI(BH2="CNCI",CNCI,SI(BH2="CNDM",CNDM,SI(BH2="CNFM",CNFM,SI(BH2="CNEI",CNEI,SI(BH2="CNHU",CNHU,VACIO)))))))))))
Pero sólo hay 10 menús, aunque yo quería 34 (eso pues ya ni modo).
Pero me surgió una duda más.
La primera parte de la fórmula donde dice: Si la AU2= ST o AP o OT = VACÍO es porque tengo una celda que se llama VACÍO y obvio no tiene nada.
Pero en ese caso de que no haya un menú necesito que me deje meter cualquier cosa.
¿Eso se puede?
¿En caso de que ninguna de las condiciones verdaderas se cumpla puedo dejar que se capture cualquier cosa?
Hola,
Ya logré desplegar los 34 menús diferentes creando claves en otra columna y usando la función =indirecto(la celda de la clave).
Aún tengo un dolor de cabeza,
Hay condiciones para 34 menús, pero hay otra condición que necesito me deje capturar lo que sea.
¿Hay una fórmula para validar eso?
Si mi celda a1 dice "otro" ya no hagas la validación de celda, deja capturar cualquier cosa, si no, entonces =indirecto(la celda con la clave))
Lo más practico que podrías hacer es que valides un campo de otros, y ese campo de otros lo lleves con fórmulas para que sea igual a las celdas que escribas. Un ejemplo sencillo
Este no es tu caso, solo lo pongo para que entiendas lo que te quiero decir
En mi fórmula de validación pongo A1=B1, y en mi hoja de excel pongo en B1 "=A1!, con estas fórmulas, ponga lo que ponga en B1 la validación me lo va a permitir.
Espero esto te sirva. No olvides finalizar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas