Visualizzare i criteri di filtro automatico dopo il filtraggio utilizzando VBA in Microsoft Excel
In questo articolo, creeremo una macro per visualizzare i criteri utilizzati nel filtro automatico.
I dati grezzi sono i dettagli del cliente, che includono nome, numero di telefono, ID e-mail e nome della società.
Abbiamo applicato un filtro nella colonna Azienda e ora vogliamo determinare il nome dell’azienda su cui è applicato il filtro.
Faremo clic sul pulsante “Separazione dei dati del filtro” per ottenere i criteri per i quali viene applicato il filtro.
Codice Spiegazione
IntRow = Range (“A10”). CurrentRegion.Rows.Count + 12 Il codice sopra viene utilizzato per ottenere un numero di riga, dove deve essere visualizzato l’output.
ActiveSheet.AutoFilter.Filters (IntCol) .On Il codice precedente viene utilizzato per verificare se il filtro è applicato su una determinata colonna.
Per ogni StringValue in .Criteria1 MainString = MainString + Mid (StringValue, 2) + “|”
Avanti Il codice precedente viene utilizzato per creare una stringa che consiste di tutti i valori dei criteri, utilizzati nel filtro.
Intervallo (“A10”). CurrentRegion.SpecialCells (xlCellTypeVisible) .Copy _ Cells (IntRow + 1, 1)
Il codice precedente viene utilizzato per copiare le righe visibili nella destinazione specificata.
Segui sotto per il codice
Option Explicit Sub FilterCriteria() 'Declaring variables Dim IntRow, IntCol As Integer Dim MainString, StringValue As Variant 'Initializing the row and column number IntRow = Range("A10").CurrentRegion.Rows.Count + 12 IntCol = 1 'Looping through all the cells until blank cell is encountered in the 10th row Do Until IsEmpty(Cells(10, IntCol)) With ActiveSheet.AutoFilter.Filters(IntCol) 'Checking whether filter is applied on the column If .On Then MainString = "Filter On Column no. " & IntCol & " on values : " 'Creating text which consists of values used in the filter For Each StringValue In .Criteria1 MainString = MainString + Mid(StringValue, 2) + "|" Next 'Assigning value to cell Cells(IntRow, 1).Value = MainString Exit Do End If End With IntCol = IntCol + 1 Loop 'Copying the visible cells to row after the filter data Range("A10").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Cells(IntRow + 1, 1) End Sub
Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.
Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]