Formula per visualizzare la prima cella visibile di colonna filtrata

Anonimo
2011-11-21T05:02:55+00:00

Ciao a tutti,

di seguito vi espongo i miei due quesiti:

  1. come da oggetto, vorrei sapere se esiste una formula, o combinazione di esse, che mi permetta di visualizzare in una determinata cella (E2), il primo valore visualizzato nella colonna filtrata B (in particolare il range B4:xldown); possibilmente evitando macro
  2. con la stessa ipotesi di prima, in una cella, mi piacerebbe visualizzare tutti i parametri (attivi) utilizzati per la colonna filtrata; ad esempio, ho una colonna con 5 volori: "A", "B", "C", "D", "E". Filtro questa colonna per "B" e "D". Nella cella E2 vorrei visualizzare in sequenza i filtri da me adottati in questo caso; eventualmente va bene anche una macro in questo caso.

Ringrazio in anticipo a chiunque mi risponda.

Ciao.

PS E' evidente che il secondo quesito include il primo, però io mi auguro che al primo quesito si possa giungere ad una formula senza macro.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2011-11-21T07:26:53+00:00

Ciao a tutti,

di seguito vi espongo i miei due quesiti:

  1. come da oggetto, vorrei sapere se esiste una formula, o combinazione di esse, che mi permetta di visualizzare in una determinata cella (E2), il primo valore visualizzato nella colonna filtrata B (in particolare il range B4:xldown); possibilmente evitando macro
  2. con la stessa ipotesi di prima, in una cella, mi piacerebbe visualizzare tutti i parametri (attivi) utilizzati per la colonna filtrata; ad esempio, ho una colonna con 5 volori: "A", "B", "C", "D", "E". Filtro questa colonna per "B" e "D". Nella cella E2 vorrei visualizzare in sequenza i filtri da me adottati in questo caso; eventualmente va bene anche una macro in questo caso.

Ringrazio in anticipo a chiunque mi risponda.

Ciao.

PS E' evidente che il secondo quesito include il primo, però io mi auguro che al primo quesito si possa giungere ad una formula senza macro.

1 - No

2 - Solo ricorrendo a macro

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2011-12-06T10:29:19+00:00

Grande! Funziona benissimo. Ho solo 2 cose da chiederti

Ma è possibile separare i vari filtri nelle relative colonne? Ad esempio tabella A1:E100, sarebbe bello poter visualizzare i filtri attivi in A105, B105, C105, D105 e E105 (dove non c'è filtro "")

Ovviamente mi interesserebbe anche limitare il campo della tabella? (se riconosce dunque solo il campo della tabella.

Ecco un esempio in cui ho filtrato solo per colonna A e colonna C:

Dato1 Dato2 Dato3 Dato4
a5 b15 c29 d37
a3 b11 c25 d34
a10 b11 c25 d35
a5 b17 c26 d35
a3 b15 c22 d33
Filtri ColA Filtri ColB Filtri ColC Filtri ColD
a10, <br><br>a3, <br><br>a5, <br><br>a6 c22, <br><br>c25, <br><br>c26, <br><br>c29

Grazie e scuami la pignoleria

Restando nel mio esempio, prova a sostituire il codice con questo:

Public Sub m()

    Dim sh As Worksheet

    Dim rng As Range

    Dim rCol As Range

    Dim c As Range

    Dim lURiga As Long

    Dim col As Collection

    Dim v As Variant

    Dim s As String

    Dim lCol As Long

    Dim lriga As Long

    Dim sCriteria As String

    Dim lCont As Long

    Dim lRifRiga As Long

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    lCont = 101

    With sh

        If .AutoFilterMode Then

            Set rng = .AutoFilter.Range

            lURiga = rng.SpecialCells(xlCellTypeLastCell).Row

            For lCol = 1 To rng.Columns.Count

                lRifRiga = .Cells(.Rows.Count, lCol).End(xlDown).Row

                .Range(Cells(101, lCol), Cells(lRifRiga, lCol)).Clear

            Next

            If rng.Rows.Count > rng.SpecialCells(xlCellTypeVisible).Rows.Count Then

                On Error Resume Next

                For lCol = 1 To rng.Columns.Count

                    sCriteria = .AutoFilter.Filters(lCol).Criteria1

                    If Err.Number = 1004 Then

                        Err.Number = 0

                    Else

                        Set rCol = Range(rng(1, lCol), rng(lURiga, lCol)).SpecialCells(xlCellTypeVisible)

                        Set col = New Collection

                        For Each c In rCol

                            col.Add CStr(c.Value), CStr(c.Value)

                        Next

                        For Each v In col

                            's = s & v & ","

                           .Cells(lCont, lCol).Value = v

                           lCont = lCont + 1

                        Next

                        Set col = Nothing

                        lCont = 101

                    End If

                Next

                '.Range("F1").Value = Left(s, Len(s) - 1)

            Else

                '.Range("F1").Value = "Nessun criterio"

            End If

        End If

    End With

    Set c = Nothing

    Set rCol = Nothing

    Set col = Nothing

    Set rng = Nothing

    Set sh = Nothing

End Sub

NOTA. Metto i criteri da riga 101 per ciascuna colonna. Modifica come preferisci.

La risposta è stata utile?

0 commenti Nessun commento

24 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-11-24T08:28:37+00:00

    Grazie a te Mauro.

    La cella in cui dovrebbero comparire questi criteri di filtro sono contenuti nella Cella unita C2:E2.

    Notavo inoltre che la macro legge fino al 2° criterio. bisogna impostare tanti if quanti sono i casi possibili?

    Ciao e grazie come sempre.

    Due criteri sono lo standard per tutte le versioni di Excel.

    Più di due criteri sono stati introdotti con la versione 2007.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-11-24T04:23:58+00:00

    Grazie a te Mauro.

    La cella in cui dovrebbero comparire questi criteri di filtro sono contenuti nella Cella unita C2:E2.

    Notavo inoltre che la macro legge fino al 2° criterio. bisogna impostare tanti if quanti sono i casi possibili?

    Ciao e grazie come sempre.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-11-23T14:43:13+00:00

    Certo:

    1. nome foglio: " As-Built register"
    2. C3:C (fino all'ultima cella valore NON vuoto)
    3. E2 (in realta è una cella unita C2:E2... in questo caso come faccio ad individuare questa cella unione di singole celle?)

    Grazie a te.

    Ciao.

    Allora....

    La macro qui sotto, da copia/incollare in modulo standard, recupera i vari criteri impostati nelle colonne del filtro automatico del foglio As-Built report:

    Public Sub m()

        Dim sh As Worksheet

        Dim ftr As Filter

        Dim s As String

        Dim lCol As Long

        lCol = 1

        Set sh = ThisWorkbook.Worksheets("AS-Built register")

        With sh

            If .AutoFilterMode Then

                For Each ftr In .AutoFilter.Filters

                    s = ""

                    If ftr.On Then

                        s = s & "Criterio1: " & ftr.Criteria1

                        If ftr.Operator Then

                            s = s & " - Criterio2: " & ftr.Criteria2

                        End If

                    End If

                    If Len(s) > 0 Then

                        MsgBox "Colonna del filtro: " & lCol _

                            & vbNewLine & s

                    End If

                    lCol = lCol + 1

                Next

            End If

        End With

        Set ftr = Nothing

        Set sh = Nothing

    End Sub

    Partiamo da qui e, scusami, ripetimi dove dobbiamo mettere i dati che adesso vengono mostrati nelle MsgBox. Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento