Excel - Trovare l'ultima cella anche se nascosta

Asked By archimede.i on 26-Jun-12 10:27 AM
Ciao a Tutti,
ho un piccolo problemino nel cercare l'ultima cella scritta su una
colonna.
Molte delle righe ho necessit=E0 di nasconderle (contengono dei valori),
ma viene un momento in cui ho bisogno di conoscere l'ultima cella che
contiene un valore anche se si trova su una riga nascosta.
Con il metodo  Sheets(1).Range(("A1"),Cells(Rows.Count,
1).End(xlUp)).Row trovo l'ultima cella visibile, invece io vorrei
trovare in assoluto l'ultima cella che contiene un valore sia che si
trovi in area visibile o meno della colonna A.
Provando con SpecialCells(xlLastCell) non ci sono cmq riuscito.
C'=E8 una soluzione secondo Voi?
Grazie e Ciao Ciao


plinius replied to archimede.i on 26-Jun-12 12:04 PM
Ciao a Tutti,
ho un piccolo problemino nel cercare l'ultima cella scritta su una
colonna.
Molte delle righe ho necessità di nasconderle (contengono dei valori),
ma viene un momento in cui ho bisogno di conoscere l'ultima cella che
contiene un valore anche se si trova su una riga nascosta.
Con il metodo  Sheets(1).Range(("A1"),Cells(Rows.Count,
1).End(xlUp)).Row trovo l'ultima cella visibile, invece io vorrei
trovare in assoluto l'ultima cella che contiene un valore sia che si
trovi in area visibile o meno della colonna A.
Provando con SpecialCells(xlLastCell) non ci sono cmq riuscito.
C'è una soluzione secondo Voi?
Grazie e Ciao Ciao

*****************

Function ult() As Long
Dim rng As Range, n As Long, i As Long
Set rng = Intersect(Sheets(1).UsedRange, Sheets(1).Range("A:A"))
If rng Is Nothing Then Exit Function
n = rng.Rows.Count - 1
Set rng = rng.Offset(n).Resize(1)
For i = 0 To n
If Not IsEmpty(rng.Offset(-i)) Then Exit For
Next
ult = n - i + 1
End Function

Ciao,
E.
Mauro Gamberini replied to archimede.i on 26-Jun-12 12:09 PM
ho un piccolo problemino nel cercare l'ultima cella scritta su una
colonna.
Molte delle righe ho necessità di nasconderle (contengono dei valori),
ma viene un momento in cui ho bisogno di conoscere l'ultima cella che
contiene un valore anche se si trova su una riga nascosta.
Con il metodo  Sheets(1).Range(("A1"),Cells(Rows.Count,
1).End(xlUp)).Row trovo l'ultima cella visibile, invece io vorrei
trovare in assoluto l'ultima cella che contiene un valore sia che si
trovi in area visibile o meno della colonna A.
Provando con SpecialCells(xlLastCell) non ci sono cmq riuscito.
C'è una soluzione secondo Voi?
*******************************+

Capito poco.
Prova:

Public Sub m()
Dim rng As Range
Set rng = ActiveSheet.Range("A1:A" &
Rows.Count).CurrentRegion.Columns(1)
MsgBox rng.Address
Set rng = Nothing
End Sub

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
Mauro Gamberini replied to Mauro Gamberini on 26-Jun-12 12:11 PM
Riproviamo a vedere se così mantiene
un formato corretto senza mandare a capo
quando vuole lui:

Public Sub m()
Dim rng As Range
Set rng = ActiveSheet.Range("A1:A" & _
Rows.Count).CurrentRegion.Columns(1)
MsgBox rng.Address
Set rng = Nothing
End Sub

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
Scossa replied to archimede.i on 26-Jun-12 04:43 PM
Puoi usare il metodo .find().


Function UR(Optional ByVal rng As Range) As Long

If rng Is Nothing Then
Set rng =3D Cells
End If

On Error Resume Next
UR =3D rng.Find(what:=3D"*", _
after:=3Drng.Cells(1), _
LookAt:=3DxlPart, _
LookIn:=3DxlFormulas, _
SearchOrder:=3DxlByRows, _
SearchDirection:=3DxlPrevious, _
MatchCase:=3DFalse).Row
Set rng =3D Nothing
End Function
archimede.i replied to Scossa on 27-Jun-12 01:08 PM
Ciao Plinius , Mauro e Scossa,
Grazie tantissimo per i Vostri consigli, adesso sono riuscito!
Praticamente nella colonna A ho inserito dei valori ma talvolta questi
valori non sono pi=F9 visibili perch=E9 ho necessit=E0 di nascondere la
relativa riga.
Con il metodo  Sheets(1).Range(("A1"),Cells(Rows.Count,
1).End(xlUp)).Row trovavo solo l'ultima cella visibile e nel caso la
vera ultima cella era nascosta non avevo il dato corretto.
Allora grazie al Vostro suggerimento ho capito che dovevo trovare
l=92intersezione tra la colonna A e l=92UsedRange del foglio, contare le
righe intersecate  e spazzolarle con un ciclo fino a scoprire la cella
che conteneva l=92ultimissimo valore.
Questo metodo adesso mi permette di scoprire la vera ultima cella
anche se nascosta.
Avevo bisogno di questo sistema poich=E9 dovevo inserire un nuovo dato
nell=92ultimissima riga di un elenco, solamente che avendo per necessit=E0
dovuto nascondere delle righe non riuscivo ad avere il vero ultimo
valore.
Adesso grazie a Tutti Voi mi avete aiutato a risolvere il problema.
Grazie tantissimo per la Vostra collaborazione anche perch=E9 non avrei
mai pensato a questa idea.
Grazie e Ciao Ciao

Sub trova_ultima_cella_scritta_anche_nascosta()
Dim ult As Long, rng As Range, n As Long, i As Long
Sheets(2).UsedRange.Interior.Color =3D xlNone
Set rng =3D Intersect(Sheets(2).UsedRange, Sheets(2).Range("A:A"))
If rng Is Nothing Then Exit Sub
n =3D rng.Rows.Count
rng.Interior.Color =3D vbYellow
For i =3D n To 1 Step -1
If Not IsEmpty(rng.Cells(i, 1)) Then
MsgBox rng.Cells(i, 1).Address
Exit For
End If
Next
Set rng =3D Nothing
End Sub