Hallo.
Ich habe da eine Liste mit Werten, sprich Ja / Nein, ob die Zelle leer oder voll ist. Dies funktioniert.
Jetzt will ich mittels VBA in der Liste die Werte Ja und Nein durchgehen und wenn ein leere Zeile also Ja vorkommt, dann nächste volle Zeile Nein finden und diese Daten in die leere Zelle schreiben.
Geht das?
Wenn ja wie?
Danke.
Grüße,
Sebastian
Hallo Sebastian
Bitte die Frage noch etwas genauer formulieren:
Ich habe da eine Liste mit Werten, sprich Ja / Nein, ob die
Zelle leer oder voll ist. Dies funktioniert.
Beispiel:
In A5 steht ein Wert, A6 ist leer,auch A7,8,9 sind leer, in A10 der nächste Wert; dann steht in B5 NEIN und in B6 steht JA, in B10 Nein? ist das so?
Jetzt will ich mittels VBA in der Liste die Werte Ja und Nein
durchgehen und wenn ein leere Zeile also Ja vorkommt, dann
nächste volle Zeile Nein finden und diese Daten in die leere
Zelle schreiben.
Das Makro beginnt in Zeile 1 und schreitet nach unten fort.
Wenn du nun die B6 (=leer) erreichst, soll weiter unten der erste JA-Wert (=B10) gefunden und dessen Wert A10 in A6 eingetragen werden?
Geht das?
JA, aber: Warum machst du den Umweg über die Zelle mit JA/NEIN? Man kann den Inhalt der Zellen gleich direkt mit einem Makro prüfen und den Wert kopieren.
Wenn du das bitte etwas genauer erläuterst, kann dir bestimmt geholfen werden!
Erich
Hallo erich.
Beispiel:
In A5 steht ein Wert, A6 ist leer,auch A7,8,9 sind leer, in
A10 der nächste Wert; dann steht in B5 NEIN und in B6 steht
JA, in B10 Nein? ist das so?
Ja genau…
Werte in den Spalten A und T und X steht, ob Zeile leer, Ja / Nein.
Das Makro beginnt in Zeile 1 und schreitet nach unten fort.
Wenn du nun die B6 (=leer) erreichst, soll weiter unten der
erste JA-Wert (=B10) gefunden und dessen Wert A10 in A6
eingetragen werden?
Ja richtig.
JA, aber: Warum machst du den Umweg über die Zelle mit
JA/NEIN? Man kann den Inhalt der Zellen gleich direkt mit
einem Makro prüfen und den Wert kopieren.
Könnte man auch ohne.
Grüße,
Sebastian
Das Makro beginnt in Zeile 1 und schreitet nach unten fort.
Wenn du nun die B6 (=leer) erreichst, soll weiter unten der
erste JA-Wert (=B10) gefunden und dessen Wert A10 in A6
eingetragen werden?
Hi Sebastian,
geht auch ohne Makro, siehe:
http://www.excelformeln.de/formeln.html?welcher=43
Bedenke dabei es sind Arrayformeln also mit Strg+Shift+Enter einentern.
Gruß
Reinhard
Hallo Reinhard.
geht auch ohne Makro, siehe:
http://www.excelformeln.de/formeln.html?welcher=43
Bedenke dabei es sind Arrayformeln also mit Strg+Shift+Enter
einentern.
hab die formel ausprobiert, funktioniert. Jedoch würde ich aber lieber mit vba erledigen. weil ich die kompletten Range-Bereiche überschreiben will.
Grüße,
Sebastian
hab die formel ausprobiert, funktioniert. Jedoch würde ich
aber lieber mit vba erledigen. weil ich die kompletten
Range-Bereiche überschreiben will.
Hi Sebastian,
probiers mal so, Spalte A wird in Spalte B zusammengefasst:
Sub Zusammen()
Dim ZeiA As Long, ZeiB As Long, Letzte As Long
Letzte = IIf(Cells(Rows.Count, 1) "", Rows.Count, Cells(Rows.Count, 1).End(xlUp).Row)
For ZeiA = 1 To Letzte
If Cells(ZeiA, 1) "" Then
ZeiB = ZeiB + 1
Cells(ZeiB, 2) = Cells(ZeiA, 1)
End If
Next ZeiA
End Sub
Gruß
Reinhard
Hi Sebastian,
Reinhard ist - wie immer - einen Schritt schneller!
Genügt dir sein Makro oder was muss daran geändert werden?
Ohne deinen Bericht nehme ich an: OK
Erich
Hi Sebastian,
Reinhard ist - wie immer - einen Schritt schneller!
Genügt dir sein Makro oder was muss daran geändert werden?
Ohne deinen Bericht nehme ich an: OK
Erich
Hi Erich.
Muss noch die Cells und weiteres ändern.
Werde mich melden, obs funktioniert oder nicht.
Aber habe mal ne Test-Datei angelegt und das Makro eingefügt und hat geklappt.
Grüße,
Sebastian
PS: danke reinhard!!!
Hallo Reinhard.
probiers mal so, Spalte A wird in Spalte B zusammengefasst:
Sub Zusammen()
Dim ZeiA As Long, ZeiB As Long, Letzte As Long
Letzte = IIf(Cells(Rows.Count, 1) „“, Rows.Count,
Cells(Rows.Count, 1).End(xlUp).Row)
For ZeiA = 1 To Letzte
If Cells(ZeiA, 1) „“ Then
ZeiB = ZeiB + 1
Cells(ZeiB, 2) = Cells(ZeiA, 1)
End If
Next ZeiA
End Sub
Dein Code funktioniert super.
Jedoch bekomm ichs einfach nicht hin, dieser Beispiel-Code so umzuschreiben, dass er für mein Beispiel passt.
Eigentlich muss ich wie in deinem Beispiel, nicht die Werte nochmals neu in Spalte B ohne Leerzeilen zu schreiben.
Einfach die leeren Bereiche in den Spalten A-T durch volle Ersetzen.
Es soll immer ein leeren Bereich gesucht werden und anschließend die leeren Spalten durch die vollen Spalten ersetzen, kopieren, überschreiben.
Kannst du mir nochmals helfen. wie ich da eine Range rein bekomme?
Danke.
Grüße,
Sebastian
Einfach die leeren Bereiche in den Spalten A-T durch volle
Ersetzen.
Es soll immer ein leeren Bereich gesucht werden und
anschließend die leeren Spalten durch die vollen Spalten
ersetzen, kopieren, überschreiben.
Hi Sebastian,
ist nicht genau deine Aufgabenstellung war aber schnell zu entwickeln.
Probier mal:
Sub Zusammen()
Dim ZeiA As Long, ZeiB As Long, Letzte As Long, Sp As Byte, ZeiMax As Long
For Sp = 1 To 20 'A-T
ZeiB = 0
Letzte = IIf(Cells(Rows.Count, Sp) "", Rows.Count, Cells(Rows.Count, Sp).End(xlUp).Row)
For ZeiA = 1 To Letzte
If Cells(ZeiA, Sp) "" Then
ZeiB = ZeiB + 1
Cells(ZeiB, Sp + 30) = Cells(ZeiA, Sp)
End If
Next ZeiA
If ZeiB \> ZeiMax Then ZeiMax = ZeiB
Next Sp
Columns("A:T").ClearContents
Range("AE1:AX" & ZeiMax).Copy Destination:=Range("A1")
Columns("AE:AX").ClearContents
End Sub
Gruß
Reinhard
Hallo Reinhard.
Du bist der King! 
Nene, echt prima von dir.
Habe ein Tabellenblatt mit testdaten gemacht und es mittels deines codes anordnen lassen und es funktioniert einwandfrei.
Danke Danke Danke.
Grüße,
Sebastian