Problema con bucle

Hola, pretendo hacer un bucle, pero lo cirteo es que no me sale
Mi idea es que mientras tenga celdas con datos en la columna de se repita la secuencia de abajo ( realmente es más larga pero con esto es suficiente)
Range("D2").Select
    Selection.Copy
    Range("s65535").Select
    ActiveCell.End(xlUp).Select
ActiveCell.Offset(0, 0).Select
    ActiveSheet.Paste
    ActiveCell.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveCell.End(xlUp).Select
ActiveCell.Offset(2, 0).Select
    ActiveSheet.Paste
    ActiveCell.End(xlUp).Select
ActiveCell.Offset(3, 0).Select
    ActiveSheet. Paste
Gracias de antemano y por la paciencia.

1 Respuesta

Respuesta
1
El ciclo podría ser de la siguiente forma
For i=1 to Range("A65535").End(xlUp).Row
  Cells(i, 4). Select 'Recorre la columna D hasta la última celda ocupada
      Selection. Copy
      Range("s65535").Select
      ActiveCell.End(xlUp).Select
  ActiveCell.Offset(0, 0).Select
      ActiveSheet.Paste
      ActiveCell.End(xlUp).Select
  ActiveCell.Offset(1, 0).Select
      ActiveSheet.Paste
      ActiveCell.End(xlUp).Select
  ActiveCell.Offset(2, 0).Select
      ActiveSheet.Paste
      ActiveCell.End(xlUp).Select
  ActiveCell.Offset(3, 0).Select
      ActiveSheet.Paste

Next
Hola, agradezco la ayuda pero hace lo mismo que si pusiese range ("d1").select, copia la celda d1 y la pega desde el rango s1 a s5.
Lo que busco el que seleccione d2 lo pegue desde s1 a s5, luego haga el bucle seleccionando y copiando d3 y lo que pegue en las siguientes 5 celdas de la columna s.
Gracias por ayudar
Perdón por no poner mayor atención en el código, sólo me limité a hacer el bucle.
Creo que es esto lo que quieres:
For i = 2 To Range("D65535").End(xlUp).Row
  Cells(i, 4). Select 'Recorre la columna D hasta la última celda ocupada
      Selection. Copy
      Range("s65535").Select
      ActiveCell.End(xlUp).Select
      ActiveSheet.Paste
  ActiveCell.Offset(1, 0).Select
      ActiveSheet.Paste
  ActiveCell.Offset(1, 0).Select
      ActiveSheet.Paste
  ActiveCell.Offset(1, 0).Select
      ActiveSheet.Paste
  ActiveCell.Offset(1, 0).Select
      ActiveSheet.Paste
Next

Si es eso, este código hace lo mismo, pero de una forma mucho más estética
Private Sub CommandButton2_Click()
    Dim dblFila As Double
    Dim i As Double, j As Double
    dblFila = Range("S65535").End(xlUp).Row
    For i = 2 To Range("D65535").End(xlUp).Row
      For j = dblFila To dblFila + 4
        Range("S" & dblFila + (j - dblFila)) = Range("D" & i)
      Next
      dblFila = j
    Next
    Range("S" & dblFila).Select
End Sub
Hola, el segundo código me ha dejado dejado claro lo muchísimo que me falta por aprender, y coo la ignorancia es muy atrevida te muestro la otra parte del código que tengo y lo que pretendo:
Como en el anterior tengo datos en las celdas E2, F2, G2, H2 y I2.
Quiero pasar esos datos de horizontal a vertical (Tx, Tx+1, Tx+2, Tx+3, Tx+4)y con la fórmula cuando una celda esté vacía que ponga o, oo y por supuesto con el bucle.
Si no tienes tiempo o me paso dímelo, te votaré muy positivamente
Gracias una vez más.
Range("T65535").Select
    ActiveCell.End(xlUp).Select
    ActiveCell.Offset(0, 0).Select
    ActiveCell.FormulaR1C1 = "=IF(R[1]C[-15]="""",""0,00"",R[1]C[-15])"
    Range("t65535").Select
    ActiveCell.End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=IF(R[0]C[-14]="""",""0,00"",R[0]C[-14])"
    Range("t65535").Select
    ActiveCell.End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C[-13]="""",""0,00"",R[-1]C[-13])"
    Range("t65535").Select
    ActiveCell.End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C[-12]="""",""0,00"",R[-1]C[-12])"
    Range("t65535").Select
    ActiveCell.End(xlUp).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=IF(R[-1]C[-11]="""",""0,00"",R[-1]C[-11])"
Creo que esto es lo que quieres, aunque tiene dos detalles que no me esforcé mayormente en corregir, porque no sé qué tanta relevancia tienes (de ahí me lo cumunicas):
- El primero es que no comiena desde la celda T1, sino, desde la T2.
- El segundo es que tiene como referencia los datos de la columna E, para generar el bucle. Esto provoca que el bucle se repita hasta el último dato de la columna E, independiente de que las demás columnas sigan teniendo datos (Esto no es problema si la columna E siempre tuviera datos)
Si necesitas que se corrijan ambos detalles, me dices y ahí vemos colo le hacemos.
Saludos...
Private Sub CommandButton1_Click()
    Dim dblFila As Double
    Dim i As Double, j As Double
    dblFila = Range("T65535").End(xlUp).Row + 1
    For i = 2 To Range("E65535").End(xlUp).Row
        For j = 5 To 9
            Range("T" & dblFila) = IIf(Cells(i, j) <> "", Cells(i, j), "0,00")
            dblFila = dblFila + 1
        Next
    Next
    Range("T" & dblFila).Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas