wie kann ich mit VBA den Inhalt der letzten gefüllten Zelle in Spalte 37 ab Zeile 6 ermitteln?
Danke und Gruß
Martin
Sub test()
R = Cells(Rows.Count, 37).End(xlUp).Row
if R
msgbox Application.WorksheetFunction.Match("", Range(Cells(6, 37), Cells(Rows.Count, 37)), False) + 5
Dim l As Long
Dim r As Range
For Each r In Range(Cells(6, 37), Cells(Cells(Rows.Count, 37).End(xlUp).Row, 37))
If r.Value = "" And r.Offset(-1, 0).Value "" Then l = r.Row
Next r
MsgBox l
Ist die Liste gefiltert, wird es nochmal schwieriger ... aber davon schreibst du nichts, darum gehe ich davon aus es ist kein Filter gesetzt.
Um die letzte Zelle mit Wert ab Zeile 6 in Spalte 37 zu ermitteln, kannst du VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu öffnen.
Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" klickst und "Modul einfügen" wählst.
Kopiere den folgenden VBA-Code in das Modul:
Sub LetzteZelleMitWert()
Dim R As Long
R = Cells(Rows.Count, 37).End(xlUp).Row
MsgBox "Die letzte Zelle mit Wert in Spalte 37 ist in Zeile " & R
End Sub
Schließe den VBA-Editor und gehe zurück zu Excel.
Drücke ALT + F8
, wähle LetzteZelleMitWert
aus und klicke auf "Ausführen".
Problem: Die Rückgabe zeigt 1048576 an.
Problem: Die letzte Zelle hat eine Formel, aber das Ergebnis ist leer.
Dim l As Long
Dim r As Range
For Each r In Range(Cells(6, 37), Cells(Cells(Rows.Count, 37).End(xlUp).Row, 37))
If r.Value = "" And r.Offset(-1, 0).Value <> "" Then l = r.Row
Next r
MsgBox "Die letzte Zelle mit Formelergebnis ist in Zeile " & l
Neben VBA kannst du auch Excel-Formeln verwenden, um die letzte Zelle mit einem Wert zu ermitteln. Eine einfache Möglichkeit ist die Verwendung von VERGLEICH
:
=VERGLEICH("",A6:A1048576,0)
Diese Formel gibt die Position der ersten leeren Zelle in dem angegebenen Bereich zurück.
Hier sind einige praktische Beispiele, um die letzte Zelle mit Wert in Spalte 37 zu ermitteln:
Direkte Abfrage der letzten Zelle mit Wert:
Sub LetzteZelle()
MsgBox Cells(Rows.Count, 37).End(xlUp).Row
End Sub
Ermitteln der letzten Zelle mit Formelergebnis:
Dim lastRow As Long
lastRow = Application.WorksheetFunction.Match("", Range(Cells(6, 37), Cells(Rows.Count, 37)), False) + 5
MsgBox "Die letzte Zelle mit Formelergebnis ist in Zeile " & lastRow
Option Explicit
in deinem VBA-Modul, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler frühzeitig zu erkennen.1. Wie kann ich den Code anpassen, wenn ich eine andere Spalte verwenden möchte?
Passe einfach die Zahl in Cells(Rows.Count, 37)
an die gewünschte Spalte an.
2. Was mache ich, wenn meine Daten gefiltert sind? Wenn die Liste gefiltert ist, kann die Ermittlung der letzten Zelle komplizierter sein. Du musst sicherstellen, dass du die Filterbedingungen berücksichtigst oder die Filter vor der Ausführung des Codes aufhebst.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen