Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/12/2009, 09:49
Avatar de mrocf
mrocf
 
Fecha de Ingreso: marzo-2007
Ubicación: Bs.As.
Mensajes: 1.103
Antigüedad: 17 años, 1 mes
Puntos: 88
De acuerdo Ayuda con Excel

Hola! seba.
Incorpora la siguiente macro:

Código vb:
Ver original
  1. Sub Re_Ordenar()
  2. Dim ii As Long, jj As Integer
  3.  
  4. 'Define el número de filas por columna
  5. Const FpC As Integer = 6
  6.  
  7. Application.ScreenUpdating = False
  8. [b:g].Delete Shift:=xlToLeft
  9. ActiveSheet.ResetAllPageBreaks
  10.  
  11. 'Copia la hoja activa y trabaja sobre esta copia
  12. ActiveSheet.Copy After:=Sheets(1)
  13.  
  14. For ii = 1 To [a1].End(xlDown).Row Step 4 * FpC
  15.   For jj = 1 To 7 Step 2
  16.     Cells(ii + FpC * (jj - 1) / 2, 1).Resize(FpC, 1).Cut Cells((ii + 3) / 4, jj)
  17.   Next jj
  18. Next ii
  19.  
  20. For ii = FpC To [a65536].End(xlUp).Row - 1 Step FpC
  21.   ActiveSheet.HPageBreaks.Add Before:=Cells(ii + 1, 1)
  22. Next ii
  23.  
  24. Rows([a65536].End(xlUp).Offset(1).Row & ":65536").Delete Shift:=xlUp
  25. Application.ScreenUpdating = True
  26. End Sub

Tres cosas importantes:

a) Estoy suponiendo que tus datos están en la columna "A" comenzando desde la celda [A1].

b) La línea:
Const FpC As Integer = 6

define "6" filas por columna al igual que has mostrado en tu ejemplo.
Si quieres modificar este dato a otra cantidad, simplemente cambias ese número.

c) A los efectos de reiterar el procedimiento tantas veces como lo requieras, hago una copia de la hoja en cuestión y trabajo sobre ella.

Saludos, Cacho.