Como dividir una columna para achicar el área de impresión

Tengo una planilla excel con 8000 items en una sola columna y quisiera (para ahorrar hojas de impresión, que al item 50 pasara el texto a otra columna y así cada 50 items pasar a una nueva columna. ¿Hay alguna manera de hacerlo que no sea cortar y pegar?

1 respuesta

Respuesta
1

Copia este código, adáptalo y ejecutalo.

Sub parte()
Dim fin As Long, i As Long
Dim a As Variant
Dim rang As Range
Dim inter As Long
Dim FILinic As Long, ultFILA As Long, fil As Long
Dim COLinic As String
inter = 50               ' aqui el intervalo
ultFILA = 8000       ' poner aqui ultima fila
FILinic = 2             ' aqui la primera fila con datos
COLinic = "A"        ' columna donde se encuentran los datos
For i = 1 To ultFILA \ inter
    fil = FILinic + (i - 1) * inter
    Set rang = Cells(fil, COLinic).Resize(inter, 1)
    a = rang.Value
    rang.ClearContents
    Cells(FILinic, COLinic).Offset(0, i - 1).Resize(inter, 1) = a
Next i
Set a = Nothing
End Sub

Saludos,

Jaime

PD: No olvides valorar la respuesta

¡Gracias! Lo pruebo y te cuento.

¿

Podrías decirme como hacerlo si tengo 4 columnas?

Este código lo hace para una columna... y la "parte" en columnas al costado de la original...

a) ¿Tus cuatro columnas están contiguas?  A,B,C,D?

b) ¿Y cómo quisieras partirlas?

Tengo una olanilla que tiene A=item B=año C= documento, asi...por 8000 solo en un año

ok...

Aquí va:

Option Explicit
Sub partes()
Dim i As Long, j As Long
Dim a As Variant
Dim rang As Range
Dim inter As Long
Dim FILinic As Long, ultFILA As Long, fil As Long
Dim cols As Integer
Dim COLinic As String
inter = 50                  ' aqui el intervalo
ultFILA = 8000          ' poner aqui ultima fila
FILinic = 2                 ' aqui la primera fila con datos
COLinic = "A"            ' columna donde se encuentran los datos
cols = 4                     ' cantidad de columnas a partir
For i = 1 To ultFILA \ inter
    fil = FILinic + (i - 1) * inter
    Set rang = Cells(fil, COLinic).Resize(inter, cols)
    a = rang.Value
    rang.ClearContents
    Cells(FILinic, COLinic).Offset(0, (i - 1) * cols).Resize(inter, cols) = a
Next i
Set a = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas