Tengo una duda sobre este código

Estoy haciendo un código en el cual es como un buscarv en una cadena de texto es decir

si tengo mis valor así : A1: México | brasil | alemania

                                           A2: SUECIA | BELGICA | HOLANDA | PARIS

                                            A3 : MEXICO

Entonces me buscar de un catalogo un valor y me lo da por cada | (22,000 | 2145| 345 etc...

este es mi codigo :

Sub buscar()
ultlinea = Sheets("REGULACION").Range("AY" & rows.count).End(xlUp).row
Set rango = Sheets("CATALOGOS").Range("BE4:BF310")

For cont = 2 To ultlinea 'verificar
info = Sheets("REGULACION").Cells(cont, 51)
codigo = Split(info, "|")

longA = UBound(codigo)
For i = 0 To longA
dato = dato
buscarv = Application.VLookup(codigo(i), rango, 2, False)
If IsError(buscarv) Then
buscarv = " "
End If
'Sheets ("REGULACION") .Cells (cont, 52)
dato = buscarv & "|" & dato
Next i
k = Len(dato)
dato = Mid(dato, 1, k - 2)
Sheets("REGULACION").Cells(cont, 52) = dato
Next cont
End Sub

Lo que noto es que tiene error cuando hace los ciclos. Ejemplo el primer ciclo me da el resultado esperado pero cuando pasa al siguiente next count me trae el valor del siguiente ciclo más el valor del primer ciclo no cierra el ciclo del anterior y así sucesivamente. Me podrían ayudar a corregirlo de favor :)

1 respuesta

Respuesta

[Hola

Lo que pasa es que nunca dejas vacía tu variable "Dato" así que sigue acumulando valores en ella. Solo agrega esto antes del Next:

Dato = ""

Comentas

Hola super si me funciono, pero una pregunta más, sabes por que buscador va poniendo el resultado al final por ejemplo

dato que busca:                                     resultado como debería después de hacer el vlookup:

a1 : alemania|mexico|colombia            b2: 54 |23|50

dato que busca                                      resultado como lo hace mi macro:

a1 : alemania|mexico|colombia          b2: 50|23|54

Osea si los encuentra pero cada que hace la búsqueda va desplazando el primer resultado

Gracias.

[Hola nuevamente

Pues, tú le estás indicando que lo haga así. Cambia el orden de este modo:

dato =  dato & "|" &  buscarv

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas