Macro para copiar datos

Hola a todos, alguien me podría ayudar con este macro para que permita consultar 2 criterios (columnas M y N) y no una sola. El destino de la copia seria la misma Hoja2.

Gracias por su repuesta.

Sub buscar()
filalibre = Sheets("hoja2").Range("m150000").End(xlUp).Row + 1
dato = InputBox("que dato buscamos???")
If dato = "" Then Exit Sub
Set buscado = ActiveSheet.Range("m1:m" & Range("m150000").End(xlUp).Row).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
If Not buscado Is Nothing Then
ubica = buscado.Address
do
buscado.EntireRow.Copy Destination:=Sheets("hoja2").Cells(filalibre, 1)
filalibre = filalibre +1
Set buscado = ActiveSheet.Range("m1:m" & Range("m150000").End(xlUp).Row).Findnext(buscado)
loop while not buscado is nothing and buscado.address <> ubica
End If
End Sub

1 respuesta

Respuesta
1

Juraría que esa macro ha salido de mis manos. Bueno aquí tienes la solución a la búsqueda doble, espero que te guste y ya me contarás:

Sub busqueda_doble()

filalibre = Sheets("hoja2").Range("a65000").End(xlUp).Row + 1

dato1 = InputBox("primer dato a buscar???")

If dato1 = "" Then Exit Sub

dato2 = InputBox("segundo dato a buscar???")

If dato2 = "" Then Exit Sub

Set busca1 = Sheets("hoja1").Range("a1:a1000").Find(dato1, LookIn:=xlValues, lookat:=xlWhole)

If Not busca1 Is Nothing And busca1.Offset(0, 1).Value = dato2 Then

ubica1 = busca1.Address

Do

busca1.EntireRow.Copy Destination:=Sheets("hoja2").Cells(filalibre, 1)

filalibre = filalibre + 1

Set busca1 = Sheets("hoja1").Range("a1:a1000").FindNext(busca1)

Loop While Not busca1 Is Nothing And busca1.Offset(0, 1).Value = dato2 And busca1.Address <> ubica1

End If
End Sub

Recuerda finalizar y puntuar

Hola Luis, gracias por la prontitud de tu respuesta, El macro no me esta respondiendo. me aparece un mensaje de error que dice "Variable de Objeto o Bloque with no establecido". Ten en cuenta que las columnas para hacer la búsqueda son M y N.

Prueba ahora con esta macro, la he reformado. Tal como pides busca los dos valores en las columnas M y N y cuando los encuentra los copia a la hoja2

Sub busqueda_doble()

fila = Sheets("hoja2").Range("a65000").End(xlUp).Row + 1

dato1 = InputBox("primer dato a buscar???")

If dato1 = "" Then Exit Sub

dato2 = InputBox("segundo dato a buscar???")

If dato2 = "" Then Exit Sub

Set busca1 = Sheets("hoja1").Range("m1:m1000").Find(dato1, LookIn:=xlValues, lookat:=xlWhole)

If Not busca1 Is Nothing Then

ubica1 = busca1.Address

Do

if busca1.Offset(0, 1).Value = dato2 Then

busca1.EntireRow.Copy Destination:=Sheets("hoja2").Cells(fila, 1)

fila = fila + 1

Set busca1 = Sheets("hoja1").Range("m1:m1000").FindNext(busca1)

Else

Set busca1 = Sheets("hoja1").Range("m1:m1000").FindNext(busca1)

End If

Loop While Not busca1 Is Nothing And busca1.Address <> ubica1

End If

end Sub

Hola Luis, estuve probando la macro pero no esta funcionando. Veo que no menciona la columna N en las instrucciones y no se si es claro que las condiciones deben cumplirse ambas. Ejemplo que la columna M sea 2012 y la N sea Febrero. No se si hará falta que te envíe un archivo de ejemplo.

Agradezco tu respuesta.

La macro me funciona perfectamente, mándame tu archivo para probarlo con él.

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas