Buscar palabra y referencia en hoja diferente

Tengo una duda con el siguiente código

' *****MACRO***********
Sub buscarmono()
' Por Dam
' Busca monografías por una palabra y las copia a otra hoja
'
Application.ScreenUpdating = False
Dim ufila, ucolumna As Long
mono = InputBox(Prompt:="Monografía o palabra: ")
j = 2
una vez = 1
ultimo = 0
primera = 1
ufila = ActiveCell.SpecialCells(xlLastCell).Row
ucol = ActiveCell.SpecialCells(xlLastCell).Column
Range(Cells(2, 5), Cells(ufila, 6)).Clear
Cells(1, 1).Select
For i = 1 To ufila
If una vez = 1 Then
Set RangoObj = Cells.Find(What:=mono, After:=ActiveCell, SearchOrder:=xlByRows)
una vez = 2
End If
Set RangoObj = Cells.FindNext(After:=ActiveCell)
If RangoObj Is Nothing Then
MsgBox ("Fin de la Búsqueda de '" & mono & _
"'. Se encontraron " & j - 2 & " monografías")
ultimo = 1
Exit For
Else
If primera = 1 Then
primermono = RangoObj.Value
primera = 2
Else
If primermono = RangoObj Then Exit For
End If
i = RangoObj.Row
Cells(i, 6).Select
Cells(j, 5).Value = Cells(i, 1).Value
Cells(j, 6).Value = Cells(i, 2).Value
j = j + 1
End If
Next
Application.ScreenUpdating = True
If ultimo = 0 Then
MsgBox ("Fin de la Búsqueda de '" & mono & _
"'. Se encontraron " & j - 2 & " Monografías")
End If
End Sub
'***Macro*************

funciona muy bien si los datos están en la misma hoja, hoja 1

pero quisiera borrar los datos de esta hoja, y que haga la búsqueda en las hojas 2 y hoja 3.

por ejemplo los datos en la hoja 2 son

alimentación 1(16octubre) M199
alimentación 2(16 octubre) M706
alimentación carbohidratos M200
alimentación grasas (lípidos)M201
alimentación minerales M203
alimentación proteínas M202
anfibios M639
animales acuáticos M480
animales carnívoros M344
animales de la granja M777
animales de la selva M756

aquí es donde a cada nombre corresponde una clave.

espero me haya dado a entender.

1 respuesta

Respuesta
1

No me queda claro.

Hay que buscar en hoja2 y en hoja3, ¿y el resultado dónde se pone?

o

¿Hay qué buscar en hoja2 y poner el resultado en hoja3?

Y por último, ¿a qué te refieres con borrar los datos de esta hoja?

Podrías detallar un ejemplo, ¿de cómo quieres la búsqueda y dónde quieres el resultado y además que pasa si no encuentra nada?

lo que pasa es que al correr el macro busca en los datos de la hoja1, pero quisiera que buscara en todo el libro en este caso hoja 2 y 3, y no solo en la primera hoja, seria todo. lo que pasa es que los datos de la base los tengo en la hoja 2 y hoja 3. o quizá que preguntase en que hoja quieres buscar la columna 1, que es el de los nombres para que te de los valores encontrados y el valor asociado. y gracias por la ayuda

Ok, voy a hacer la búsqueda en todas las hojas que tengas en tu libro, ¿pero y dónde pongo el resultado?

¿También quieres que te ponga en qué hoja se encontró el resultado?

no es necesario que ponga la hoja donde se encontró el resultado y tampoco seria necesario que preguntase en que hoja buscar, podría hacerlo automáticamente, veras quisiera poder anexar mas hojas y poner otros productos por ejemplo hoja 4

columna 1

lápiz

lápiz duo

lápiz bicolor

columna 2 su valor asociado

2

2.50

3

y asi de modo que desde la macro de inicio pudiera consultar todo el libro, sin necesidad de pasar hoja por hoja.

parecido a las tiendas que al buscar un producto te da la palabra que coincide o coinciden con la búsqueda y su dato asociado como clave o precio. y por ejemplo poder cambiar el nombre a las pestañas sin que afecte al buscador.

por ejemplo hoja1. indice

hoja 2, monografías

hoja 3. biografías

y permitiera en un futuro agregar mas hojas. y actualmente escribe los resultados en Ey F tampoco hay problema con eso. y bueno una disculpa por tantas preguntas y ójala puedan ayudarme.

Te mando la nueva hoja.

' *****MACRO***********
Sub buscarmono()
' Por Dam
' Busca monografías por una palabra y las copia a otra hoja
'
Application.ScreenUpdating = False
Dim ufila, ucolumna As Long
mono = InputBox(Prompt:="Palabra a buscar: ")
    j = 2
    unavez = 1
    ultimo = 0
    primera = 1
    Worksheets("Hoja1").Select
    ufila = ActiveCell.SpecialCells(xlLastCell).Row
    Range(Cells(2, 5), Cells(ufila, 6)).Clear
For hoja = 1 To Sheets.Count
    nombrehoja = Sheets(hoja).Name
    Worksheets(nombrehoja).Select
    ufila = ActiveCell.SpecialCells(xlLastCell).Row
    ucol = ActiveCell.SpecialCells(xlLastCell).Column
    Cells(1, 1).Select
    For i = 1 To ufila
         If unavez = 1 Then
            Set RangoObj = Cells.Find(What:=mono, _
                After:=ActiveCell, SearchOrder:=xlByRows)
            unavez = 2
         End If
         Set RangoObj = Cells.FindNext(After:=ActiveCell)
            If RangoObj Is Nothing Then
                'MsgBox ("Fin de la Búsqueda de '" & mono & _
                '"'. Se encontraron " & j - 2)
                ultimo = 1
                Exit For
            Else
                If primera = 1 Then
                    primermono = RangoObj.Value
                    primera = 2
                Else
                    If primermono = RangoObj Then Exit For
                End If
                i = RangoObj.Row
                nombre = Cells(i, 1).Value
                clave = Cells(i, 2).Value
                Worksheets("Hoja1").Select
                Cells(j, 6).Select
                Cells(j, 5).Value = nombre
                Cells(j, 6).Value = clave
                j = j + 1
                Worksheets(nombrehoja).Select
                Cells(i, 6).Select
            End If
    Next i
Next hoja
Application.ScreenUpdating = True
Worksheets("Hoja1").Select
'If ultimo = 0 Then
    MsgBox ("Fin de la Búsqueda de '" & mono & _
            "'" & vbNewLine & vbNewLine & _
            " Se encontraron " & j - 2 & " coincidencias")
'End If
End Sub
'***Macro*************

saludos.dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas