Tengo una macro que me busca datos en la columna "G" y quiero modificarla para que me busque en la columna "B" "C" y "G"

Buen, día alguien me podría ayudar para modificar un código de macro . Lo que pasa es que cuando yo escribo una palabra en la celda "D1" de la hoja 1(Buscar) me busca las filas que contienen esa palabra en la columna "G" de la hoja2(Folios Marítimos) entonces yo deseo que no me busque solamente en la columna G si no en la columna "B","C","G" aclaro que en la hoja 2 columna "B" contiene números, en la columna "C" contiene datos alphanumericos como por ejemplo: 0002-SC-14 y en la columna"G" es texto como por ejemplo nombre de personas y empresas, esto por si es necesario para la macro. El objetivo es que cuando yo escriba un dato en la celda "D1" ya sea texto, numero o alpanumerico, me muestre los datos de todas las filas que contengan esa palabra. Gracias por su ayuda. Anexo el código si alguien pueda hacerle los cambios.

1 Respuesta

Respuesta
1

Si estás haciendo la búsqueda con find y tienes algo como esto:

Set h2 = Sheets("Folios Marítimos")
    Set b = h2.Range("G:G").Find(h1.[D1], lookat:=xlPart)
    If Not b Is Nothing Then
        '
        'tu código
        '
    End If
End Sub

Solamente tienes que ampliar el rango así:

Set h2 = Sheets("Folios Marítimos")
    Set b = h2.Range("B:C, G:G").Find(h1.[D1], lookat:=xlPart)
    If Not b Is Nothing Then
        '
        'tu código
        '
    End If

Si no es nada parecido a lo que tienes, pon tu macro para actualizarla.

Que tal Dante este es el código que tengo

Sub Buscar()
If Range("D1") = "" Then Exit Sub
Range("D1") = UCase(Range("D1"))
fil = 2
For i = 3 To Sheets("Folios Maritimos").Range("G" & Rows.Count).End(xlUp).Row
existe = InStr(Sheets("Folios Maritimos").Cells(i, "G"), Sheets("Buscar").Range("D1"))
If existe Then
fil = fil + 1
For T = 1 To 16
Sheets("Buscar").Cells(fil, T) = Sheets("Folios Maritimos").Cells(i, T)
Next T
End If
Next i
Application.EnableEvents = True
End Sub

Te anexo la macro con los cambios

Sub Buscar()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Buscar")
    Set h2 = Sheets("Folios Maritimos")
    '
    If Range("D1") = "" Then Exit Sub
    Range("D1") = UCase(Range("D1"))
    fil = 2
    '
    For i = 3 To h2.Range("G" & Rows.Count).End(xlUp).Row
        cadena = UCase(h2.Range("B" & i) & h2.Range("C" & i) & h2.Range("G" & i))
        If InStr(cadena, h1.Range("D1")) > 0 Then
            fil = fil + 1
            h2.Range("A" & i & ":P" & i).Copy h1.Cells(fil, "A")
        End If
    Next i
    Application.ScreenUpdating = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas