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 № 1Cells(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