Validación de datos con fórmula de más de 255 caracteres

farreneit Mensajes publicados 280 Fecha de registro   Estado Miembro Última intervención   -  
Raymond PENTIER Mensajes publicados 58211 Fecha de registro   Estado Colaborador Última intervención   -

Hola,

Como indica el título, me gustaría realizar una validación de datos con una fórmula de más de 255 caracteres (varias IFs).

Excel limita a 255 caracteres, así que pensé en colocar mi fórmula en una celda básica y vincular la validación de datos a esa celda. Desafortunadamente no consigo lograrlo...

¿Creen que este método podría funcionar? 

Si es así, ¿cómo? Si no, ¿tienen alguna otra solución?

¡Gracias de antemano y que tengan un buen día!

5 respuestas

  1. DjiDji59430 Mensajes publicados 4278 Fecha de registro   Estado Miembro Última intervención   717
     

    Hola a todos,

    Puedes, por ejemplo, dar nombres a tus condiciones y usarlos en tu fórmula.

    si(condición1;           ;si(condición2;       etc....

    también puedes hacer una tabla de correspondencia condición ==> resultado y usar buscarv()

    en , usar la función FILTRO

    en fin,

    Un archivo EXCEL (prueba o no), completado con explicaciones exhaustivas y ejemplos rellenos a mano, subido a https://www.cjoint.com/ , así como la versión de Excel , permitiría a los participantes responder con mayor precisión a tu pregunta.
    Crdmt

    1
    1. farreneit Mensajes publicados 280 Fecha de registro   Estado Miembro Última intervención   10
       

      Gracias por tu respuesta.

      He aquí la fórmula en cuestión :

       =IF(LEFT(G4,1)>"1",IF(AND(D3="ERMEE",F4=90),OFFSET(Plaque!$AX:$AX,1,0,COUNTA(Plaque!$AX1:$AX3)-2,1),IF(AND(D3="ERMEE",F4=80),OFFSET(Plaque!$AX:$AX,2,0,COUNTA(Plaque!$AX:$AX)-2,1),IF(G4="2H",OFFSET(Plaque!$E:$E,2,0,COUNTA(Plaque!$E:$E)-2,1),IF(OR(G4="3H",G4="4H"),OFFSET(Plaque!$I:$I,2,0,COUNTA(Plaque!$I:$I)-2,1),OFFSET(Plaque!A:A,1,0,COUNTA(Plaque!A:A)-2,1))))),"")

      Mis condiciones son cortas y simples, no creo poder ganar suficientes caracteres con este método.

      No estoy seguro de entender bien la segunda solución pero voy a indagar.

      Actualmente estoy en otra pista que podría funcionar: modificar mi fórmula para obtener una zona en lugar de un offset, y usar un indirect.

      Sí, sé que un archivo es mucho más sencillo para comprender las preguntas y responderlas, pero para ser honesto el archivo es demasiado completo para ser claro y explicarlo.

      Pensé que mi pregunta estaba bien explicada pero al parecer no es el caso. ¡Probablemente debería haber hecho otro archivo para ilustrar...

      0
  2. brucine Mensajes publicados 24790 Fecha de registro   Estado Miembro Última intervención   4 160
     

    Hola,

    En este mismo foro hay un ejemplo de una fórmula mucho más larga en una sola celda que funciona (ya no recuerdo el enlace), busca si te apetece convertir euros de cifras a letras.

    Excel limita el ancho de una columna a 255 caracteres, el número máximo de caracteres de una celda a 32767 y la longitud del contenido de las fórmulas a 8192 caracteres: por tanto, no es la causa de tus problemas, sin embargo, las rutas de nombres de archivos demasiado largas pueden bloquear el guardado.

    0
    1. farreneit Mensajes publicados 280 Fecha de registro   Estado Miembro Última intervención   10
       

      Gracias por la respuesta.

      De hecho, mi fórmula funciona perfectamente en una celda "simple". Excel solo restringe la cantidad de caracteres para la fórmula de la validación de datos.

      0
      1. brucine Mensajes publicados 24790 Fecha de registro   Estado Miembro Última intervención   4 160 > farreneit Mensajes publicados 280 Fecha de registro   Estado Miembro Última intervención  
         

        Y qué es, una fórmula de validación de datos?

        A veces he tenido problemas similares, si es a eso a lo que te refieres, al copiar una fórmula en una celda, sin importar la longitud, después de quitar el signo igual inicial para no desplazar las referencias de celdas y volver a agregarlo: la fórmula se queda literal y no calcula, no hay otra solución que volver a escribirla desde cero.

        0
      2. farreneit Mensajes publicados 280 Fecha de registro   Estado Miembro Última intervención   10 > brucine Mensajes publicados 24790 Fecha de registro   Estado Miembro Última intervención  
         

        Hablo de la fórmula que normalmente se encuentra aquí.

        La fórmula que quería introducir es la siguiente:

         =IF(LEFT(G4,1)>"1",IF(AND(D3="ERMEE",F4=90),OFFSET(Plaque!$AX:$AX,1,0,COUNTA(Plaque!$AX1:$AX3)-2,1),IF(AND(D3="ERMEE",F4=80),OFFSET(Plaque!$AX:$AX,2,0,COUNTA(Plaque!$AX:$AX)-2,1),IF(G4="2H",OFFSET(Plaque!$E:$E,2,0,COUNTA(Plaque!$E:$E)-2,1),IF(OR(G4="3H",G4="4H"),OFFSET(Plaque!$I:$I,2,0,COUNTA(Plaque!$I:$I)-2,1),OFFSET(Plaque!A:A,1,0,COUNTA(Plaque!A:A)-2,1))))),"")

        Pero no funciona porque supera los 255 caracteres ..

        0
  3. farreneit Mensajes publicados 280 Fecha de registro   Estado Miembro Última intervención   10
     

    Para quienes enfrentan el mismo problema, finalmente modifiqué el funcionamiento.

    Fórmula antigua que quería integrar en mi validación de datos (pero era demasiado larga para ser aceptada):

     =IF(LEFT(G4,1)>"1",IF(AND(D3="ERMEE",F4=90),OFFSET(Plaque!$AX:$AX,1,0,COUNTA(Plaque!$AX1:$AX3)-2,1),IF(AND(D3="ERMEE",F4=80),OFFSET(Plaque!$AX:$AX,2,0,COUNTA(Plaque!$AX:$AX)-2,1),IF(G4="2H",OFFSET(Plaque!$E:$E,2,0,COUNTA(Plaque!$E:$E)-2,1),IF(OR(G4="3H",G4="4H"),OFFSET(Plaque!$I:$I,2,0,COUNTA(Plaque!$I:$I)-2,1),OFFSET(Plaque!A:A,1,0,COUNTA(Plaque!A:A)-2,1))))),"")

    Nueva fórmula equivalente (para mí) para colocar en una celda de la hoja:

     =IF(LEFT(G4,1)>"1",IF(AND(D3="ERMEE",F4=90),"Plaque!AX2:AX"&COUNTA(Plaque!AX1:AX1000),IF(AND(D3="ERMEE",F4=80),"Plaque!AX2:AX"&COUNTA(Plaque!AX1:AX1000),IF(G4="2H","Plaque!E2:E"&COUNTA(Plaque!E1:E1000),IF(OR(G4="3H",G4="4H"),"Plaque!I2:I"&COUNTA(Plaque!I1:I1000),"Plaque!A2:A"&COUNTA(Plaque!A1:A1000))))),"")

    Donc cette cellule affichera une zone au format texte (exemple : Plaque!A2:A28)

    Il suffit donc de relier la validation des données à cette cellule (L28 dans mon cas) avec un indirect :

     =INDIRECT(L28)

    Bonne journée !

    0
  4. Raymond PENTIER Mensajes publicados 58211 Fecha de registro   Estado Colaborador Última intervención   17 480
     

    Hola.

    Excel tiene un límite de 255 caracteres, así que pensé en colocar mi fórmula en una celda básica y enlazar la validación de datos a esa celda. Desafortunadamente no consigo lograrlo...

    ¿Crees que este método funcionaría? 

    Si es así, ¿cómo? Si no, ¿piensas en otra solución?

    ¡No! ¡Ninguna posibilidad!

    Como te indicó mi amigo DjiDji, que saludo aquí, habría que probar un enfoque completamente diferente...

    Y como esto se repite 20 veces por semana en nuestras discusiones en CCM, siempre hay que adjuntar un archivo de ejemplo para que la explicación del problema quede debidamente ilustrada, para que se puedan realizar pruebas y que se proponga una fórmula exacta y finalizada.


    Mientras tanto, puedes empezar por reducir de forma drástica el número de caracteres para los nombres definidos (Administrador de nombres) y para el nombre de las hojas (Pestañas).

    Así tu hoja {AB - MTL REGION} podría ser útil rebautizada como {MTLREGION} es decir, 9 caracteres en lugar de 15!

    Y tu rango "Prix de revient final" tendrá la misma eficacia si lo renombras "Revient", es decir, 7 en lugar de 21 ...

    Aquí tienes de hecho un ejemplo concreto, tratado recientemente en este foro :
    https://forums.commentcamarche.net/forum/affich-37674193-comprehension-formules-imbriquees#2


    Bien, ¡la jubilación! Especialmente en las Antillas ...
    Raymond <(INSA, AFPA)>

    0
    1. farreneit Mensajes publicados 280 Fecha de registro   Estado Miembro Última intervención   10
       

      Hola,

      Gracias por su respuesta.

      Le confirmo que la fórmula de validación de datos está limitada a 255 caracteres. ¡Inténtelo, podría sorprenderle! (a menos que haya un tema de versión en juego. ¡Estoy en un archivo xlsm versión 2207 Build 15427.20210 Click to Run).

      En efecto, probablemente debería haber hecho otro archivo para ilustrar el problema; me tomaré el tiempo para hacerlo para la próxima vez.

      Y por último, gracias por esta solución. Es de hecho una solución que había encontrado en otros foros, pero no me convencía... Las rangos provienen de un archivo de Excel externo, por lo que los datos pueden evolucionar y los nombres tendrían que modificarse cada vez.
      De hecho, ya había utilizado este método en una versión anterior de mi archivo, con una macro que permitía actualizar los nombres automáticamente, pero se convirtió rápidamente en una auténtica molestia. Por eso había vuelto a OFFSET.

      0
  5. Raymond PENTIER Mensajes publicados 58211 Fecha de registro   Estado Colaborador Última intervención   17 480
     
    Sorprendido? En absoluto: sé perfectamente que 255 es un límite estructural del software, y mis consejos tenían precisamente como objetivo que tu fórmula cupiera dentro de esos límites de tamaño.

    Cuando guardé a las 17:11 mi respuesta, que había empezado a redactar hacia las 16:26, no había leído los mensajes 2 a 7...

    Espero que de todos estos intercambios puedas haber obtenido pistas eficaces para solucionar tu problema.

    Es buenísimo, la jubilación! Sobre todo en las Antillas...
    Raymond (INSA, AFPA)
    0