|
|
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.
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
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.
Grazie.
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.
Grazie mille, la macro funziona alla perfezione!!!!
Bene, un'altra tacca sul calcio del fucile... ;-)
Grazie per il cortese riscontro, buona giornata e buon lavoro.
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....
Ma tu, la lanci la macro? Non abbiamo la possibilità di intercettare l'evento filtro. La macro va lanciata a parte. Puoi, ad esempio, associarle un tasto di scelta rapida.
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
Immetti l'ID thread del thread in cui si esegue l'unione
Per segnalare un abuso, accedi o continua senza accedere
Grazie.
|
|
|
|
Non possiedi uno di questi account?