Hacer búsqueda y filtrar sin botón para luego su selección

Tengo este código.

Private Sub Worksheet_Change(ByVal Target As Range)    'desactivamos la actualizacion de la pantalla, es decir ocultamos lo que la macro hace    Application.ScreenUpdating = False    'si existe algun error de uso lo ignora o salta al siguiente error    On Error Resume Next    'BD dinamica lista para efectuar el filtro avanzado en el mismo lugar, desde B1 hasta D2    Range("B4:INDEX(E:E,COUNTA(B:B)+2,)").AdvancedFilter 1, _    Range("B1").CurrentRegion    'autoajusta toda fila usada    Cells.Rows.AutoFit    'autoajusta toda columna usada    Cells.Columns.AutoFit    'activamos la actualización de la pantalla    Application.ScreenUpdating = TrueEnd Sub

el cual al poner la primera palabra de una oracion me busca y filtra entre tantos..ejemplo:

Escribo: camisa y me busca y filtra camisas sean de color o de marca etc

Pero yo necesito que funcione así:

Escribo: roja y que me salga y filtre todas las oraciones que contengan ROJA seas camisas o pantalones...

Respuesta
1

Si en el rango de criterios del filtro avanzado escribes "*rojo", con asterisco al inicio, te filtrará todo lo que contenga el texto "rojo", si escribes "rojo" sin asterisco te filtrará sólo lo que empiece por "rojo".

1 respuesta más de otro experto

Respuesta
1

Te regreso la maco con los cambios, para que pongas la palabra roja en la celda B2, avísame si pones otras palabras en otras celdas.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(False, False) = "B2" Then
        Application.EnableEvents = False
        Target.Value = "*" & Target.Value & "*"
        Application.EnableEvents = True
        'desactivamos la actualizacion de la pantalla, es decir ocultamos lo que la macro hace
        Application.ScreenUpdating = False
        'si existe algun error de uso lo ignora o salta al siguiente error
        On Error Resume Next
        'BD dinamica lista para efectuar el filtro avanzado en el mismo lugar, desde B1 hasta D2
        Range("B4:INDEX(E:E,COUNTA(B:B)+2,)").AdvancedFilter 1, _
        Range("B1"). CurrentRegion
        'autoajusta toda fila usada
        Cells. Rows. AutoFit
        'autoajusta toda columna usada
        Cells. Columns. AutoFit
        'activamos la actualización de la pantalla
        Application.ScreenUpdating = True
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas