Búsqueda en Excel 2007

Buenos días.

Mi pregunta está relacionada con excel 2007. Tengo un fichero de dos columnas y muchísimas filas. Necesito realizar búsquedas de distintas palabras sobre la primera columna y copiar todas las filas que contengan el texto buscado en otra carpeta del fichero excel. Es algo parecido a la función "Ctrl-B buscar todos" pero con la posibilidad de poder copiar las filas seleccionadas a otra carpeta.

Gracias por adelantado

Juan

1 respuesta

Respuesta
1

Te mando una macro

Instrucciones
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Para ejecutarla presiona F5

' *****MACRO***********
Sub buscarcancion()
' Por Dam
' Busca canciones por una palabra y las copia a otra hoja
'
Application.ScreenUpdating = False
Dim ufila, ucolumna As Long
cancion = InputBox(Prompt:="Canción o palabra:")
j = 2
unavez = 1
ultimo = 0
Sheets("BUSQUEDA").Select
ActiveSheet.Cells.Clear
Sheets("DATOS").Select
    ufila = ActiveCell.SpecialCells(xlLastCell).Row
    ucol = ActiveCell.SpecialCells(xlLastCell).Column
    Range(Cells(1, 1), Cells(1, ucol)).Select
    Selection.Copy
    Sheets("BUSQUEDA").Select
    Cells(1, 1).Select
    ActiveSheet.Paste
Sheets("DATOS").Select
For i = 1 To ufila
    Range(Cells(i, 1), Cells(ufila, 1)).Select
    If unavez = 1 Then
        Set RangoObj = Selection.Find(What:=cancion, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
    End If
    unavez = 2
    Set RangoObj = Selection.FindNext(After:=ActiveCell)
        If RangoObj Is Nothing Then
            MsgBox ("Fin de la Búsqueda de '" & cancion & _
            "'. Se encontraron " & j - 2 & " Canciones")
            ultimo = 1
            Exit For
        Else
            i = RangoObj.Row
            Range(Cells(i, 1), Cells(i, ucol)).Select
            Selection.Copy
            Sheets("BUSQUEDA").Select
            Cells(j, 1).Select
            ActiveSheet.Paste
            j = j + 1
            Sheets("DATOS").Select
        End If
Next
Sheets("BUSQUEDA").Select
If ultimo = 0 Then
    MsgBox ("Fin de la Búsqueda de '" & cancion & _
            "'. Se encontraron " & j - 2 & " Canciones")
End If
Application.ScreenUpdating = True
End Sub
' ****************

saludos.Dam
Pruébala y si es lo que necesitas.

Muchas gracias Dam.

He probado la macro pero no me funciona, me aparece el siguiente mensaje de error:

"Se ha producido el error '9' en tiempo de ejecución: subíndice fuera del intervalo

Y la ejecución se para en la línea 8: "Sheets ("BÚSQUEDA"). Select"

No sé si es necesario nombrar las carpetas del fichero excel de alguna forma concreta, yo la tengo por defecto (Hoja1, hoja2...).

Gracias por adelantado

Juan

Perdóname, tienes razón, tus hojas se tiene que llamar así:
La hoja1, donde tienes tus datos se tiene que llamar DATOS
La hoja2, en donde se van a copiar los resultados se tiene que llamar BUSQUEDA
Si prefieres otros nombres, modifica la macro y cambia los nombres DATOS y BUSQUEDA en todos los lugares en donde aparecen, por los que te agraden.
Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas