Falla método find para buscar y pegar información

Ante todo espero que se encuentre bien de salud, he adaptado una parte de código de una respuesta dada por tí a otro usuario.

En una parte del proceso me funcionó bien. Pero ahora que quiero buscar un valor exacto y lo pegue en otra columna para ver si existe o no el registro, no funciona y si funciona a parte de que trae datos que no son no hace el recorrido completo.

Primero concateno la columna donde esta el número de factura con el ID de quien la emite, esto lo hago tanto en la hoja donde busco la información externa y en la hoja donde esta la información interna.

Haciendo uso de la función BuscarV como observa en la imagen de la hoja2 ese sería el resultado esperado.

El código es

  Sub BuscarDocumento()
  Application.ScreenUpdating = False
  Application.CutCopyMode = False
    Set h1 = Sheets(2)    'COMPRAS REPORTADAS
    Set h2 = Sheets(3)    'COMPRAS REGISTRADAS
    j = 2
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        Set b = h2.Columns("C").Find(h1.Cells(i, "C"), looKAt:=xlWhole)
        If Not b Is Nothing Then
            h1.Cells(j, 4) = h2.Cells(b.Row, 3)
            j = j + 1
        End If
    Next
  Application.CutCopyMode = True
  Application.ScreenUpdating = True
End Sub

1 respuesta

Respuesta
2

Prueba lo siguiente:

Sub BuscarDocumento()
  Dim h1 As Worksheet, h2 As Worksheet
  Dim i As Long, j As Long
  Dim b As Range
  '
  Application.ScreenUpdating = False
  Set h1 = Sheets(2)    'COMPRAS REPORTADAS
  Set h2 = Sheets(3)    'COMPRAS REGISTRADAS
  j = 2
  For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
    Set b = h2.Range("C:C").Find(h1.Cells(i, "C"), , xlValues, xlWhole, , , False)
    If Not b Is Nothing Then
      h1.Cells(j, 4) = h2.Cells(b.Row, 3)
      j = j + 1
    End If
  Next
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
End Sub

[No olvides valorar al final de la respuesta.

Buen día amigo Dante, la probé pero sigue sin funcionar correctamente, en la columna F muestra los resultados correctos con la fórmula BuscarV, pero usando la macro coloca los resultados equivocadamente

Es decir que si no encuentra el valor exacto, debería dejar la fila en blanco, y continuar con el siguiente registro, pero veo que lo que hace es que coloca todos los resultados encontrados a partir de la primera fila indicada 

Tomé como base tu código. El contador j no es correcto.

Prueba lo siguiente:

Sub BuscarDocumento()
  Dim h1 As Worksheet, h2 As Worksheet
  Dim i As Long
  Dim b As Range
  '
  Application.ScreenUpdating = False
  Set h1 = Sheets(2)    'COMPRAS REPORTADAS
  Set h2 = Sheets(3)    'COMPRAS REGISTRADAS
  For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
    Set b = h2.Range("C:C").Find(h1.Cells(i, "C"), , xlValues, xlWhole, , , False)
    If Not b Is Nothing Then
      h1.Cells(i, 4) = h2.Cells(b.Row, 3)
    End If
  Next
  Application.CutCopyMode = False
  Application.ScreenUpdating = True
End Sub

¡Gracias! 

Mil gracias, pensé que no era el método correcto para el caso.  Pero como siempre eres un genio para resolver estos problemas.  Dios te bendiga.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas