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

wenn > Spalte I, dann neue Zeile

wenn > Spalte I, dann neue Zeile
04.09.2008 16:41:00
Dennis
Hallo Leute,
ich benötige einmal Hilfe eines Experten, da ich noch in den Anfängen stecke.
Ich habe folgendes Problem:
Ich habe eine Liste mit Datensätzen (jeder Datensatz steht für eine Person). Die Datensätze sind unterschiedlich lang. Grds. sind die Datensätze von Spalte A - Spalte I angelegt. Mein Problem ist jetzt, dass einige Datensätze auch darüber hinaus gehen. Alle Datensätze, die länger als bis Spalte I angelegt sind, sollen die Grunddaten der Spalten A - E der jeweiligen Person dann in der nächsten Zeile wiedergeben und ab Spalte F die Daten aus der vorherigen Zeile ab der Spalte J wiedergeben. Hört sich viell. kompliziert an, ist es aber eigentlich gar nicht. Ich weiß, dass man das Problem mit einer Schleife lösen kann, es hängt aber noch an der Umsetzung:-)
Wäre klasse, wenn ihr mir bei der Lösung helfen könntet.
Gruß Dennis

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wenn > Spalte I, dann neue Zeile
04.09.2008 17:40:00
Fettertiger
Hallo Dennis,
ist zwar nicht sehr elegant (die Profis könnens sicher besser), aber es funzt:

Sub fin_spalte()
Dim zeile As Long
Dim letzte_zeile As Long
Dim letzte_spalte_in_zeile As Long
letzte_zeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For zeile = 2 To letzte_zeile
letzte_spalte_in_zeile = ActiveSheet.Cells(zeile, Columns.Count).End(xlToLeft).Column
If letzte_spalte_in_zeile > 9 Then
Rows(zeile + 1).Insert Shift:=xlDown
Range(Cells(zeile, 10), Cells(zeile, letzte_spalte_in_zeile)).Copy
Cells(zeile + 1, 1).PasteSpecial
Range(Cells(zeile, 10), Cells(zeile, letzte_spalte_in_zeile)).ClearContents
End If
Next zeile
End Sub


Gruss
Fettertiger

Anzeige
AW: wenn > Spalte I, dann neue Zeile
04.09.2008 17:49:00
Fettertiger
uups, war glaub ich noch nicht ganz was Du wolltest.
Probiers mal damit:

Sub fin_spalte()
Dim zeile As Long
Dim letzte_zeile As Long
Dim letzte_spalte_in_zeile As Long
letzte_zeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
For zeile = 2 To letzte_zeile
letzte_spalte_in_zeile = ActiveSheet.Cells(zeile, Columns.Count).End(xlToLeft).Column
If letzte_spalte_in_zeile > 9 Then
Rows(zeile + 1).Insert Shift:=xlDown
Range(Cells(zeile, 10), Cells(zeile, letzte_spalte_in_zeile)).Copy
Cells(zeile + 1, 6).PasteSpecial
Range(Cells(zeile, 10), Cells(zeile, letzte_spalte_in_zeile)).ClearContents
Range(Cells(zeile, 1), Cells(zeile, 5)).Copy
Cells(zeile + 1, 1).PasteSpecial
End If
Next zeile
End Sub


Anzeige
AW: wenn > Spalte I, dann neue Zeile
05.09.2008 08:35:50
Dennis
Hi Fettertiger,
danke für die schnelle Lösung. Grds. funktioniert alles wunderbar. Es gibt nur noch ein Problem, dass die vorhandenen Datensätze unterhalb überschrieben werden. Kann man es noch einbauen, dass noch vorher eine neue Zeile eingefügt wird, bevor alles ab Spalte 10 eingefügt wird? Dann wäre es perfekt.
Vielen Dank schon einmal. Du bist mir eine große Hilfe.
Beste Grüße
Dennis
AW: wenn > Spalte I, dann neue Zeile
05.09.2008 10:25:51
Fettertiger
Hallo Dennis,
bei mir funzt das auch so. Die neue Zeile wird durch folgenden Code eingefügt:
Rows(zeile + 1).Insert Shift:=xlDown
Allerdings habe ich noch einen anderen Fehler gefunden. Durch das Einfügen der Zeilen, hört das Makro nicht in der letzten Zeile auf zu arbeiten, sondern in der Zeile in der die Datei vorher zu Ende war. Den Code hierfür habe ich jetzt angepasst.

Sub fin_spalte()
Dim zeile As Long
Dim letzte_zeile As Long
Dim letzte_spalte_in_zeile As Long
'ermitteln der letzten zeile
letzte_zeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'schleife
For zeile = 2 To letzte_zeile
'ermitteln der letzten Spalte in der entsprechenden Zeile
letzte_spalte_in_zeile = ActiveSheet.Cells(zeile, Columns.Count).End(xlToLeft).Column
'falls Daten auserhalb des Bereiches
If letzte_spalte_in_zeile > 9 Then
'Zeile einfügen
Rows(zeile + 1).Insert Shift:=xlDown
'alles ab Spalte J kopieren
Range(Cells(zeile, 10), Cells(zeile, letzte_spalte_in_zeile)).Copy
'eine Zeile tiefter ab Spalte F einfügen
Cells(zeile + 1, 6).PasteSpecial
'Ursprungsbereich löschen
Range(Cells(zeile, 10), Cells(zeile, letzte_spalte_in_zeile)).ClearContents
'Zellen von A-E kopieren
Range(Cells(zeile, 1), Cells(zeile, 5)).Copy
'und eine Zeile Tiefer wieder einpasten
Cells(zeile + 1, 1).PasteSpecial
'letzte Zeile +1, da sich die Tabelle durch das Einfügen vergrößert hat
letzte_zeile = letzte_zeile + 1
End If
Next zeile
End Sub


Rückmeldung wäre nett.
Gruss
Fettertiger

Anzeige
AW: wenn > Spalte I, dann neue Zeile
05.09.2008 11:20:00
Dennis
Hi,
auf diesen Fehler wollte ich hinaus. Mein Ansatz war nur der Falsche:-)
Muss dich aber leider enttäuschen. Funktioniert leider noch nicht bei mir...
Ich habe eine Liste mit 153 Datensätzen. Und in der Zeile hört er trotzdem noch auf.
Gruß Dennis
AW: wenn > Spalte I, dann neue Zeile
05.09.2008 13:49:57
Fettertiger
Hallo Dennis,
oh Mann, Du hast recht. Ich hätte die For-Next Schleife durch Do - while - loop ersetzen müssen.
Jetzt hab ich den neuen Code auch getestet, und es funzt:

Sub fin_spalte()
Dim zeile As Long
Dim letzte_zeile As Long
Dim letzte_spalte_in_zeile As Long
'ermitteln der letzten zeile
letzte_zeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'schleife
zeile = 2
Do While zeile  9 Then
'Zeile einfügen
Rows(zeile + 1).Insert Shift:=xlDown
'alles ab Spalte J kopieren
Range(Cells(zeile, 10), Cells(zeile, letzte_spalte_in_zeile)).Copy
'eine Zeile tiefter ab Spalte F einfügen
Cells(zeile + 1, 6).PasteSpecial
'Ursprungsbereich löschen
Range(Cells(zeile, 10), Cells(zeile, letzte_spalte_in_zeile)).ClearContents
'Zellen von A-E kopieren
Range(Cells(zeile, 1), Cells(zeile, 5)).Copy
'und eine Zeile Tiefer wieder einpasten
Cells(zeile + 1, 1).PasteSpecial
'letzte Zeile +1, da sich die Tabelle durch das Einfügen vergrößert hat
letzte_zeile = letzte_zeile + 1
End If
zeile = zeile + 1
Loop
Application.CutCopyMode = False
End Sub


Anzeige
AW: wenn > Spalte I, dann neue Zeile
08.09.2008 13:29:36
Dennis
Bei mir klappt's auch. Einfach genial. Vielen Dank!

346 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige