/ / Bucle dentro de un bucle dentro de un bucle - excel, vba, bucles, anidados

Bucle dentro de un bucle dentro de un bucle - excel, vba, bucles, anidados

Estoy tratando de ejecutar un lote. Necesito que se copien y peguen algunas columnas de una hoja en una hoja recién creada. Esto debe incluir nombre, correo electrónico, etc. He hecho un bucle anidado para hacer eso, pero no puedo "t" para que la fila de salida no se incremente después de que los datos comiencen a repetirse. Continúa hasta la página. Mi El código es el siguiente:

"reunir datos

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

Como puedes ver, ya tengo dos bucles en ejecución. Me pregunto si necesito un tercero para detener la salida (oRow) y si incluso es posible tener un bucle dentro de un bucle dentro de un bucle.

Gracias.

Respuestas

0 para la respuesta № 1
Cells(1, c).Select

Esto siempre selecciona la fila 1. No creo que eso sea lo que quieres. También el cambio entre las hojas es muy ineficiente. Tienes

Sheets("Compiled Data").Select

pero nunca vuelves a tu primera hoja.

Esto debería funcionar más suave.

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