Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
980to984
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
980to984
980to984
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

letzte Zeile

letzte Zeile
28.05.2008 15:57:10
Sandro
Hallo an alle
die letzte Zeile ermittle ich mit

MsgBox Cells(Cells.Rows.count, 1).End(xlUp).Row


diese Formel klappt aber nicht, wenn in meiner Tabelle z.B. die letzten 5 Zeilen ausgeblendet sind.
Beispiel: meine Tabelle ist 100 Zeilen groß, blende ich die 5 letzten Zeilen aus, meldet Excel die Zeile 95
Wie muß die Formel lauten, das Excel 100 meldet?
Gruß Sandro

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte Zeile
28.05.2008 16:19:00
Sandro
Grüß Dich Beate
danke für den Tipp, leider klappt es mit

usedrange

auch nicht ganz. Ich brauche nämlich genau die letzte Zeile von Spalte A, in meinen Fall 100 (die Angabe kann natürlich variieren). die Zeilenzahl der anderen Spalten dürfen nicht berücksichtigt werden (können mehr sein).
Wer hat den entscheidenden Tipp?
Grüße Sandro

Anzeige
AW: letzte Zeile
28.05.2008 16:24:03
Renee
Hi Sandro,
Falls es keine Leerzellen in Spalte A hat:

Msgbox EVALUATE("=COUNTA(A:A)")


GreetZ Renée

AW: letzte Zeile
28.05.2008 16:28:12
Sandro
Danke Renee
sind leider Leerzellen vorhanden!
Gruß Sandro

AW: letzte Zeile
28.05.2008 16:39:00
Renee
Hi Sandro,
Dann halt noch ein kleiner Zusatz:

MsgBox Evaluate("=COUNTA(A:A)") + Range("A:A").SpecialCells(xlCellTypeBlanks).Count


GreetZ Renée

AW: letzte Zeile
28.05.2008 16:13:00
Rudi
Hallo,

Function LastRow(wks As Worksheet, _
Optional lngFirstRow As Long, _
Optional lngLastRow As Long) As Long
Dim lngTmp As Long, blnFound As Boolean
With Application
If .CountA(wks.Rows(wks.Rows.Count)) Then
LastRow = wks.Rows.Count: Exit Function
End If
If .CountA(wks.Cells) = 0 Then
LastRow = 0: Exit Function
End If
If lngFirstRow = 0 Then lngFirstRow = 1
If lngLastRow = 0 Then lngLastRow = wks.Rows.Count
lngTmp = (lngFirstRow + lngLastRow) / 2
If lngLastRow > lngFirstRow + 1 Then
If .CountA(wks.Range(.Rows(lngTmp), .Rows(lngLastRow))) Then _
lngFirstRow = lngTmp: blnFound = True
If Not blnFound And .CountA(wks.Range(.Rows(lngFirstRow), .Rows(lngTmp))) Then _
lngLastRow = lngTmp
LastRow wks, lngFirstRow, lngLastRow
End If
End With
LastRow = lngFirstRow
End Function



Sub tt()
MsgBox LastRow(Sheets(1))
End Sub


Gruß
Rudi

Anzeige
AW: letzte Zeile
28.05.2008 16:27:00
Sandro
Danke Rudi
aber kann man das ganze auf Spalte A beschränken?
siehe bitte Antwort an Beate
Gruß Sandro

AW: letzte Zeile
28.05.2008 17:22:00
Rudi
Hallo,
geht auch.

Function LastUsedRowInRange( _
wks As Worksheet, _
Optional lngFirstRow&, _
Optional lngLastRow&, _
Optional lngFirstColumn&, _
Optional lngLastColumn&) _
As Long
'Letzte Zeile mit Inhalt in einem Bereich
'Parameter
'wks: das Blatt
'lngFirstRow&: die erste Zeile
'lngLastRow&: die letzte Zeile
'lngFirstColumn&: die erste Spalte, A=1, B=2 etc.
'lngLastColumn&; die letzte Spalte
Dim lngTmp&, blnFound As Boolean
'sicherstellen, dass die Parameter gültig sind
If lngFirstRow  Rows.Count Then lngFirstRow = 1
If lngLastRow  Rows.Count Then lngLastRow = Rows.Count
If lngFirstColumn  Columns.Count Then lngFirstColumn = 1
If lngLastColumn  Columns.Count Then lngLastColumn = Columns.Count
'drehen falls erster Wert > letzter Wert
If lngFirstRow > lngLastRow Then
lngTmp = lngLastRow
lngLastRow = lngFirstRow
lngFirstRow = lngTmp
End If
If lngFirstColumn > lngLastColumn Then
lngTmp = lngLastColumn
lngLastColumn = lngFirstColumn
lngFirstColumn = lngTmp
End If
'jetzt geht's los
With wks
If Application.CountA(.Range(.Cells(lngLastRow, lngFirstColumn), .Cells(lngLastRow,  _
lngLastColumn))) Then
LastUsedRowInRange = lngLastRow: Exit Function
End If
If Application.CountA(.Range(.Cells(lngFirstRow, lngFirstColumn), .Cells(lngLastRow,  _
lngLastColumn))) = 0 Then
LastUsedRowInRange = 0: Exit Function
End If
lngTmp = (lngFirstRow + lngLastRow) / 2
If lngLastRow > lngFirstRow + 1 Then
If Application.CountA(.Range(.Cells(lngTmp, lngFirstColumn), .Cells(lngLastRow,  _
lngLastColumn))) Then
lngFirstRow = lngTmp
blnFound = True
End If
If Not blnFound And _
Application.CountA(.Range(.Cells(lngFirstRow, lngFirstColumn), .Cells(lngTmp,  _
lngLastColumn))) Then
lngLastRow = lngTmp
End If
LastUsedRowInRange wks, lngFirstRow, lngLastRow, lngFirstColumn, lngLastColumn
End If
End With
LastUsedRowInRange = lngFirstRow
End Function



Sub tt2()
MsgBox "Letzte Zeile:" & vbLf & vbLf & LastUsedRowInRange(Sheets(1), , , 1, 1), , " _
Information"
End Sub


Anzeige
AW: letzte Zeile
28.05.2008 22:31:09
Sandro
Hallo Rudi
dein Prog ist ja riesig und funktioniert 100%. Vielen Dank und einen schönen Abend
Gruß Sandro

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige