Verificar la conformidad de una matrícula

Resuelto
bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención   -  
bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención   -
Hola,

Deseo verificar en celdas de Excel la conformidad de matrículas bajo el formato siguiente "AA-123-CC".

Me gustaría que si la celda tiene este formato correcto con los 2 "-" entonces devuelva el valor 1, de lo contrario el valor 0.

Gracias por su ayuda

Atentamente.

19 respuestas

  1. bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención  
     
    Información adicional, el número de placa me es proporcionado por un proveedor (una gran lista de varios cientos de placas) y quiero asegurarme de que no haya un error, como una letra o un número faltante.
    Además, no logro entender el razonamiento con la función IZQUIERDA.
    0
    1. alexdu17200 Mensajes publicados 1579 Estado Miembro 841
       
      No suelo usarlo a menudo, pero acabo de probarlo en Excel, así que:
      Tengo mi celda A1 que contiene "AA-123-CC", le digo a la celda al lado, =IZQUIERDA(A1;2), me devuelve "AA", es decir, los 2 primeros caracteres de la celda A1.
      Y la función IZQUIERDAB funciona igual, salvo que un solo carácter equivale a 2, así que si pones IZQUIERDAB(A1;2 obtendrías "AA-1", esta última no le veo mucho sentido.
      0
    2. bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención  
       
      Lo que deseo, por ejemplo, es que si la persona introduce la matrícula:
      AA-12-CC : Falso
      A-123-f : falso
      AA-123-CC : VERDADERO
      0
    3. alexdu17200 Mensajes publicados 1579 Estado Miembro 841
       
      Tienes la función NBCAR() que te devuelve el número de caracteres, luego haces un control sobre este número
      MAJUSCULE() para pasar toda tu celda a MAYÚSCULAS.

      Si he entendido bien, tu placa debe tener el formato siguiente "XX-111-XX" donde X es una letra y 1 es un número, por lo tanto, puedes verificar que =CHERCHE("-",A1) te devuelve 3 (la posición de "-" en la cadena) y luego verificas que =CHERCHE("-",A1;(B4+1)) donde B4 es la posición del primer carácter "-" es 7.
      0
  2. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    Intenta con esto para probar la celda A1, la fórmula se debe incrementar hacia abajo según la altura de tu lista de datos

    = SI(SUMA(LARGO(A1)-LARGO(SUSTITUIR(A1; "-"; "")))/LARGO("-")=2;1;0)

    También puedes forzar la entrada, por ejemplo, resaltar el rango A1:A100, luego Datos/Validación de datos/seleccionar Personalizado en Permitir y pegar esta fórmula en Fórmula

    = SUMA(LARGO(A15)-LARGO(SUSTITUIR(A15; "-"; "")))/LARGO("-")=2

    Luego, en la pestaña Alerta de error puedes ingresar un título y un mensaje como que la entrada no es conforme, etc.

    Si esta solución te interesa, buscaré un código para imponer el guión después de dos dígitos y antes de los dos últimos

    A+
    Mike-31

    Un período de fracaso es un momento ideal para sembrar las semillas del conocimiento.
    0
  3. Mazzaropi Mensajes publicados 1983 Fecha de registro   Estado Colaborador Última intervención   72
     
    bod77, Hola.

    "...Me gustaría que si la celda tiene este buen formato con los 2 "-", entonces devuelva el valor 1, de lo contrario, el valor 0. ..."

    A1 = AA-123-CC

    Intenta usar esta fórmula.
    B1 --> =SI(Y(EXTRAE(A1;3;1)="-";EXTRAE(A1;7;1)="-");1;0)

    ¿Era eso lo que querías?
    Espero haber ayudado.
    --
    Belo Horizonte, Brasil.
    Marcílio Lobão
    0
  4. bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención  
     
    Gracias Mazzaropi, esto funciona, me quitas una espina del pie

    Gracias también a los demás por la ayuda
    0
  5. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    Hola a todos

    Y si queremos probar todos los caracteres de la matrícula (pero no tenemos en cuenta las letras prohibidas)
    =SI(NBCAR(A2)=9;SI(ET(ET(CODE(STXT(A2;1;1))>=65;CODE(STXT(A2;1;1))<=90);ET(CODE(STXT(A2;2;1))>=65;CODE(STXT(A2;2;1))<=90);STXT(A2;3;1)="-";ET(CODE(STXT(A2;4;1))>=48;CODE(STXT(A2;4;1))<=57);ET(CODE(STXT(A2;5;1))>=48;CODE(STXT(A2;5;1))<=57)*ET(CODE(STXT(A2;6;1))>=48;CODE(STXT(A2;6;1))<=57);STXT(A2;7;1)="-";ET(CODE(STXT(A2;8;1))>=65;CODE(STXT(A2;8;1))<=90);ET(CODE(STXT(A2;9;1))>=65;CODE(STXT(A2;9;1))<=90));1;0);0)

    Cdlmnt
    0
  6. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Re,

    vuelvo a la carga con mi propuesta de lista de validación, en mi propuesta anterior, si reemplazamos mi fórmula por esta última, será imposible no respetar la entrada de dos letras, el guion, un número aleatorio, un guion y dos letras para terminar

    =Y(ENCONTRAR("-",A18)=3;LARGO(A18)-(ENCONTRAR("-",A18;4)-1)=3)

    A+
    Mike-31

    Un período de fracaso es un momento ideal para sembrar las semillas del conocimiento.
    0
  7. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    Hola Mike

    Con tu última propuesta esto está aceptado
    $p-123-!m o 12-123-12
    Además, creo que algunas letras (O, I, U) no son válidas en un número de matrícula

    Saludos
    0
  8. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Re,

    Gracias ccm, sí, es exactamente eso, pero mi fórmula se basa en dos caracteres y un guion al principio, un mínimo de tres caracteres en el centro y un guion y dos caracteres para terminar.
    Si la entrada no es conforme, mensaje de error personalizado.

    Adjunto archivo de ejemplo para aquellos que siguen la discusión.

    https://www.cjoint.com/?DDzt5hae6UY

    --
    A+
    Mike-31

    Un período de fracaso es un momento ideal para sembrar las semillas del conocimiento.
    0
  9. bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención  
     
    Una vez más, muchas gracias a todos por su ayuda que me ha sido muy valiosa.
    0
  10. bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención  
     
    Hola,

    Ahora debo realizar una prueba de Excel sobre las antiguas matrículas para saber si son válidas durante la entrada de datos.

    ¿Puede ayudarme de nuevo?

    Gracias de antemano.
    0
  11. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Re,

    Explica lo que quieres, después veremos si es posible

    --
    A+
    Mike-31

    Un período de fracaso es un momento ideal para sembrar las semillas del conocimiento.
    0
  12. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    Hola,

    por diversión con funciones personalizadas


    Opción Explícita
    '-------
    ''placas antiguas
    Función Verifier_oldplaque(Placa Como String) Como Boolean
    Dim Separe, Nbre_letras Como Byte
    Dim Reg Como Object
    Dim Verif Como Object

    Separe = Split(Placa)
    Establecer Reg = CreateObject("vbscript.regexp")
    Con Reg
    Si Len(Separe(1)) < 3 Entonces
    .Patrón = "^[0-9]{1,4}[\s][A-Z]{1,2}[\s][0-9]{1,2}$"
    Sino
    .Patrón = "^[0-9]{1,3}[\s][A-Z]{1,3}[\s][0-9]{1,2}$"
    Fin Si
    Establecer Verif = .Ejecutar(Placa)
    Fin Con
    Verifier_oldplaque = (Verif.Count = 1)
    Fin Función
    '------------------------------------
    'nuevas placas
    Función Verifier_newplaque(Placa Como String) Como Boolean
    Dim Reg Como Object
    Dim Verif Como Object

    Establecer Reg = CreateObject("vbscript.regexp")
    Con Reg
    .Patrón = "^[A-Z]{2}[-][0-9]{3}[-][A-Z]{2}$"
    Establecer Verif = .Ejecutar(Placa)
    Fin Con
    Verifier_newplaque = (Verif.Count = 1)
    Fin Función


    --
    Michel
    0
    1. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      Re,
      Por MP, Eriic me acaba de señalar que las I, O, V estaban prohibidas en las placas, así como "WW" y "SS".
      Así que mis juguetes propuestos esta mañana no son válidos.

      Lo siento.
      0
    2. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      No son inválidas, pero podemos afinar el resultado ;)
      Por cierto, me equivoqué, es la U en lugar de la V que no se utiliza.
      Esto es donde estoy:
      Function plaqueOK(Plaque As String) As Boolean Dim Separe, Nbre_lettres As Byte Dim Reg As Object Dim Verif As Object Set Reg = CreateObject("vbscript.regexp") With Reg If InStr(Plaque, "-") > 0 Then ' nueva placa ' 2 letras-3 números-2 letras .Pattern = "^[A-HJ-NP-TV-Z]{2}[-][0-9]{3}[-][A-HJ-NP-TV-Z]{2}$" Else ' placa antigua Separe = Split(Plaque) If Len(Separe(1)) < 3 Then ' 1 a 4 números, 1 o 2 letras, 2 números .Pattern = "^[0-9]{1,4}[\s][A-HJ-NP-TV-Z]{1,2}[\s]((0[1-9])|([1-8][0-9])|(9[0-5])|(2[AB]))$" Else .Pattern = "^[0-9]{1,3}[\s][A-HJ-NP-TV-Z]{3}[\s]((0[1-9])|([1-8][0-9])|(9[0-5])|(2[AB]))$" End If End If Set Verif = .Execute(Plaque) End With plaqueOK = (Verif.Count = 1) End Function

      Controla las placas antiguas y nuevas, letras válidas y departamentos del 01 al 95 (con 20, 2A, 2B aceptados).

      Aclarar que he hecho esto a partir del trabajo de Michel porque estoy descubriendo las regex. Estoy lejos de poder garantizar una corrección a una posible anomalía constatada.
      https://www.cjoint.com/?DEytTaOcdtW

      eric
      0
  13. Raymond PENTIER Mensajes publicados 58213 Fecha de registro   Estado Colaborador Última intervención   17 482
     
    Para ser exhaustivos y evitar ser acusados de ostracismo, tenga en cuenta que las antiguas placas en los departamentos de Ultramar terminan con
    3 cifras
    : 971 = Guadalupe, 972 = Martinica, 973 = Guayana, 974 = Reunión.
    también verifique cuál es la regulación para Mayotte, Nueva Caledonia, Tahití, Wallis y Futuna, San Pedro y Miquelón, etc.

    ¡Gracias por nosotros!

    --
    ¡Está bien, la jubilación! Sobre todo en las Antillas ... :-)
    ☻ Raymond ♂
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      Hola Raymond,

      ¿Y cuántos dígitos al principio y letras son posibles?
      Me informé. Si sabes lo que significa la parte subrayada:
      Los departamentos y colectividades 971 a 978 utilizan un sistema idéntico al utilizado en metrópoli con un máximo de nueve caracteres, siendo los dos primeros dígitos del número de departamento cada vez más frecuentemente superpuestos para reducir el número máximo de caracteres a ocho.
      ¿Qué se debe entender? ¿97?
      Además, hablan de un máximo de 9 caracteres cuando en metrópoli son 8. Me parece extraño... Todo eso es demasiado confuso.
      El problema es que si las reglas no son claras y exhaustivas, muchas placas válidas serán anunciadas como falsas.
      Para las otras islas, hay demasiados casos particulares.

      Eric
      0
    2. Raymond PENTIER Mensajes publicados 58213 Fecha de registro   Estado Colaborador Última intervención   17 482
       
      https://www.cjoint.com/?DEAfNIpQQyP

      Efectivamente, esa era mi forma de señalar que esta "prueba de conformidad" estaba lejos de cubrir todos los casos posibles. Al igual que el corrector ortográfico y gramatical de Word, es una ayuda interesante, pero no cubre el 100% de las situaciones.

      Amistosamente.
      0
    3. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      Nunca habría imaginado eso...
      Integrado en una nueva versión un poco más completa (ver más abajo)
      eric
      0
  14. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
     
    HOLA?


    Eric,
    Con respecto a los DOM, quizás añadir un "O" con 97[1_8]
    Para los TOM, el sistema es diferente: generalmente son números seguidos de 1 o 2 letras (P para Polinesia)

    pero la numeración de las antiguas placas es en realidad complicada con p+q+n +1 excepciones y algunos nichos fiscales ;o)
    la fuente:
    https://fr.wikipedia.org/wiki/Plaque_d%27immatriculation_fran%C3%A7aise

    así que deberíamos saber dónde el solicitante desea limitar su control

    Buen domingo a todos

    --
    Michel
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      Hola Michel,

      De acuerdo, esperaré a que se asiente un poco antes de añadir. Para los TOM haremos como con las motocicletas: caeremos en el ostracismo.
      Y si queremos ser exhaustivos, he encontrado un sitio interesante: http://plaque.free.fr/f_f.html :-)
      Eric
      0
  15. bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención  
     
    Hola

    La prueba debe hacerse en Excel pero con una fórmula SI y no a través de una macro (lo siento) Basado en las antiguas matrículas.
    Debo verificar que el formato sea correcto =>
    ejemplo: 3711 LL 77 o 3711 LLL 77 o 371 LL 974 por ejemplo. Si está bien, debe devolver el valor 1, de lo contrario 0. También si 371 L 99 es incorrecto, por ejemplo.

    Espero haber sido lo suficientemente claro. Gracias por tu ayuda de nuevo.
    0
    1. michel_m Mensajes publicados 18903 Fecha de registro   Estado Colaborador Última intervención   3 320
       
      ¿Estás seguro?
      0
    2. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      ¿Y por qué no por macro? ¿Una alergia?
      4 ejemplos, de los cuales 1 falso, no son suficientes, se necesita una lista exhaustiva de los casos válidos.

      Y con si() eso podría hacerte una fórmula imbebible e imposible de modificar en caso de necesidad.

      eric

      edit: por fórmula has recibido propuestas de ccm81 y mike. Te toca complementarlas siguiendo el mismo principio.
      0
  16. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Hola,

    Nueva versión un poco más completa, se añaden los DOM-TOM y los ciclomotores.
    https://www.cjoint.com/?DEAn6eyLKZO

    eric

    --
    Al intentar continuamente, acabamos por lograrlo.
    Así que cuanto más falla, más posibilidades tenemos de que funcione. (los Shadoks)
    Además de dar las gracias (sí, sí, ¡se hace!), piensa en marcar como resuelto. Gracias
    0
  17. Raymond PENTIER Mensajes publicados 58213 Fecha de registro   Estado Colaborador Última intervención   17 482
     
    ... y voluntariamente no he mencionado los vehículos de los Servicios del Estado, los vehículos militares, los coches con matrícula diplomática (embajadas), las matrículas provisionales (en tránsito temporal) !

    --
    ¡Es genial, la jubilación! Especialmente en las Antillas ... :-)
    ☻ Raymond ♂
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      Has hecho bien, creo que nunca estará allí, a menos que haya una necesidad muy específica.
      Por cierto, los CD y otros TU y TT son de la competencia de la prefectura para la asignación y no requieren un tratamiento particular para el control.
      eric
      0
  18. bod77 Mensajes publicados 52 Fecha de registro   Estado Miembro Última intervención  
     
    Mi jefe no desea macros y eso me viene bien porque nunca las he hecho. Además, tenemos que transmitir el archivo y los destinatarios no tienen la misma versión de Excel.
    Por mi parte, me limitaré a las placas antiguas, los cilindros no nos interesan.

    Formato seleccionado =>
    1234 AB 01
    123 ABC 01
    124 ABC 2A
    12 AB 01
    1 A 01
    1234 AB 971
    123 ABC 972

    123 ABC 00
    123-ABC-01
    123 ABC 96
    123 AB 1
    1234 ABC 01
    123 AI 01
    1234 AO 01
    1234 UB 01
    1234 ABC 01
    AB 123 AB
    123 AB 979
    1234 ABC 971
    0