Saltar al contenido

Buscar en String "inteligente"


Recommended Posts

publicado

Buenas;

He estado googleando un par de dias con este tema y no doy con la solucion, a ver si a alguien se le ocurre algo por donde tirar...

El tema va asi; (versión simplificada)

tengo un string con un nombre de archivo, que puede ser de este estilo:(uno solo, pero no sé cual de ellos)

A -TU2 - - Rev_0.pdf

A -TU02 - - Rev_0.pdf

A -TU 2 - - Rev_0.pdf

A -TU-02 - - Rev_0.pdf

por ejemplo.

y necesito compararlo con el valor de una celda que contiene algo asi:(solo un valor claro, pero puede ser cualquiera de estos o similares)

tu2

TU02

TU 02

TU-02

TU-2

Etc....

El caso es que para una persona es simple saber que ambos se corresponden, pero programarlo para que el excel me diga que se corresponden, y que no me de falso positivo con, por ejemplo:

A_TU_12--Rev_0.pdf

A_TU 22--rev_0.pdf 

se me antoja imposible.

Gracias de antemano por vuestro tiempo e ingenio.

publicado

buenas;

De entrada, gracias por responder, y tan rápido!!

Acabo de probar el excel que me enviastes, pero no es exactamente lo que busco;

Me explico; el tema es que cualquiera de estas entradas:

tu2

TU02

TU 02

TU-02

TU-2

me dé como resultado todos estos archivos:

A -TU2 - - Rev_0.pdf

A -TU02 - - Rev_0.pdf

A -TU 2 - - Rev_0.pdf

A -TU-02 - - Rev_0.pdf

pero no estos:

A_TU_12--Rev_0.pdf

A_TU 22--rev_0.pdf 

Las entradas se escriben a mano, y cada uno la escribe como le da la gana

los planos nos los dan, y también cada obra numera distinto;

pero, en este ejemplo, todas las entradas apuntan a la pieza "TU 2", y busco que todos los planos que apunten a esa pieza los encuentre, pero los que apunten a la pieza, "TU 12" o "TU 22" p.ej. no salgan como resultado

publicado

Te paso una función que le pasa la cadena de texto (A-Tu2 ó A-TU-02 ó...)  cómo argumento y sí cumple te devuelve Verdadero.

Function Pasa(cadena As String) As Boolean
   With CreateObject("vbscript.regexp")
      .IgnoreCase = True
      .Pattern = "([A-Z]){2}[ -[0-9]{1,3}"
      If .Test(cadena) Then Pasa = True
   End With
End Function

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.