/ / Schleife innerhalb einer Schleife innerhalb einer Schleife - Excel, vba, Schleifen, verschachtelt

Schleife innerhalb einer Schleife innerhalb einer Schleife - Excel, VBA, Schleifen, verschachtelt

Ich versuche einen Batch auszuführen. Ich muss bestimmte Spalten aus einem Blatt kopieren und in ein neu erstelltes Blatt einfügen. Dazu gehören Name, E-Mail usw. Ich habe eine verschachtelte Schleife gemacht, um das zu tun, aber ich kann nicht verhindern, dass sich die Ausgabezeile erhöht, nachdem sich die Daten von selbst zu wiederholen beginnen Code lautet wie folgt:

"Daten sammeln

For r = 1 To ActiveCell.End(xlDown).Row
Cells(1, c).Select
Do Until IsEmpty(Selection)
name = ActiveCell.End(xlToLeft).Value
email = ActiveCell.End(xlToLeft).Offset(0, 1).Value
phoneNumber = ActiveCell.End(xlToLeft).Offset(0, 2).Value
generation = ActiveCell.End(xlToLeft).Offset(0, 3).Value
status = ActiveCell.End(xlToLeft).Offset(0, 13).Value

"paste data

Sheets("Compiled Data").Select
Cells(oRow, c) = name
Cells(oRow, c + 1) = email
Cells(oRow, c + 2) = phoneNumber
Cells(oRow, c + 3) = generation
Cells(oRow, c + 4) = status

oRow = oRow + 1

Loop

Wie Sie sehen, laufen bereits zwei Schleifen. Ich frage mich, ob ich einen dritten brauche, um die Ausgabe (oRow) zu stoppen, und ob es überhaupt möglich ist, eine Schleife innerhalb einer Schleife innerhalb einer Schleife zu haben.

Vielen Dank.

Antworten:

0 für die Antwort № 1
Cells(1, c).Select

Dies wählt immer Zeile 1. Ich glaube nicht, dass Sie das haben, was Sie wollen. Auch das Wechseln zwischen den Blättern ist sehr unwirksam. Du hast

Sheets("Compiled Data").Select

Sie wechseln jedoch nie wieder zu Ihrem ersten Blatt.

Dies sollte reibungsloser laufen

c_old = 1 "Your "Name" column in original
c_new = 1 "Your "Name" column in Compiled Data

For r = 1 To ActiveSheet.Cells(Rows.Count, c_old).End(xlUp).Row
For j = 0 To 3
Sheets("Compiled Data").Cells(r, c_new + j) = Cells(r, c_old + j)
Next j
Sheets("Compiled Data").Cells(r, c_new + 4) = Cells(r, c_old + 13)
Next r