Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
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 gefüllte zeile ermitteln?

letzte gefüllte zeile ermitteln?
stefan
Hallo,
ich habe ein datenblatt und möchte gern aus der letzten gefüllten zeile werte übernehmen (die länge des datenblatts variiert).
wie krieg ich raus, aus welcher zeile ich die werte übernehmen muss?
danke euch
AW: letzte gefüllte zeile ermitteln?
17.07.2009 16:59:37
Claus
Hi,
von Hand oder innerhalb ienes Makros?
AW: letzte gefüllte zeile ermitteln?
17.07.2009 17:12:10
Claus
Von Hand:
Strg - Taste halten und Ende -Tast betätigen bringt den Cursor an das Ende des befüllten Bereiches, also somit auch in die letzte gefüllte Zeile...
Falsch : nicht die letzte "gefüllte" Zelle
17.07.2009 17:23:53
NoNet
Hallo Claus,
ich muss Dich korrogieren
[kleinkariermodusein]
Mit Strg+Ende gelangt man nicht in "die letzte gefüllte Zelle", sondern in die Zelle, deren Schnittpunkt in der letzten gefüllten (oder formatierten) Spalte und der letzten gefüllten (oder formatierten) Zeile liegt (bzw. LAG !). In meinem o.g. Beispiel wäre das die Zelle G7 - obwohl diese Zelle selbst leer ist !
[/kleinkariermodusaus]
Noch deutlicher wird es in diesem Beispiel :
ABCDEFGH
1
2
3
4
5
6
7
8
9

Strg+ENDE springt hier in Zelle H9, obwohl diese Zelle leer ist und auch weder in Zeile 9 noch in Spalte H irgendwelche Inhalte existieren - alleine deshalb, weil die Zelle formatiert ist (hier : grüner Hintergrund)
Selbst wenn man diese Zeile/Spalte komplett löscht, springt Strg+Ende noch hier hin, da diese Zelle ja mal formatiert WAR (zumindest so lange bis die Datei gespeichert wird !)
Gruß, NoNet
Anzeige
Immer dieser Fliegendreck auf dem Screen ;-)
17.07.2009 17:27:35
NoNet
Hallo Claus,
da hast Du Recht ! - Ich hatte tatsächlich Zelle und nicht Zeile gelesen...
Da war ohl irgendein Schmutz auf Pixel auf dem i, so dass es wie ein l aussah ;-)
Das wäre mit den englischen (bzw. VBA-)Begriffen Row und Cell vermutlich nicht passiert :-D
Gruß, NoNet
AW: Immer dieser Fliegendreck auf dem Screen ;-)
17.07.2009 17:34:16
Claus
Uups, da haben sich die beiträge aber überschnitten...
Ja, gute Begründung, und momentan hat´s ja auch echt viele Fliegen.
*Schwäbischkursmodus an*
Fliegenklatsche = Muggabadscher
*Schwäbischkursmodus aus*
Grüßle Claus
Anzeige
AW: Falsch : nicht die letzte "gefüllte" Zelle
17.07.2009 17:31:12
Claus
Hallo noNet,
*Ätschegäbeleausgelachtmodus an*
bevor man im Kleinkariertmodus um sich haut sollte man die ursprüngliche Fragestellung genau lesen. Er fragte schon nach der letzten befüllten Zeile.
*Ätschegäbeleausgelachtmodus aus*
Ja, kann ja mal passieren, Zelle statt Zeile zu lesen, kein Problem. Bitte obiges so nehmen wie ich´s meine, als Späßle.
Grüßle aus dem Schwabenländle
Claus
?cells.Find("*",[A1],searchdirection:=xlPrevious).
17.07.2009 17:14:55
NoNet
Hallo Stefan,
das kann man per VBA grundsätzlich mit dieser Anweisung ermitteln :
MsgBox Cells.Find("*",[A1],searchdirection:=xlPrevious).Address
Allerdings ist die Definition von "letzte Zelle" relativ ungenau, schau Dir mal folgende Tabelle an :
ABCDEFG
1
2
3
4
5
6
7

