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à.

ArrowRawData

Abbiamo applicato un filtro nella colonna Azienda e ora vogliamo determinare il nome dell’azienda su cui è applicato il filtro.

ArrowFilterData

Faremo clic sul pulsante “Separazione dei dati del filtro” per ottenere i criteri per i quali viene applicato il filtro.

ArrowOutput

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]