Busqueda en Excel

Hola, el problema es el siguiente, tengo varias hojas en un libro y necesito que excel me busque un dato que yo introduzca en todas las hojas del libro y lo marque bien sea cambiándole el color de fondo o escribiendo un "Si" en la siguiente columna libre, podrías ayudarme con esto
Muchas gracias
Andres

1 respuesta

Respuesta
1
La siguiente macro ejecuta lo que solicitas. No me quedó claro si encontrará coincidencias en más de una hoja, o si cuando encuentra la primera no necesita seguir buscando...
De todos modos, activa el Editor de Visual Basic (Alt+F11), inserta un módulo nuevo y pega el siguiente código:
Sub BuscaCelda()
Dim Buscar As String
Dim Nosta As Boolean
Sheets("Hoja1").Select
Buscar = Range("E3").Value
Nosta = True
If Buscar <> "" Then
For Each Hoja In ActiveWorkbook.Sheets
Hoja.Select
Hoja.Range("A1:A2000").Select
Selection.Interior.ColorIndex = xlNone
Set C = Selection.Find(Buscar)
If Not C Is Nothing Then
C.Select
C.Interior.ColorIndex = 4
End If
ActiveCell.Select
Nosta = False
Next
'Notifica que no encontro nada
If Nosta Then MsgBox "Valor no encontrado"
'Liberamos la memoria
Set C = Nothing
Else
'Notifica que no se proporcionó dato a buscar
MsgBox "No hay nada que buscar"
End
End If
Sheets("Hoja1").Select
Range("E3").Select
End Sub
A modo de ejemplo, asumí que el dato a buscar está en la celda E3 de la Hoja1 y que deberá buscar en el rango A1:A2000, pero obviamente puedes cambiar estas referencias.
La macro pinta de Verde cada celda donde encontró coincidencia o muestra un mensaje avisando si no encontró lo que buscaba.
aclarando qué entendí mal o qué faltó.
Revisando mi respuesta encontré un comando fuera de lugar. Usa este código que es similar al anterior:
Sub BuscaCelda()
Dim Buscar As String
Dim Nosta As Boolean
Sheets("Hoja1").Select
Buscar = Range("E3").Value
Nosta = True
If Buscar <> "" Then
For Each Hoja In ActiveWorkbook.Sheets
Hoja.Select
Hoja.Range("A1:A2000").Select
Selection.Interior.ColorIndex = xlNone
Set C = Selection.Find(Buscar)
If Not C Is Nothing Then
C.Select
C.Interior.ColorIndex = 4
Nosta = False
End If
ActiveCell.Select
Next
'Notifica que no encontro nada
If Nosta Then MsgBox "Valor no encontrado"
'Liberamos la memoria
Set C = Nothing
Else
'Notifica que no se proporcionó dato a buscar
MsgBox "No hay nada que buscar"
End
End If
Sheets("Hoja1").Select
Range("E3").Select
End Sub
Éxitos!
Fernando
Fernando gracias por tu respuesta, el nuevo problema es que al hacerlo por segunda vez, borra el color de la primera búsqueda
Esta versión mantiene el color de la primera búsqueda (Asumí que cada búsqueda era independiente)
Sub BuscaCelda()
Dim Buscar As String
Dim Nosta As Boolean
Sheets("Hoja1").Select
Buscar = Range("E3").Value
Nosta = True
If Buscar <> "" Then
For Each Hoja In ActiveWorkbook.Sheets
Hoja.Select
Hoja.Range("A1:A2000").Select
Set C = Selection.Find(Buscar)
If Not C Is Nothing Then
C.Select
C.Interior.ColorIndex = 4
Nosta = False
End If
ActiveCell.Select
Next
'Notifica que no encontro nada
If Nosta Then MsgBox "Valor no encontrado"
'Liberamos la memoria
Set C = Nothing
Else
'Notifica que no se proporcionó dato a buscar
MsgBox "No hay nada que buscar"
End
End If
Sheets("Hoja1").Select
Range("E3").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas