Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1952to1956
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Letzte beschriebene Zelle im Zellbereich

Letzte beschriebene Zelle im Zellbereich
03.11.2023 18:05:11
Alpe
Halo Zusammen,

ich habe etwas spezielles.
Wie kann ich in Range ("C22:C83") die letzte benutzte Zelle finden.
Für die letzte Zeile in einer Spalte, findet man überall etwas.
Bis jetzt mach ich das über:

For Zl = 22 To 83 Step 1
If Cells(Zl, 3) = "" Then
Rows(zl).EntireRow.Hidden = True
Exit for
End if
Next

Das Problem ist, für den Fall das eine Leerzeile dazwischen ist, wird der Rest der Zeilen ausgeblendet.
Das möchte ich dadurch umgehen, dass ich den letzte Eintrag im Bereich finde.

THX

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte beschriebene Zelle im Zellbereich
03.11.2023 18:12:57
onur
Dim letzte

.....
.....
For ze = 22 To 83 Step 1
If Cells(ze, 3) > "" Then letzte=ze
Next
AW: Letzte beschriebene Zelle im Zellbereich
03.11.2023 18:19:24
Piet
Hallo

über LastZell ermitteln, gibt es tausende Vorschläge im Internet. Hier eine übliche Standard Version:
Du kannst mit Cells(Rows.Count, 3)) vom Tabellenende suchen, oder mit Cells(84, 3 ) ab Zeile 84 nach oben.
'LastZell in Spalte C ermitteln (oder 84 benutzen) - Step 1 kannst du weglassen, ohne Angabe ist immer Step=1
lz1 = Cells(Rows.Count, 3).End(xlUp).Row
For ZL = 22 To lz1

mfg Piet
Anzeige
AW: Letzte beschriebene Zelle im Zellbereich
03.11.2023 18:55:56
Yal
Hallo zusammen,

ja, letzte in Spalte ... End(xlUp)
Eigentlich genau das gleich, nur ein paar Schritte mehr:
_ letzte Zelle im Bereich nehmen, wenn nicht leer, that's it
_ wenn leer, dann die erste nicht leer nach oben mit End(xlUp) finden

Function Letztebefüllte(rng As Range) As Range

Dim Z
Set Z = rng.Cells(rng.Cells.Count) 'Letzte Zelle vom Bereich
If Z.Value = "" Then Set Z = Z.End(xlUp)
Set Letztebefüllte = Z
End Function

Sub test()
Debug.Print Letztebefüllte(ActiveSheet.Range("C22:C83")).Address
End Sub


der Haken dabei: wenn der gesamte getestete Bereich C22:C83 leer ist, bekommt man eine Zelle ausserhalb des Bereiches. Das muss man testen und dementsprechend agieren:

Sub test()

Dim Z

Set Z = Letztebefüllte(ActiveSheet.Range("C22:C83"))
If Intersect(ActiveSheet.Range("C22:C83"), Z) Is Nothing Then
'Ausserhalb, was nun?
Else
'ist drin also ...
MsgBox Z.Address
End
End Sub


Alternativ wäre in der Function "LetzteBefüllte" Nothing zu zurückgeben (Du musst abwegen, ob Du trotzdem die Zelle wissen willst, auch ausserhalb des Bereiches):
Function Letztebefüllte(rng As Range) As Range

Dim Z
Set Z = rng.Cells(rng.Cells.Count) 'Letzte Zelle vom Bereich
If Z.Value = "" Then Set Z = Z.End(xlUp)
Set Letztebefüllte = Intersect(Z, rng) 'Z selbst, wenn drin, nothing sonst
End Function

Sub test()
Dim Z

Set Z = Letztebefüllte(ActiveSheet.Range("C22:C83"))
If Z Is Nothing Then
'Ausserhalb, was nun?
Else
'ist drin also ...
MsgBox Z.Address
End
End Sub


VG
Yal
Anzeige
AW: Letzte beschriebene Zelle im Zellbereich
06.11.2023 20:55:38
Alpe
Hallo Zusammen,

leider habe hatte ich keine Zeit vorher zu antworten.

So, ich habe den Vorschlag von Yal eingebaut, lief anfangs super und viel schneller als "For Next".

ABER beim zweiten Block für Range("c88:c113") wo c88 & c89 belegt sind kommt eine Kommazahl (0,75 ich finde auch keinen Zusammenhang zur Kommazahl )raus, wobei es ohne Einträge funktioniert hat.
Weiterhin ist mir aufgefallen je öfter man es durchlaufen lässt desto mehr Fehlfunktionen treten auf.

Seltsam, dieses Problem das es später nicht funktioniert hatte ich bei anderen Versuchen auch. Hat einer eine Idee?
Anzeige
AW: Letzte beschriebene Zelle im Zellbereich
06.11.2023 20:59:16
onur
1) Yal hat DREI Vorschläge gemacht - welchen hast du genommen?
2) Auch ANDERE haben Vorschläge gepostet, die du nicht einmal kommentiert hast !
AW: Letzte beschriebene Zelle im Zellbereich
07.11.2023 12:40:47
Yal
Moin,

"Weiterhin ist mir aufgefallen je öfter man es durchlaufen lässt desto mehr Fehlfunktionen treten auf."

vielleicht muss man hier was klarstellen: Computer machen, was man den sagt, und nicht "ich mache es einmal so, dann danach anders". Es sind daher keine "Fehlfunktion", sondern "Fehlanleitung" (daher der klassische Spruch "das Problem sitzt vor dem Computer").

Das Problem liegt in der Daten, die der Computer bewerten muss, um etwas zu machen: wenn diese sich im Lauf der Behandlung ändern, dann macht der Rechner immer noch, was man im gesagt hat: negative Werte rot, positive grün. Alles klar. Oh: jetzt sind alle Werte null und ich habe keine Anweisung, wie ich damit umgehen soll, dann bleibt alles grün oder rot trotz null.

Zweitens: Du gibt uns ein sehr eingeschränkte Teil des Gesamtes und redet von Sachverhalt ausserhalb von was Du gesprochen hatte. Es ging um "C22:C83" und jetzt spinnt es bei "C88:C113". Hmm... woher sollten wir das wissen?

Drittens: wir wissen gar nicht, was nach dem Prüfung passiert, auch auch nicht wie. Wenn Zelleninhalt per Code geändert werden und ein Worksheet_Change-Ereignis gibt, die nicht Ereignis-blockierend aggiert (Application.EnableEvents = False), dann hat man den Salat. Sehr wahrscheinlich ist es auch die Ursache deines Performance-Problem.

Kurzum, ohne eine von kritische Daten bereinigte, aber troztdem aussagekräftige Datei deinerseits ist es nur "ich sehe was, was Du nicht siehst"-Spiel.

VG
Yal
Anzeige
AW: Letzte beschriebene Zelle im Zellbereich
03.11.2023 19:00:13
onur
Warum so kompliziert? :)
Ich hab doch schon die Lösung gepostet.
AW: Letzte beschriebene Zelle im Zellbereich
03.11.2023 19:24:29
Yal
Hallo Onur,

die Komplexität kommt nur von den verschiedenen Möglichkeiten...
Bei deiner Antwort-Geschwindigkeit muss ich meine Lösung posten, wenn Du schon lang beantwortet hast (wovon ich meistens nichts mitbekomme, weil ich noch am grübeln bin).

Ich wollte auf alle Fälle auf dem "Für die letzte Zeile in einer Spalte, findet man überall etwas." aufbauen, daher die Lösung über den End(xlUp)

VG
Yal
AW: Letzte beschriebene Zelle im Zellbereich
03.11.2023 20:14:52
onur
"End(xlUp) " war auch MEIN erster Impuls, bin aber stutzig geworden, weil er schrieb, das er das schon getestet hätte. Dann erst ist mir, bei genauerem Durchlesen,. klar geworden, dass er nicht die ganze Spalte meint, sondern die Spalte, aber in einem bestimmten Zeilenbereich. :)
Anzeige
AW: Letzte beschriebene Zelle im Zellbereich
06.11.2023 21:24:57
Alpe
Hallo Zusammen,

wie geschrieben über letzte Spalte findet man sehr viel, aber es geht um den Zellbereich.

For Nest Schleifen sine relativ langsam.

Den LETZTEN Vorschlag von Yal habe ich eingebaut.

Mittlerweile denke liegt das Problem bei "rng.Cells(rng.Cells.Count)" dies wird m. e. bei wiederholten Durchlauf nicht "aktualisiert" !?!
Begründung im 1. Durchlauf steht 62 als Inhalt. Später etwas mit 36000.
AW: Letzte beschriebene Zelle im Zellbereich
06.11.2023 21:37:41
onur
"For Nest Schleifen sind relativ langsam. " - Ist das deine VBA-Expertenmeinung?
Für 20.000 Zeilen: 0,071825 Sekunden
Für deine mickrigen 62 Zeilen: Nicht messbar.
Anzeige
AW: Letzte beschriebene Zelle im Zellbereich
06.11.2023 21:38:06
Alpe
Später etwas mit 36000.

ist falsch

der Inhalt ist 360448!
AW: Letzte beschriebene Zelle im Zellbereich
03.11.2023 18:21:19
onur
Klappt aber nicht, wenn in Zeile 85 oder so was steht.
AW: Letzte beschriebene Zelle im Zellbereich
03.11.2023 18:15:02
onur
Step 1 ist Quatsch, da Step immer 1 ist, es sei denn du schreibst explizit Step 2.
Kannst du also löschen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige