Tengo una tabla con entradas basadas en una lista y usé una macro que encontré en algún lugar para poder agregar / eliminar múltiples elementos de la lista a una celda, déjame mostrarte un ejemplo:
TEST TABLE
test1
test1, test2
test1, test3
test2, test3, test4
Donde los elementos de la lista son test1, test2, etc.
Ahora no sé si esto es posible, pero me gustaría poder filtrar instantáneamente la tabla por elemento específico de la lista (por ejemplo, prueba 1), además me gustaría poner estos criterios en los filtros de un cuadro de verificación para que En lugar de las casillas de verificación como "test1, test2" en las casillas de verificación, solo tendría elementos únicos de la lista (como test1, test2, etc.)
¿Es incluso posible, y si es así, alguien puede ayudar a preparar una macro para esto? Además estoy poniendo aquí mi macro del libro de trabajo:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngDV As Range
Dim oldVal As String
Dim newVal As String
Dim lUsed As Long
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If rngDV Is Nothing Then GoTo exitHandler
If Intersect(Target, rngDV) Is Nothing Then
'do nothing
Else
Application.EnableEvents = False
newVal = Target.Value
Application.Undo
oldVal = Target.Value
Target.Value = newVal
If oldVal = "" Then
'do nothing
Else
If newVal = "" Then
'do nothing
Else
lUsed = InStr(1, oldVal, newVal)
If lUsed > 0 Then
If Right(oldVal, Len(newVal)) = newVal Then
Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 2)
Else
Target.Value = Replace(oldVal, newVal & ", ", "")
End If
Else
Target.Value = oldVal _
& ", " & newVal
End If
End If
End If
End If
exitHandler:
Application.EnableEvents = True
Call AutoFitColumns
End Sub
Sub AutoFitColumns()
Dim rng As Range
Set rng = Range(Cells(1, 1), Cells(1, Columns.Count).End(xlToLeft))
rng.EntireColumn.AutoFit
End Sub
fuente
Criteria1:=Array(".pdf", ".doc", ".docx"), Operator:=xlFilterValues
Respuestas:
A pesar de que este es un post antiguo, estoy proporcionando una forma de hacerlo, como referencia
Agregue este código al módulo VBA para el formulario:
Pegue este código en el módulo VBA para Sheet1:
Hoja de datos 1:
Pegue este código en un módulo VBA estándar (abra VBA: Alt + F11 , haga clic en el menú Insertar & gt; Módulo)
Al hacer clic en la columna del encabezado ("TEST TABLE") se filtrará la lista en 2 partes
Parte 1:
.RemoveDuplicates Columns:=1, Header:=xlNo
Parte 2:
Cuando el usuario selecciona un elemento de la lista desplegable
Realizará un Autofiltro para celdas que contengan texto parcial.
Criteria1:="*" & fltrCriteria & "*"
, (Ex "* test3 *" )Botón Borrar orden elimina el Autofiltro
Una vez que se cierra el formulario, el filtro se puede quitar de 3 maneras
Lista desplegable filtrada:
Filas filtradas utilizando los criterios "test3"
Borrar filtro anterior:
fuente