Macro dati filtro

Salve a tutti,
avrei bisogno di una macro per identificare ed inserire in una determinata cella il contenuto della prima riga di una determinata colonna dopo aver eseguito un filtro.
Mi spiego nello specifico:
In un foglio di lavoro in colonna ho le seguenti informazioni:
anno,mese,fornitore,trasportatore,materiale1, materiale2, materiale3 ecc. ecc.
in riga invece ho i vari anni e mesi a cui associo un trasportatore.
Ora, ho bisogno di inserire nella cella G3 il primo nome visualizzato nella colonna nr.4 del trasportatore dopo aver filtrato i dati.
Ringrazio in anticipo.
 

Informazioni domanda


Ultimo aggiornamento febbraio 21, 2018 Visualizzazioni 452 Si applica a:
Risposta
La tabella da filtrare è in un foglio chiamato conferimenti, e la cella g3 si trova sullo stesso foglio.
La tabella si estende dalla cella A8 alla cella P74, ma in futuro subirà modifiche ovvero verranno aggiunte delle righe e/o colonne.
Grazie in anticipo.


Prova:

Public Sub m()
    Dim sh As Worksheet
    Dim rng As Range
    Dim a As Range
    Set sh = ThisWorkbook.Worksheets("Foglio1")
    With sh
        Set rng = .Range(.Range("A8").CurrentRegion.Address).SpecialCells(xlCellTypeVisible)
        On Error Resume Next
        If rng.Areas(1).Rows.Count > 1 Then
            .Range("G3").Value = .Range("D9").Value
        Else
            Set a = .Range(rng.Areas(2).Address)
            .Range("G3").Value = a.Cells(1, 4).Value
        End If
    End With
    Set a = Nothing
    Set rng = Nothing
    Set sh = Nothing
End Sub

 

NOTA. La tabella deve avere sopra e sotto almeno una riga vuota e a dx una colonna vuota.

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

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.

Risposta
Purtroppo devo rettificare.... La macro restituisce sulla cella sempre lo stesso valore ovvero la cella D9 anche se questa non viene visualizzato dopo aver applicato il filtro....
mi spiego meglio, eseguendo un filtro vedo la riga ad esempio nr 52 ma il riferimento va sempre a pescare la riga nr 9....


Forse ho trovato una soluzione al tuo problema, ripescando un vecchio post (2005) sul newsgroup m.p.i.o.e. del grande Fernando Cinquegrani.

Nel modulo di codice del foglio dove hai la tabella da filtrare metti questo codice:

 

Private Sub Worksheet_Calculate()
    Call m
End Sub

Private Sub m()
     Dim sh As Worksheet
     Dim rng As Range
     Dim a As Range
     Set sh = ThisWorkbook.Worksheets("Foglio1")
     With sh
         Set rng = .Range(.Range("A8").CurrentRegion.Address).SpecialCells(xlCellTypeVisible)
         On Error Resume Next
         If rng.Areas(1).Rows.Count > 1 Then
             .Range("G3").Value = .Range("D9").Value
         Else
             Set a = .Range(rng.Areas(2).Address)
             .Range("G3").Value = a.Cells(1, 4).Value
         End If
     End With
     Set a = Nothing
     Set rng = Nothing
     Set sh = Nothing
 End Sub

In una cella (vedi tu quale) metti questo:

=SUBTOTALE(9;A9:INDIRETTO("A" & CELLA("Riga";INDICE(A9:A100;CONTA.VALORI(A:A)))))

La cella che contiene questa espressione può essere nascosta o trovarsi anche in un altro foglio(devi però modificarla in questo ultimo caso). Inoltre in colonna A da A8 ad An non devono esserci righe vuote e non devono esserci dati dopo An.

Qui trovi il file di esempio:

http://www.maurogsc.eu/esempiforum12/primovalorefiltro.zip

 

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

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.