Hola, me refiero a Excel 2007. Necesito encontrar varios datos en una hoja bastante extensa...

He preparado una hoja con 13 columnas, con 21.650 filas, y los datos se refieren a una colección de libros de partituras musicales. Las columnas me indican nombre de la canción, ritmo, tempo, compás, palabra clave, genero, favorito1, favorito2, favorito3, intro, sección, libro, página.

Debido a que son varios libros, una o más columnas pueden repetirse con datos iguales. Se puede decir que todo es texto pues, aunque hay números, no se utilizan para hacer operaciones, tan solo son de referencia.

Quisiera utilizar una hoja aparte como entrada para hacer la búsqueda de una canción y saber:

1) Si está o no en la base de datos.

2) Si está con nombre igual o parecido, necesito ver todas las coincidencias de las 13 columnnas arriba mencionadas (Hay que tener en cuenta que pueden salir varias filas de resultados en cada búsqueda).

Digo nombre igual o parecido porque hay canciones, como "King of New York", que también puede aparecer como "New York, King of", por citar un ejemplo.

Bueno, espero haber sido explícito en mi pregunta. Muchas gracias por anticipado y espero que esta idea se pueda llevar a cabo.

Pedro.

1 respuesta

Respuesta
1

Antes de preparar algo muy elaborado, has intentado con una tabla dinámica, en excel 2007, te permite hacer filtros y ponerle un filtro personalizado, por ejemplo: mostrar las filas que contiene "King" o contiene "New York", además puedes agregar filtros a cualquier de los campos, por ejemplo, además del filtro de la canción puedes filtrar por Ritmo contiene "POP".

Hola Dam,

Muchas gracias por tu respuesta y agradezco tu rapidez. Tu sugerencia es muy buena. Ya he intentado filtrando los campos y sí, me da la información que busco, pero me parece que esa forma no resulta cómoda cuando tienes que hacer una serie de consultas diferentes. Pienso que sería mucho más práctico utilizar otra hoja del mismo libro, introducir el nombre que se desea en una celda y que en esta otra hoja aparezcan las 13 columnas, con las filas que existan, con los datos que se desean encontrar.

En este momento tengo los datos en una hoja con el nombre de "DATOS" y la búsqueda la quiero establecer en la hoja llamada "BÚSQUEDA".

O sea, lo que deseo hacer es introducir el nombre de una canción en una celda de la hoja "BÚSQUEDA" y que abajo me salga la información ordenada por filas y columnas.

Lo que no sé si se puede hacer es crear la tabla dinámica en la "BÚSQUEDA" para que extraiga los datos de la hoja "DATOS".

Muchas gracias otra vez. Espero que esta loca idea mía se pueda llevar a cabo.

Muchos saludos desde Mexico.

Pedro.

Utiliza la siguiente macro, sigue las 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

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

Hola DaM,

Muchas gracias por tu amabilidad al enviarme el macro. Tengo poca experiencia con hojas de cálculo y debo confesarte que nunca he trabajado con macros, ni con programación.

He seguido tus instrucciones copiando el macro tal y como me lo enviaste, pero cuando llegó el momento de ejecutarlo presionando la tecla F5 devolvió un error.

El error dice: "Error de compilación. No se ha definido Sub o Función", y cuando hice click en "Ayuda", me indica que es error 35. EStá marcando en color azul la palabra una del macro (al principio, donde pone una vez = 1), y quince líneas más abajo marca en rojo la línea donde pone If una vez = 1 Then

Te agradecería mucho que me indicaras en qué forma puedo solucionar este error.

Muchas gracias por adelantado y te envío un saludo.

Pedro.

La palabra debe ir junta: "unavez", por alguna causa la palabra se separó.

Hay tres palabras que tienen "una vez", por favor, solamente quítales el espacio de en medio para que quede: "unavez" y listo

Sigo a tus órdenes.

Muchas gracias daM. Ya lo he probado y está funcionando perfectamente...

Recibe un saludo y y mi más sincero agradecimiento.

Pedro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas