Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1532to1536
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 Leere Zelle finden von unten

Letzte Leere Zelle finden von unten
14.01.2017 09:48:29
unten
Hallo,
Mit dieser Funktion sucht er mir von unten an (dq3000 und höher)die letzte belegte zelle.
Ich möchte aber, das er mir von unten an die erste kommende leere zelle findet.
Sheets(1).Range("dq3000").End(xlUp).Offset(3, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets(2).Activate
Warum? Ich habe eine Zeile mit Einnahmen und Ausgaben. Wenn ich einnahmen eintrage, bleibt logischerweise das Feld mit Ausnahmen frei. Bei der nächsten Eintragung erstelle ich mir eine neue Zeile. Dort soll z.bsp. das Feld ausgaben gefüllt werden. Jedoch überspringt mein Code diese Zelle, da ja nichts drinsteht und geht weiter nach oben, bis er eine belegte Zelle findet - nicht schön.
Ist das möglich?
Danke

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Letzte Leere Zelle finden von unten
14.01.2017 09:59:08
unten
Hallo,
vllt. so:
activesheet.usedrange.specialcells(11).row
siehe auch hier: https://msdn.microsoft.com/de-de/library/office/ff196157.aspx
Gruß
Jochen
AW: Letzte Leere Zelle finden von unten
14.01.2017 10:24:57
unten
Hallo.
Danke für die Prompte Antwort.
Ist ein bißchen komplizierter ist es wohl schon denke ich.
Meine Einnahmen Zelle ist immer in der Spalte E. Die Ausgaben in G.
Ich erstelle z.bsp. eine neue Zeile mit A5 für die Nummerierung, C5 fürs Datum , E5 Einnahmen bzw. G5 Ausnahmen - eins geht nur.
Sollte z.Bsp. in der Zeile 30 die Zelle E30 mit dem Wert einer Einnahme stehen, bleibt die Zelle rechts daneben logischerweise frei(G30), da zu diesem Zeitpunkt eine Einnahme eingegeben wurde.
Nächster Eintrag Zeile 35. Dort bleibt die Zelle E35 frei, da ich ihn Zelle G35 eine Ausgabe eingeben möchte. Jedoch ist die vorherige Zelle G30 auch frei und somit springt mein Code soweit hoch, bis er eine gefüllte Zelle der Spalte G findet. Ich möchte bei dieser Eintragung aber die Zelle G35 beschreiben.
Danke
Anzeige
AW: Letzte Leere Zelle finden von unten
14.01.2017 10:34:52
unten
Hallo,
nimm doch dann die Spalte A oder C zum Abmessen mit End(xlUp).Offset(1, ..).
Und "Select" ist hier u. sonst fast immer unnötig.
Gruß Gerd
AW: Letzte Leere Zelle finden von unten
14.01.2017 10:27:32
unten
Hallo.
Danke für die Prompte Antwort.
Ist ein bißchen komplizierter ist es wohl schon denke ich.
Meine Einnahmen Zelle ist immer in der Spalte E. Die Ausgaben in G.
Ich erstelle z.bsp. eine neue Zeile mit A5 für die Nummerierung, C5 fürs Datum , E5 Einnahmen bzw. G5 Ausnahmen - eins geht nur.
Sollte z.Bsp. in der Zeile 30 die Zelle E30 mit dem Wert einer Einnahme stehen, bleibt die Zelle rechts daneben logischerweise frei(G30), da zu diesem Zeitpunkt eine Einnahme eingegeben wurde.
Nächster Eintrag Zeile 35. Dort bleibt die Zelle E35 frei, da ich ihn Zelle G35 eine Ausgabe eingeben möchte. Jedoch ist die vorherige Zelle G30 auch frei und somit springt mein Code soweit hoch, bis er eine gefüllte Zelle der Spalte G findet. Ich möchte bei dieser Eintragung aber die Zelle G35 beschreiben.
Hier mal der Code für die Ausgaben:
Sub Ausgaben_1()
Sheets(1).Range("e3").copy
Sheets(1).Range("g3000").End(xlUp).Offset(3, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets(2).Activate
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
Application.CutCopyMode = False
Sheets(1).Select
Sheets(1).Range("Be45").Select
End Sub
Danke
Anzeige
AW: Letzte Leere Zelle finden von unten
14.01.2017 10:35:47
unten
Hallo,
hier eine Version die auch berücksichtigt,
wenn Zeilen oder Spalten nicht sichtbar sind. zBsp. bei Gruppierung/Fixierung/Filter
Sub Beispiel()
Dim MaxRow&, MaxCol&
'Beispiel letzte Zeile in Tabelle1
MaxRow = FindMaxRowOrCol(Tabelle1.UsedRange)
MsgBox "letzte Zeile = '" & MaxRow & "'"

'Beispiel letzte Zeile in 1. Spalte
MaxRow = FindMaxRowOrCol(Tabelle1.UsedRange.Columns(1))
MsgBox "letzte Zeile in 1. Spalte = '" & MaxRow & "'"

'Beispiel letzte Spalte in 1. Zeile
MaxRow = FindMaxRowOrCol(Tabelle1.UsedRange.Rows(1), True)
MsgBox "letzte Spalte in 1. Zeile = '" & MaxRow & "'"
End Sub

Function FindMaxRowOrCol(rngBereich As Range, Optional FindColumn As Boolean) As Long
Dim nIndex&, sAdress$
On Error Resume Next
With rngBereich
If Not FindColumn Then
For nIndex = 1 To .Columns.Count
sAdress = .Columns(nIndex).Address(1, 1, xlR1C1, External:=True)
FindMaxRowOrCol = Application.Max(ExecuteExcel4Macro( _
"LOOKUP(2,1/(" & sAdress & "<>""""),ROW(" & sAdress & "))"), FindMaxRowOrCol)
Next
Else
For nIndex = 1 To .Rows.Count
sAdress = .Rows(nIndex).Address(1, 1, xlR1C1, External:=True)
FindMaxRowOrCol = Application.Max(ExecuteExcel4Macro( _
"LOOKUP(2,1/(" & sAdress & "<>""""),COLUMN(" & sAdress & "))"), FindMaxRowOrCol)
Next
End If
End With
If FindMaxRowOrCol = 0 Then FindMaxRowOrCol = 1
On Error GoTo 0
End Function
Gruß Tino
Anzeige
Nachtrag
14.01.2017 10:38:34
Tino
Hallo,
beim Ergebis noch +1 für die nächste leere Zeile/Spalte
Gruß Tino
AW: Letzte Leere Zelle finden von unten
14.01.2017 10:46:21
unten
Danke.
Muss ich jetzt erst einmal reinschaun, wo ich meine vorhandenen Werte dort eintrage!!!!!!!
Wer die letzte gefüllte Zelle gefunden hat,
14.01.2017 11:14:31
lupo1
braucht nur 1 hinzuzuzählen. Egal, ob in VBA oder in Excel.
AW: Wer die letzte gefüllte Zelle gefunden hat,
14.01.2017 12:47:45
Tiefenbacher
Sorry, funktioniert bei mir so nicht.
Am einfachsten wäre ein umschreiben des vorhandenen Codes um die erste leere Zelle von DQ3000 aufwärts ab zu finden
Sheets(1).Range("dq3000").End(xlUp).Offset(3, 0).Select
Danke
Nimm Spalte C, da Datum eingetragen...
14.01.2017 13:09:23
Helmut
Hallo,
vor den Einnahmen oder Ausgaben kommt in Spalte C ein Datum-korrekt?
Also ist C die längste Spalte
und mit Cells(Rows.count,3).End(xlup).Row +1
ermittelst Du die nächste freie Zeile
..oder lade die Datei hier hoch.
Gruß Helmut
Anzeige
AW: Wer die letzte gefüllte Zelle gefunden hat,
14.01.2017 14:48:20
Werner
Hallo,
also das Problem erschließt sich mir auch nicht wirklich. Ich sehe das wie Helmut. Irgendeine Spalte ist die längste Spalte (welche weißt nur du) und dort solltest du die letzte belegte Zelle ermitteln und als Bezugsgröße verwenden.
Ansonsten kannst du ja auch im Code sowohl die Letzte belegte Zelle in Spalte E als auch die letzte belegte Zelle in Spalte G ermitteln. Die größere der beiden verwendest du dann als deine Bezugsgröße.
Sub Ausgaben_1()
Dim loLetzteE As Long
Dim loLetzteG As Long
Dim loLetzte As Long
'## letzte belegte Zelle in Spalte E
loLetzteE = Sheets(1).Cells(Rows.Count, 5).End(xlUp).Row
'## letzte belegte Zelle in Spalte G
loLetzteG = Sheets(1).Cells(Rows.Count, 7).End(xlUp).Row
'## Größere aus loLetzteE / loLetzteG
loLetzte = WorksheetFunction.Max(loLetzteE, loLetzteG)
Sheets(1).Range("E3").Copy
Sheets(1).Cells(loLetzte, 7).Offset(3, 0).PasteSpecial Paste:=xlValues
Sheets(2).Activate
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
Application.CutCopyMode = False
Sheets(1).Select
Sheets(1).Range("Be45").Select
End Sub
Ansonsten: Beispieldatei
Gruß Werner
Anzeige
AW: Wer die letzte gefüllte Zelle gefunden hat,
14.01.2017 15:55:08
Tiefenbacher
Hallo,
ja diese Möglichkeit hatte ich auch im Sinn, wusste nur nicht wie ich von der letzten (tiefsten) ermittelten zelle des Datumes (Sheet(2) Spalte E ) rechts rüber (auf der gleichen Höhe) in eine andere Zelle einen vorher kopierten Wert (Sheet (1) em49) einfügen kann.
Hier meine noch fehlerhafte Code.
Sub Ausgaben_1()
Sheets(1).Range("em49").copy
Sheets(2).Activate
Sheets(2).Range("g13423").End(xlUp).Offset(3, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Sheets(1).Select
Sheets(1).Range("Be45").Select
End Sub

Anzeige
ohne Datei-kein weiterkommen.... oT
14.01.2017 16:18:11
Helmut
oT = ohne Text...
AW: Wer die letzte gefüllte Zelle gefunden hat,
14.01.2017 16:20:28
Tiefenbacher
Habs hinbekommen - danke
Ein bißchen modifiziert u. erweitert hier der endgültige Code
Sub Ausgaben()
Dim loLetzteE As Long
Dim loLetzteG As Long
Dim loLetzte As Long
'## letzte belegte Zelle in Spalte E
loLetzteE = Sheets(2).Cells(Rows.Count, 9).End(xlUp).Row
'## letzte belegte Zelle in Spalte G
loLetzteG = Sheets(2).Cells(Rows.Count, 35).End(xlUp).Row
'## Größere aus loLetzteE / loLetzteG
loLetzte = WorksheetFunction.Max(loLetzteE, loLetzteG)
Sheets(1).Range("Em49:ex51").copy
Sheets(1).Range("dq3000").End(xlUp).Offset(3, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets(2).Activate
Sheets(2).Cells(loLetzte, 35).Offset(0, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Sheets(1).Select
Sheets(1).Range("Be45").Select
End Sub
Danke
Anzeige
AW: Wer die letzte gefüllte Zelle gefunden hat,
14.01.2017 16:34:23
Tiefenbacher
Habs hinbekommen - danke
Ein bißchen modifiziert u. erweitert hier der endgültige Code
Sub Ausgaben()
Dim loLetzteE As Long
Dim loLetzteG As Long
Dim loLetzte As Long
'## letzte belegte Zelle in Spalte E
loLetzteE = Sheets(2).Cells(Rows.Count, 9).End(xlUp).Row
'## letzte belegte Zelle in Spalte G
loLetzteG = Sheets(2).Cells(Rows.Count, 35).End(xlUp).Row
'## Größere aus loLetzteE / loLetzteG
loLetzte = WorksheetFunction.Max(loLetzteE, loLetzteG)
Sheets(1).Range("Em49:ex51").copy
Sheets(1).Range("dq3000").End(xlUp).Offset(3, 0).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets(2).Activate
Sheets(2).Cells(loLetzte, 35).Offset(0, 0).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Sheets(1).Select
Sheets(1).Range("Be45").Select
End Sub
Danke
Anzeige
AW: Gerne u. Danke für die Rückmeldung.
14.01.2017 17:19:54
Werner
Hallo,
Aber warum hast du hier das Offset drin?
Sheets(2).Cells(loLetzte, 35).Offset(0, 0).PasteSpecial Paste:=xlValues
Du hast weder einen Zeilen- noch einen Spaltenversatz (0, 0), als kannst du dir das Offset auch sparen.
Gruß Werner
AW: Gerne u. Danke für die Rückmeldung.
15.01.2017 10:59:58
Tiefenbacher
Ich schreibe den kopierten bereich in zwei Zellen rein.
Einmal - Sheets(1).Range("dq3000").End(xlUp).Offset(3, 0).Select
Zweitemal - Sheets(2).Cells(loLetzte, 35).Offset(0, 0).PasteSpecial Paste:=xlValues.
Beim zweitenmal darf nur die letzte Zelle (AI=35) o. Inhalt gefunden werden.
AW: ..., 35 ).Offset(1, 0) ?
15.01.2017 11:30:07
Gerd

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige