Cómo unir las dos columnas y el valor de retorno en la tercera en VBA

0

Pregunta

Tengo que coincidir con dos columnas, una ha "all_filenames", mientras que el otro tiene la "part_number" he utilizado BUSCARV para encontrar coincidencias y funcionó. Sin embargo, el problema es que en "all_filenames hay alrededor de 2.000 de datos y en virtud de "part_number" sólo hay 500. Los datos en "part_number" podría coincidir con varios datos en "all_filenames" pero el problema es que no coincide con el nombre específico. Ejemplo: Una Columna sería all_filenames, estos son almacenados: XP605_Top.jpg AR131_Front.jpg 28528_765BP_Front.jpg 2543_Front.jpg. En la Columna B que sería "part_number" almacenado como: XP605.jpg AR131.jpg 28528.jpg 2543.jpg. Así que en teoría esto sería considerado como un partido, pero ya hay un par de palabras o el número que falta de la Columna a no coincidir. Así que mi problema es hacer una UDF para resolver este problema. No se si me explicado lo suficientemente bueno. Alguien me puede ayudar? Gracias.

Public Function WhereIs(rIn As Range, rList As Range) As String
   Dim s1 As String, r As Range
   Dim s2 As String
   WhereIs = ""
   s1 = rIn.Text

   For Each r In rList
      s2 = r.Text
      If InStr(1, s2, s1) > 0 Then
         If WhereIs = "" Then
            WhereIs = r.Address(0, 0)
         Else
            WhereIs = WhereIs & "," & r.Address(0, 0)
         End If
      End If
   Next r

   If WhereI <> "" Then WhereIs = "no match" 
      
End Function

Hasta el momento este es el único código que he encontrado y probado, pero el problema es que todavía no coincide con la causa creo que trata de buscar una coincidencia exacta. Realmente estoy de nuevo con VBA así que todavía estoy teniendo un tiempo duro con él.

Necesito el 'partido de valor" para volver en otra columna con el número de parte y si hay varias coincidencias necesito todo eso para estar dentro de la columna.

excel vba
2021-11-23 23:07:28
1

Mejor respuesta

0

Usted podría utilizar la IZQUIERDA y ENCONTRAR a limpiar sus columnas de datos. Si sus nombres están en la columna a, a continuación,

=LEFT(A1,FIND("_",A1)-1)

Va a quitar todo, hasta el primer "_". Para su lista de piezas

=LEFT(C1,LEN(C1)-4)

va a deshacerse de los ".jpg" parte del nombre (o puede usar REEMPLAZAR como se sugiere en los comentarios). Esto hará que la función BUSCARV más feliz

2021-11-24 03:21:24

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................