Generalmente seleccionamos, desde las columnas de una hoja de datos, el elemento buscado. O dejamos en alguna celda el criterio a buscar y con una macro se filtra la hoja.
La propuesta que presento aquí está pensada para cuando tenemos listas: de Alumnos, Cuentas de clientes o proveedores, Productos y tantas otras, donde guardamos el nombre y su código.
Y donde las hojas de Movimientos de cuentas solo cuentan con la columna de Código, lo que dificulta la búsqueda de algún registro.
Entonces vamos a recurrir a una macro que se ejecutará desde la hoja de la Lista. En este ejemplo se utilizó el evento BeforeDoubleClick, aunque bien podría ser ejecutada desde un botón o el menú Desarrollador/Programador, Macros.
En el Editor de Macros seleccionamos la hoja Listado y allí colocaremos estas instrucciones:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'llamamos a la macro de filtrado
Call filtro_Total
End Sub
Y la macro llamada 'filtro_Total' la colocaremos en un módulo:
Sub filtro_Total()
'macro única para uso en los 2 modelos de hoja: rango o tabla
'acotamos el rango desde donde podremos hacer doble
clic para llamar a la macro
If ActiveCell.Column <> 3 Or ActiveCell.Row < 4 Then Exit Sub
'verificamos si la celda seleccionada tiene contenido
If ActiveCell = "" Then Exit Sub
'se guarda el dato de la celda seleccionada y se pasa a la
otra hoja
dato = ActiveCell.Value
Sheets("MOVIMIENTOS").Select 'agregar instrucciones (*)
'quitamos previamente cualquier filtro aplicado
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
'se evalúa si se trata de una hoja con rango o con
Tabla (**)
If ActiveSheet.ListObjects.Count = 0 Then
'establecer
el rango y filtrar por el criterio guardado en la variable
rgo =
[C3].CurrentRegion.Address
ActiveSheet.Range(rgo).AutoFilter Field:=2, Criteria1:=dato
Else
'si se
conoce en qué col se encuentran las claves, utilizar esta instrucción
ActiveSheet.ListObjects(1).Range.AutoFilter Field:=2, Criteria1:=dato
'si no se
conoce la ubicación de la col 'claves' utilizar estas otras
'Ajustar nombre de tabla y el título de columna al modelo
'colx = ActiveSheet.Range("Tabla1[[CODIGO]]").Column
'ActiveSheet.ListObjects(1).Range.AutoFilter Field:=colx - 1,
Criteria1:=dato
End If
End Sub
NOTAS ACLARATORIAS:
(*) Para que la macro sea de uso en cualquier hoja del libro, se deben agregar instrucciones para evaluar previamente en qué hoja se filtrará. Por ejemplo: colocando el nombre en alguna celda de la hoja Listado.
Hojita= [E1]
Sheets(Hojita).Select
(***) Para trabajar con un solo modelo de hojas, recomiendo mirar el video donde se muestran en módulos diferentes cada una de sus macros (filtra_Rango o filtra_Tabla)
Acceso al VIDEO Nº 79 desde aquí.
Descargar libro desde aquí o solicitarlo a mi correo de Gmail.