Crear macro de búsqueda

Buenas días, como puedo crear una macro de búsqueda si tengo la sig. Formula:

=SI.ERROR(BUSCARV(D2,COSTO!D:I,6,FALSO),BUSCARV(D2,COMPRAS!D:I,6,FALSO))

donde costo y compras son hojas distintas, pero quiero agregar mas hojas!! Como lo puedo hacer... Cualquier ayuda se agradece de antemano...

1 Respuesta

Respuesta
1

Con esta macro buscaremos el valor introducido en la celda D2 de la primera hoja y lo buscaremos en todas las pestañas del libro, si lo encuentra nos traerá el valor de la sexta columna del valor encontrado

(Recuerda finalizar y puntuar por favor)

Sub buscar()

valor = Sheets(1).Range("d2").Value

For p = 2 To Sheets.Count

Sheets(p).Select

For Each celda In Range("d1:d" & Range("d65000").End(xlUp).Row)

If celda.Value = valor Then

Sheets(1).Range("e2").Value = celda.Offset(0, 6).Value

End If

Next

Next

End Sub

Muchas Gracias LuisMondelo, quiero saber si Sheets(1), es la hoja 1??? y el argumento "d1:d" va a buscar donde haya datos?? espero tu pronta respuesta...

Así es. 

Sheets(1) se refiere la la primera pestaña de tu libro de trabajo

Por eso en el bucle for-next buscaré el dato desde la hoja 2 hasta la última

El rango D1:D se refiere a lo que ocupan los datos en cada pestaña de búsqueda. Correcto.

Me a servido de mucho tu explicación LuisMondelo, ya adapte tu macro a lo que necesito, pero como definir esto: valor = Sheets(1).Range("d2").Value, sabiendo que tengo que buscar todos los datos de la columba D, intente solamente ponerlo de esta manera: valor = Sheets(1).Range("d2:d"). pero arroja un error en tiempo de ejcucion, de antemano te agradezco el tiempo que te tomas al responder esto...

Saludos!!!!

En ese caso la macro cambia un poco. Te la muestro:

Sub buscar()

fila =2

sheets(1).select

range("d2").select

do while activecell.value <>""

valor = activecell.value
For p = 2 To Sheets.Count
Sheets(p).Select
For Each celda In Range("d1:d" & Range("d65000").End(xlUp).Row)
If celda.Value = valor Then
Sheets(1).cells(fila,5).Value = celda.Offset(0, 6).Value

fila = fila+1

End If
Next
Next

activecell.offset(1,0).select

loop
End Sub

Gracias me ha servido de mucho... solo que estoy muy cucho para esto... puse la macro pero al ejecutarla no pone todo lo que encuentra solo algunas, te pongo un ejemplo de lo que trato de hacer: tengo 4 hojas, 1,2,3,4, en la hoja 1 en la columna del rango D2 hasta "D10000" que vaya y busque en la hoja 2,3,4 toda la información de esa columna no importa que se repita, y el resultado que me lo ponga en la columna O, (bueno eso creo lo hace en esta parte "Sheets(1).cells(fila,15).Value = celda.Offset(0, 4).Value"), ahora la macro que muy amable me muestras esta poniendo el mismo dato como resultado, me podrías ayudar con esto?? de antemano agradezco tu ayuda!!! Saludos!!!

Ya tengo terminado tu proyecto, pero quizás sería buena idea mandarte un ejemplo para que lo veas y lo puedas adaptar a tus necesidades. Dime un mail

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas