Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

.Cells(Rows.Count, 1).End(xlUp).Row

Forumthread: .Cells(Rows.Count, 1).End(xlUp).Row

.Cells(Rows.Count, 1).End(xlUp).Row
08.07.2014 08:35:07
Erik Kaubitzsch

Liebe Gemeinde,
ich benutze folgenden Code (innerhalb einer With-Anweisung), um die letzte beschriebene Zelle einer Spalte zu ermitteln:


.Cells(Rows.Count, 1).End(xlUp).Row

Funktioniert auch wunderbar, nur leider habe ich festgestellt, dass die Zeile den Rückgabewert 1 hat, wenn die erste Zeile beschrieben ist als auch wenn die Spalte leer ist.
Mein erster Gedanke war, dass mit einer If-Anweisung zu prüfen und dann eben danach entscheiden zu lassen. Gibt es dazu eine bessere Alternative?
Ich danke für einen Hinweis und die Hilfe schonmal im Voraus!
Gruß
Erik

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .Cells(Rows.Count, 1).End(xlUp).Row
08.07.2014 08:47:15
Hajo_Zi
Hallo Erik,
das mit prüfen ob erste Zelle "" ist die einzige Lösung.
Irgendwann wird Dir auch auffallen das dies Ergebnis falsch, falls letzte Zelle in de Spalte belegt.
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Bestimmung der letzten beschriebenen Zelle in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel, indem Du ALT + F11 drückst.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.

  3. Füge den folgenden Code ein:

    Sub LetzteZeileErmitteln()
       Dim letzteZeile As Long
       letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
       MsgBox "Die letzte beschriebene Zeile in Spalte A ist: " & letzteZeile
    End Sub
  4. Führe das Makro aus, indem Du F5 drückst oder das Makro über das Menü „Ausführen“ startest. Du solltest nun eine Meldung mit der letzten beschriebenen Zeile in Spalte A sehen.


Häufige Fehler und Lösungen

  • Problem: cells(rows.count, 1).end(xlup).row gibt 1 zurück, wenn die erste Zeile beschrieben ist oder die Spalte leer ist.

    • Lösung: Verwende eine If-Anweisung, um die erste Zelle zu prüfen:
    If IsEmpty(Cells(1, 1)) Then
        letzteZeile = 0
    Else
        letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
    End If
  • Problem: cells(rows.count, 1).end(xlup).row funktioniert nicht wie erwartet.

    • Lösung: Überprüfe, ob Du die richtige Spalte angegeben hast. Statt 1 kannst Du auch eine andere Spaltennummer verwenden, wie in cells(rows.count, 2).end(xlup).row.

Alternative Methoden

  • Direktes Arbeiten mit einem Range-Objekt: Du kannst die letzte Zeile auch ermitteln, indem Du ein Range-Objekt verwendest:

    Dim letzteZeile As Long
    letzteZeile = Range("A" & Rows.Count).End(xlUp).Row
  • Mit ActiveSheet: Wenn Du sicherstellen möchtest, dass Du immer auf das aktive Arbeitsblatt zugreifst, kannst Du Folgendes verwenden:

    letzteZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Praktische Beispiele

  • Zählen von Datensätzen in einer Tabelle:

    Dim anzahlDatensätze As Long
    anzahlDatensätze = Cells(Rows.Count, 1).End(xlUp).Row
    MsgBox "Anzahl der Datensätze: " & anzahlDatensätze
  • Schleife durch alle beschriebenen Zeilen:

    Dim i As Long
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
       ' Hier kannst Du Deinen Code einfügen
    Next i

Tipps für Profis

  • Verwende .Cells anstelle von Range, um die Lesbarkeit zu erhöhen und Fehler zu reduzieren. Zum Beispiel:

    Dim letzteZeile As Long
    letzteZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
  • Denke daran, dass End(xlUp) die letzte nicht leere Zelle in der angegebenen Spalte zurückgibt. Wenn Du die letzte Zeile in einer bestimmten Zeile scannen möchtest, kannst Du End(xlToLeft) verwenden.


FAQ: Häufige Fragen

1. Warum gibt cells(rows.count, 1).end(xlup).row manchmal 1 zurück?
Das passiert, wenn die erste Zelle in der Spalte leer ist oder wenn nur die erste Zeile beschrieben ist.

2. Wie kann ich die letzte beschriebene Zelle in einer anderen Spalte ermitteln?
Ändere einfach die Spaltennummer in der Funktion, z.B. cells(rows.count, 2).end(xlup).row für Spalte B.

3. Funktioniert dieser Code in allen Excel-Versionen?
Ja, dieser VBA-Code sollte in den meisten modernen Excel-Versionen wie Excel 2010, 2013, 2016 und 2019 funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige