Office

  • Office 2007
  • Office
  • Tutti i forum
Domanda

Formula per visualizzare la prima cella visibile di colonna filtrata

Si applica a:
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.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento
1 Utente aveva
questa domanda

È stato utile?

1

Vota

Risposta
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

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

1

Vota

Risposta

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,
a3,
a5,
a6
  c22,
c25,
c26,
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.

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

1

Vota

Risposta
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

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

Ok grazie mille.

E' possibile sapere che istruzione serve per risalire al nome/criterio adottato per il filtro?

Grazie ancora in anticipo.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

È stato utile?

Ok grazie mille.

E' possibile sapere che istruzione serve per risalire al nome/criterio adottato per il filtro?

Grazie ancora in anticipo.


Per istruzione intendi: una macro che recuperi quanto chiedi?

Se è così, mi serve sapere:

  • il nome del foglio dove hai il filtro
  • il Range del filtro
  • dover mettere i valori recuperati(foglio/celle)

Grazie.

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

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.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

È stato utile?

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.

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

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.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

È stato utile?

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.

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

Scusami, non avevo specificato all'inizio che uso excel 2007, quindi posso utilizzare più di 2 criteri.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

È stato utile?

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.

Come si può editare il risultato in una cella (C2), magari con più di due criteri?
Sarebbe anche bello poter vedere, anziché il numero della colonna, l'intestazione della stessa colonna.
Il mio obiettivo in pratica sarebbe quello di ottenere un sommario dei criteri di filtro da poter stampare.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

È stato utile?

Ciao, ho trovato questa macro fatta da Stephen Bullen, che fa esattamente quello che ho chiesto. Nell'intestazione posso così avere un elenco dei filtri che faccio, per ciascuna colonna.

Function FilterCriteria(Rng As Range) As String
    Dim Filter As String
    Filter = ""
    On Error GoTo Finish
    With Rng.Parent.AutoFilter
        If Intersect(Rng, .Range) Is Nothing Then GoTo Finish
        With .Filters(Rng.Column - .Range.Column + 1)
            If Not .On Then GoTo Finish
            Filter = .Criteria1
            Select Case .Operator
                Case xlAnd
                    Filter = Filter & " AND " & .Criteria2
                Case xlOr
                    Filter = Filter & " OR " & .Criteria2
            End Select
        End With
    End With
Finish:
    FilterCriteria = Filter
End Function


E' esattamente quello che cercavo, anche se mi rendo conto che è impossibile ottenere criteri complessi che vanno oltre la logica dell' AND o OR o maggiore, minore etc etc.

Non esiste dunque un escamotage? Eppure è strano, passando col cursore del mouse sul filtro hai la possibilità di visualizzare tutti i filtri che ti pare, senza la necessità di seguire la logica di operatori logici o criteri matematici.
    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento
<< PrecedentePagina di 3 Successiva >>

I messaggi contrassegnati come risposte non possono essere eliminati

Per eliminare questo messaggio, annulla prima il contrassegno di risposta.

Motivo per rimuovere l'inoltro


Unisci

Immetti l'ID thread del thread in cui si esegue l'unione


La risposta sarà pubblicata in un thread pubblico

Stai rispondendo a una parte pubblica di questo thread. Per rispondere in privato, fai clic su Annulla, seleziona la scheda Messaggi privati e scegli Rispondi sul messaggio privato.

Non visualizzare questo messaggio in futuro

Per segnalare un abuso, accedi o continua senza accedere

Grazie.

Segnala abuso

Tipo di abuso:

Dettagli (facoltativi):

Segnala abuso

Tipo di abuso:

Dettagli (obbligatori):
Immetti i caratteri che vedi (obbligatorio):
Digita i numeri visualizzati nell'immagine.
Riproduci l'audio e digita i numeri che ascolti.
Mostra un'altra immagine.

Accedi

Puoi accedere anche con l'account di Hotmail, Xbox Live, Messenger o msn.

Non possiedi uno di questi account?

Accesso in corso...
La pagina si aggiornerà automaticamente una volta effettuato l'accesso.
Se riscontri problemi, puoi chiudere il messaggio e riprovare a collegarti.