Für Excel ist "die letzte Zelle" die Zelle A7, da dies die Zelle mit der höchsten Zeilennummer ist.
Es könnte aber auch G1 sein, da dies die am weitesten "rechts" platzierte Zelle ist.
Gruß, NoNet
Anzeige
AW: ?cells.Find("*",[A1],searchdirection:=xlPrevious).
17.07.2009 17:18:59
Claus
Hallo NoNet,
Stefan hat schon geschrieben: "aus der letzten gefüllten zeile". Also Zeile, nicht Zelle. Somit war deine Frage zwar nicht schlecht aber überflüssig.
Grüßle Claus
AW: letzte gefüllte zeile ermitteln?
17.07.2009 17:59:20
Tino
Hallo,
hier ein Beispiel
Sub Beispiel()
Dim LRow As Long
On Error Resume Next
        'Finde Zeile 
        LRow = Cells.Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
        LRow = Application.Max(LRow, Cells.Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
        If LRow = 0 Then LRow = 1
On Error GoTo 0

'die letzte = LRow 
'die nächste freie = LRow + 1 
'ist die Tabelle komplett leer, ist LRow = 1 
MsgBox "Die letzte belegte Zeile = " & LRow & vbCr & "Die nächste freie Zeile = " & LRow + 1


End Sub
Gruß Tino
Anzeige
hier noch mit Spalte.
17.07.2009 18:17:00
Tino
Hallo,
hier noch eine die auch die Spalten berücksichtig. (xlCellTypeLastCell)
Function FindLetzte(mySH As Worksheet) As Range
Dim LRow As Long, LCol As Long
Dim A As Long
 
 With mySH.UsedRange
   On Error Resume Next
        'Finde Zeile 
        LRow = .Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
        LRow = Application.Max(LRow, .Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
        If LRow = 0 Then LRow = 1
   
        'Finde Spalte 
        For A = .Columns(.Columns.Count).Column To .Columns(1).Column Step -1
              LCol = mySH.Columns(A).Find("*", , xlValues, xlWhole, xlByRows, xlPrevious).Row
              LCol = Application.Max(LCol, mySH.Columns(A).Find("*", , xlFormulas, xlWhole, xlByRows, xlPrevious).Row)
              If LCol > 1 Then: LCol = A: Exit For
        Next A
    
    On Error GoTo 0
    
    If LRow = 0 Then LRow = 1
    If LCol = 0 Then LCol = 1

 End With
 
 Set FindLetzte = mySH.Cells(LRow, LCol)
End Function

Sub Beispiel()
 MsgBox FindLetzte(ActiveSheet).Address
End Sub
Gruß Tino
Anzeige
Funktioniert aber leider auch nur so lang...
17.07.2009 18:43:48
Tino
Hallo,
, bis die letzte Zelle keinen Wert mehr liefert.
Beispiel:
 AB
16 
2  
3  
4 5
5  
6 6
7  
8  

Formeln der Tabelle
ZelleFormel
A1{=MAX(WENN((ANZAHLLEEREZELLEN(BEREICH.VERSCHIEBEN(INDIREKT("1:1"); ZEILE(INDIREKT("1:65535")); ;;))<256); ZEILE(INDIREKT("2:65536"))))}
B8=WENN(SUMME(B1:B7)>20;SUMME(B1:B7); "")
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
Matrix verstehen

Gruß Tino
Anzeige
mit VERWEIS
17.07.2009 20:04:51
FP
Hallo Walter,
geht's aber kürzer - und ohne {}
=VERWEIS(2;1/ZÄHLENWENN(BEREICH.VERSCHIEBEN(1:1;ZEILE(A:A););"");ZEILE(A:A)+1)
bzw. scheint sogar das zu genügen
=VERWEIS(2;1/ZÄHLENWENN(BEREICH.VERSCHIEBEN(1:1;ZEILE(A:A););"");ZEILE(A:A)+1)
die kurze Verision hat nur die "Macke", dass sie sich "merkt", dass eine Zelle einmal belegt war, d.h. wenn man einen einmal eingegebenen Wert löscht gilt die Zeile trotzdem als "belegt" = ZÄHLENWENN Bug
Beide finden sogar Zeilen, in denen nur eine Formel steht die als Rückgabe "" liefert...
Servus aus dem Salzkammergut
Franz
Anzeige
AW: letzte gefüllte zeile ermitteln?
17.07.2009 20:32:46
Gerd
Guten Abend,
was haltet Ihr davon? Hatte noch nicht die Muse, es voll auszutesten.
Sub Letzte_Zelle_färben()
Dim Wertebereich As Range, LetzterBereich As Range, LetzteZelle As Range
With ActiveSheet
Set Wertebereiche = _
Application.Intersect(.UsedRange, .Cells.SpecialCells(xlCellTypeConstants))
Set LetzterBereich = _
.Range(Wertebereiche.Areas(Wertebereiche.Areas.Count).Address)
Set LetzteZelle = _
.Range(Split(LetzterBereich.Address, ":")(UBound(Split(LetzterBereich.Address, ":"))))
End With
LetzteZelle.Interior.ColorIndex = 33
End Sub
Gruß Gerd
Anzeige
AW: letzte gefüllte zeile ermitteln?
17.07.2009 20:40:35
Tino
Hallo,
nicht viel, wenn nur Formeln in der Tabelle sind.
Userbild
Deklarierung Wertebereich verwendet Wertebereiche ;-)
Die Formel von Franz finde ich super.
Gruß Tino
AW: letzte gefüllte zeile ermitteln?
17.07.2009 20:56:35
Gerd
Hallo Tino!
habe ein datenblatt
Von einem Formelblatt war nicht die Rede.
Gruß Gerd
AW: letzte gefüllte zeile ermitteln?
17.07.2009 21:14:30
Tino
Hallo,
für Daten gehts,
aber in Excel sind fast immer Formeln.
Egal er kann sich ja jetzt was raussuchen.
Noch einen schönen Freitagabend.
Gruß Tino

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige