Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
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

Nächste freie Zeile ab bestimmter Zelle suchen

Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 08:39:11
Susann
Hallo zusammen,
ich möchte per Makro Werte aus einem Worksheet "Daten" Werte in eine Worksheet "Results" kopieren. Im angehängten Bild seht ihr das Worksheet "Results". Die Werte sollen in die nächste freie Zeile kopiert werden, in diesem Falle in Zeile 23. Die nächste freie Zeile soll aber unterhalb von "Max." in Spalte A gesucht werden, damit die Versuchspunkte nicht im Bereich "Clean Gas" erscheinen. Die Zelle A16 mit dem Wert "Max." kann allerdings verschoben werden, wenn im oberen Bereich Zeilen eingefügt oder gelöscht werden, d.h. das Makro muss den Wert "Max. suchen und ab da die nächste freie Zeile finden.
Wenn die nächste freie Zeile außerhalb des gelben Bereichs liegt (die Zeile mit dem Wert "END" in Spalte A), dann soll idealerweise automatisch eine neue Zeile oberhalb von "END" eingefügt und die Werte dort hineinkopiert werden.
Bisher ist mein Ansatz zum finden der nächsten freien Zeile wie folgt (damit wird jedoch ab Zeile 1 gesucht und nicht nur unterhalb von "Max.") :
Sub letzte_zelle2()
Sheets("Results").Select
Cells(1, 1).Activate
Set zelle = Cells.Find("Max.", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart)
If Not zelle Is Nothing Then
zeile = zelle.Row
spalte = zelle.Column
End If
With Columns(spalte)
Set zelle = .Find("")
Do
zeile = zelle.Row
If Cells(zeile + 1, spalte).Value = "" Then Exit Do
Set zelle = .FindNext(zelle)
Loop
End With
If zeile = 2 Then zeile = 3
n0 = zeile
Cells(zeile, spalte).Activate
End Sub
Userbild

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 08:41:42
Susann
Vielen Dank schonmal im Voraus für eure Mühen. Ich freue mich schon auf eure Ideen und Vorschläge.
Grüße Susann

AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 09:24:54
Rudi
Hallo,
als Ansatz:
Sub aa()
Dim lngMax As Long, lngEND As Long, lngRow As Long
With Sheets("REsults")
lngMax = Application.Match("Max.", .Columns(1), 0)
lngEND = Application.Match("END", .Columns(1), 0)
If WorksheetFunction.Count(.Range(.Cells(lngMax + 1, 1), .Cells(lngEND - 1, 1))) _
= lngEND - lngMax - 1 Then
.Rows(lngEND).Insert
lngRow = lngEND
Else
lngRow = .Cells(lngEND, 1).End(xlUp).Row + 1
End If
Application.Goto .Cells(lngRow, 1) 'nur zum testen
End With
End Sub

Gruß
Rudi

Anzeige
AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 10:10:02
Susann
Hallo Rudi,
erstmal vielen Dank für die schnelle Antwort. Es funktioniert gut, dass die nächste freie Zeile unterhalb "Max." gefunden wird. Allerdings wird keine neue Zeile eingefügt, wenn bis Zeile 33 überall Daten sind und die Zeile "END" erreicht wird. Stattdessen wird die Zelle A15 mit dem Wert "Min." markiert. Woran kann das liegen?
Vielen Dank schonmal!
Grüße Susann

AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 10:32:35
Werner
Hallo Susann,
kann ich so nicht nachvollziehen. Ich habe den Code von Rudi bei mir ausprobiert und er tut das, was er soll. Sobald in Spalte A die Zellen zwischen Min. und END mit Werten gefüllt ist, wird vor END eine neue Zeile eingefügt.
Gruß Werner

Anzeige
AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 11:09:43
Daniel
HI
es gibt einen wichtigen Unterschied zwischen deiner Testdatei, die du hier hochgeladen hast und der Datei bzw dem Bild auch deiner eingangsbeschreibung:
in deiner Eingangsbeschreibung war die auch die Spalte A (Testrun) nur soweit ausgefüllt, wie die daneben liegenden Spalten.
in der Datei, die du jetzt hochgeladen hast, ist jedoch die Spalte A schon bis END ausgefüllt auch wenn die daneben liegen Zellen leer sind.
das wirft natürlich einige Fragen bezüglich des Einfügeortes der Zeile aus Daten auf.
möglich wären aus meiner sicht folgende Varianten:
a) in einer neuen Zeile 34, das End wird dabei um 1 weiter nach unten verschoben, weil Spalte A schon vollständig befüllt ist
b) in Zeile 23, weil das von den Gesamtdaten her die erste freie Spalte ist, dabei wird dann die Testrun-Nummer 7 mit 8 überschrieben.
c) in Zeile 24, weil dort die gleiche Testrunnummer (8) steht wie in Daten.
zunächsteinmal solltest du dich festlegen, welche Dateiart bei dir tatsächlich vorliegt, dh so wie in deinem Bild in der ersten Anfrage oder so wie in deiner Beispieldatei und wenn zweiteres, dann solltest du genau beschreiben wo die Daten eingefügt werden sollen.
Gruss Daniel

Anzeige
AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 11:44:43
Susann
Hallo Daniel,
die Daten sollen in Zeile 34 eingefügt werden. Sorry, hatte zu Probezwecken jetzt nur mal Spalte A ausgefüllt, weil dort die nächste freie verfügbare Zeile gesucht werden soll. Normalerweise sind die anderen Spalten dann auch mit Werten.
Grüße Susann

AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 11:15:36
Rudi
Hallo,
deine Zahlen sind Texte.
Sub aa()
Dim lngMax As Long, lngEND As Long, lngRow As Long
With Sheets("REsults")
lngMax = Application.Match("Max.", .Columns(1), 0)
lngEND = Application.Match("END", .Columns(1), 0)
If WorksheetFunction.CountA(.Range(.Cells(lngMax + 1, 2), .Cells(lngEND - 1, 2))) _
= lngEND - lngMax - 1 Then
.Rows(lngEND).Insert
lngRow = lngEND
Else
lngRow = .Cells(lngEND, 2).End(xlUp).Row + 1
End If
Application.Goto .Cells(lngRow, 2) 'nur zum testen
End With
End Sub
Gruß
Rudi

Anzeige
AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 12:48:57
Susann
Hallo Rudi,
wenn ich die Spalten A-G ausfülle funktioniert das Makro gut. Gibt es auch die Möglichkeit, dass die neue Zeile auch eingefügt wird, wenn nur in Spalte A Werte eingetragen sind?
Vielen Dank!!
Grüße Susann

noch'n Gedicht
03.11.2015 12:56:28
Rudi

Sub aa()
Dim lngMax As Long, lngEND As Long, lngRow As Long
With Sheets("REsults")
lngMax = Application.Match("Max.", .Columns(1), 0)
lngEND = Application.Match("END", .Columns(1), 0)
If WorksheetFunction.CountA(.Range(.Cells(lngMax + 1, 1), .Cells(lngEND - 1, 1))) _
= lngEND - lngMax - 1 Then
.Rows(lngEND).Insert
.Cells(lngEND - 1, 1).Resize(, 7).Copy
.Cells(lngEND, 1).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
lngRow = lngEND
Else
lngRow = .Cells(lngEND, 1).End(xlUp).Row + 1
End If
Application.Goto .Cells(lngRow, 1) 'nur zum testen
End With
End Sub
Gruß
Rudi

Anzeige
AW: noch'n Gedicht
03.11.2015 13:38:21
Werner
Hallo Susann,
wenn du den Code von Rudi in das Worksheet Change der Tabelle "Results" machst, dann brauchst du keine extra Schaltfläche zum Einfügen der Leerzeile. Sobald die letzte freie Zeile in Spalte A mit einer Zahl belegt wird, dann wird automatisch eine Leerzeile eingefügt. Die Spalte A habe ich aber im Zellformat Standard formatiert und nicht als Text.
https://www.herber.de/bbs/user/101212.xlsm
@Rudi
Falls du hier nochmal vorbei schaust ein Frage. Beim Abschalten der Kopierameisen mit Application.CutCopyMode = False braucht das Makro relativ lange bis es fertig ist. Ich habe mal ein wenig rumgespielt und dann mit Application.SendKeys ("{ESC}") gearbeitet, das geht wesentlich schneller.
Ist das mit irgendwelchen Nachteilen verbunden?
Gruß Werner

Anzeige
AW: Nächste freie Zeile ab bestimmter Zelle suchen
03.11.2015 12:56:50
Susann
Habs grad selber gesehen...jetzt passt alles.
Vielen lieben Dank für die Hilfe. Ein tolles Forum hier :)

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige