Ugrás a tartalomra

Hogyan nyomtasson hosszú oszlopot egy oldalra az Excel programban?

Tételezzük fel, hogy egy oszlopban hosszú adatlista van, talán 200 sor, és most ki kell nyomtatnia őket, de amikor nyomtat, körülbelül 5 oldalas papírt használ, a bal oldalon csak egy oszlop van, és sok a szóköz a jobb oldal. Egyszóval oszlopozhat, de az Excel nem rendelkezik ezzel a funkcióval. Hogyan nyomtatja ki a hosszú lista adatait egy oldalra a papír megtakarítása érdekében?

Hosszú oszlopot nyomtasson egy oldalra képlettel

Hosszú oszlop nyomtatása egy oldalon, VBA kóddal

Hosszú oszlop nyomtatása egy oldalra a Kutools for Excel segítségével


nyíl kék jobb buborék Hosszú oszlopot nyomtasson egy oldalra képlettel

Itt bemutathatok egy hosszú képletet a probléma megoldására, kérjük, tegye a következőket:

1. Az aktív munkafüzet új munkalapjába írja be a képletet =IF(OFFSET(Sheet1!$A$1,(COLUMN()-1)*45+ROW()-1,0)="","",OFFSET(Sheet1!$A$1,(COLUMN()-1)*45+ROW()-1,0)) az A1 cellába.

Megjegyzések: Sheet1 az a munkalap, amelynek a hosszú oszlopa van.

45 az a sorszám, amelybe az adatokat egy oszlopba kívánja sorolni.

Ezek mind változók, és szükség szerint megváltoztathatja őket.

2. Ezután válassza ki az A1 cellát, és húzza lefelé a kitöltő fogantyút a 45. sorig, majd húzza tovább a kitöltő fogantyút jobbra, amíg az adatok meg nem jelennek. A hosszú oszlopot pedig több oszlopra osztották, hogy egy új munkalapon egy oldalon elférjenek. Lásd a képernyőképet:

doc-print-long-column1


nyíl kék jobb buborék Hosszú oszlop nyomtatása egy oldalon, VBA kóddal

A következő VBA-kód segíthet az adatok hosszú listájának több oszlopra osztásában, így kinyomtathatja az adatokat és papírt takaríthat meg.

1. Tartsa lenyomva a ALT + F11 gombokat, és ez megnyitja a Microsoft Visual Basic for Applications ablak.

2. Kattints betétlap > Modulok, és illessze be a következő kódot a Modul ablakba.

Sub SingleToMultiColumn()
    Dim rng As Range
    Dim iCols As Integer
    Dim lRows As Long
    Dim iCol As Integer
    Dim lRow As Long
    Dim lRowSource As Long
    Dim x As Long
    Dim wks As Worksheet
    Set rng = Application.InputBox _
      (prompt:="Select the range to convert", _
      Type:=8)
    iCols = InputBox("How many columns do you want?")
    lRowSource = rng.Rows.Count
    lRows = lRowSource / iCols
    If lRows * iCols <> lRowSource Then lRows = lRows + 1
    Set wks = Worksheets.Add
    lRow = 1
    x = 1
    For iCol = 1 To iCols
        Do While x <= lRows And lRow <= lRowSource
            Cells(x, iCol) = rng.Cells(lRow, 1)
            x = x + 1
            lRow = lRow + 1
        Loop
        x = 1
    Next
End Sub

3. Ezután nyomja meg a gombot F5 kulcs a kód futtatásához, és a felbukkanó párbeszédpanelen válassza ki a felosztani kívánt listaadatokat, lásd a képernyőképet:

doc-print-long-column2

4. Kattints OK, és írja be az osztani kívánt oszlopok számát. Lásd a képernyőképet:

doc-print-long-column3

5. és kattintson OK, a hosszú oszlop öt oszlopra lett felosztva egy új munkalapon. Képernyőképek megtekintése:

doc-print-long-column4 -2 doc-print-long-column5

nyíl kék jobb buborék Hosszú oszlop nyomtatása egy oldalra a Kutools for Excel segítségével

A hosszú képlet és a VBA kód is nehéz lehet az Ön számára, itt bemutathatok egy egyszerű és kényelmes módszert a probléma megoldására. Kutools az Excel számára'S Több oszlop nyomtatása funkció segítségével gyorsan feloszthatja a hosszú oszlopot több oszlopra, hogy ésszerűen kinyomtassa őket.

Kutools az Excel számára több mint 300 praktikus Excel eszközt tartalmaz. 30 nap alatt szabadon kipróbálható korlátozás nélkül. Szerezd meg most.

A Kutools for Excel telepítése után a következő lépéseket teheti:

1. Kattints Vállalkozás > Több oszlop nyomtatása, lásd a képernyőképet:

doc-print-long-column6

2. Az Több oszlop nyomtatása párbeszédablak:

  • Kattintson az elsőre doc-gomb gombbal válassza ki a tartomány címét, majd kattintson a másodikra doc-gombgombot a felosztani kívánt oszlop kiválasztásához.
  • Ezután adja meg az oldalanként elhelyezendő sorok számát Sorok nyomtatott oldalanként, és írja be a kívánt oszlopok számát egy oldalra Szegmensek száma. Lásd a képernyőképet:

doc-print-long-column7

3. Ezután kattintson OK, a hosszú lista adatait egy oszlopban öt oszlopra osztották fel. Képernyőképek megtekintése:

doc-print-long-column8 -2 doc-print-long-column9

Megjegyzések:

1. A cím minden oszlop elé kerül.

2. Ha ellenőrzi Hozzon létre egy linket az aktív munkalapra opcióval az új munkalap adatai összekapcsolhatók a forrás adatokkal.

Ha többet szeretne tudni erről a funkcióról, kattintson a gombra Több oszlop nyomtatása.

A legjobb irodai hatékonyságnövelő eszközök

🤖 Kutools AI Aide: Forradalmasítsa az adatelemzést a következők alapján: Intelligens végrehajtás   |  Kód létrehozása  |  Hozzon létre egyéni képleteket  |  Adatok elemzése és diagramok létrehozása  |  A Kutools funkciók meghívása...
Népszerű szolgáltatások: Ismétlődések keresése, kiemelése vagy azonosítása   |  Üres sorok törlése   |  Oszlopok vagy cellák kombinálása adatvesztés nélkül   |   Kerek Formula nélkül ...
Szuper keresés: Több kritérium VLookup    Többértékű VLookup  |   VLookup több munkalapon   |   Fuzzy Lookup ....
Speciális legördülő lista: Gyors legördülő lista létrehozása   |  Függő legördülő lista   |  Többszörösen válassza ki a legördülő listát ....
Oszlopkezelő: Adjon meg egy adott számú oszlopot  |  Oszlopok mozgatása  |  Kapcsolja be a Rejtett oszlopok láthatósági állapotát  |  Tartományok és oszlopok összehasonlítása ...
Kiemelt funkciók: Rács fókusz   |  Design nézet   |   Nagy Formula bár    Munkafüzet és lapkezelő   |  Erőforrás-könyvtár (Auto szöveg)   |  Dátumválasztó   |  Kombinálja a munkalapokat   |  Cellák titkosítása/dekódolása    E-mailek küldése listánként   |  Szuper szűrő   |   Speciális szűrő (félkövér/dőlt/áthúzott szűrés...) ...
A 15 legjobb eszközkészlet12 szöveg Eszközök (Szöveg hozzáadása, Karakterek eltávolítása,...)   |   50 + Táblázatos Típusai (Gantt-diagram,...)   |   40+ Praktikus képletek (Számolja ki az életkort a születésnap alapján,...)   |   19 beszúrás Eszközök (Helyezze be a QR-kódot, Kép beszúrása az útvonalból,...)   |   12 Átalakítás Eszközök (Számok szavakig, Valuta átváltás,...)   |   7 Egyesítés és felosztás Eszközök (Haladó kombinált sorok, Hasított sejtek,...)   |   ... és több

Töltsd fel Excel-készségeidet a Kutools for Excel segítségével, és tapasztald meg a még soha nem látott hatékonyságot. A Kutools for Excel több mint 300 speciális funkciót kínál a termelékenység fokozásához és az időmegtakarításhoz.  Kattintson ide, hogy megszerezze a leginkább szükséges funkciót...

Leírás


Az Office lap füles felületet hoz az Office-ba, és sokkal könnyebbé teszi a munkáját

  • Füles szerkesztés és olvasás engedélyezése Wordben, Excelben és PowerPointban, Publisher, Access, Visio és Project.
  • Több dokumentum megnyitása és létrehozása ugyanazon ablak új lapjain, mint új ablakokban.
  • 50% -kal növeli a termelékenységet, és naponta több száz kattintással csökkenti az egér kattintását!
Comments (14)
Rated 4.5 out of 5 · 1 ratings
This comment was minimized by the moderator on the site
I have a column of 10,000 unique numbers, all sorted. The VBA code provides a table, but the Columns are sorted individually.
I would prefer that each page is sorted numerically so easy to follow the data page by page. Any suggestions most welcome.
Keith
This comment was minimized by the moderator on the site
Hello, Paterson,
Maybe the following VBA code can do you a favor:
Sub SingleToMultiColumn()
    Dim xRng As Range
    Dim xCount As Integer
    Dim xICols As Integer
    Dim xLRows As Long
    Dim xICol As Integer
    Dim xLRow As Long
    Dim xLRowSource As Long
    Dim xRowNum As Long
    Dim xFCount, xFNum, xFNum_R, xFNum_C As Long
    Dim x As Long
    Dim xWst As Worksheet
    Dim xJ As Integer
    
    Set xRng = Application.InputBox(prompt:="Select the range to convert", Type:=8)
    xICols = InputBox("How many columns do you want?")
    xRowNum = InputBox("How many rows do you want in a page?")
    xCount = xRng.Count
    xFCount = Fix(xCount / (xICols * xRowNum))
    If xICols * xRowNum * xFCount < xCount Then xFCount = xFCount + 1
    Set xWst = Worksheets.Add
    xJ = 0
    Application.ScreenUpdating = False
    For xFNum = 1 To xFCount
        If xJ = xCount Then Exit For
        For xFNum_C = 1 To xICols
            If xJ = xCount Then Exit For
            For xFNum_R = 1 To xRowNum
                If xJ = xCount Then Exit For
                xWst.Cells((xFNum - 1) * xRowNum + xFNum_R, xFNum_C) = xRng.Item(xJ + 1)
                xJ = xJ + 1
            Next
        Next
    Next
     Application.ScreenUpdating = True
End Sub



Please try, hope it can help you!
This comment was minimized by the moderator on the site
I have a column of 10,000 numbers and the VBA macro will provide a table on several pages. However, I would prefer that each page is sorted numerically rather than the column. Any help appreciated.
This comment was minimized by the moderator on the site
Or you can just copy the table, and paste it in a word document, with as many columns you want to have.
This comment was minimized by the moderator on the site
Thank you! The formula worked seamlessly!
This comment was minimized by the moderator on the site
You can use a simple formula =OFFSET(Sheet1!$A$1,(ROW()-2)*5+COLUMN(),0) to let the data flow horizontally in 5 columns. Then you can select Page size, print first row on each page, etc. Simple, neat, no VBA
This comment was minimized by the moderator on the site
where does this formula go? I am trying to print multiple rows with several columns on one page in a multiple row layout. Similar to this:

john smith week 1
john smith week 2
john smith totals


I have over 100 rows with up to IJ
This comment was minimized by the moderator on the site
Is there a way to modify this formula to work with 3 columns instead of 1?
This comment was minimized by the moderator on the site
Modern Excel (e.g. 365) can use this for single column:
=WRAPCOLS(Sheet1!$A$1:$A$50;45;"")

Similarly, if you want the column spread horizontally use:
=WRAPROWS(Sheet1!$A$1:$A$50;3;"")


If you need multiple columns converted, I created this formula:
=LET(SOURCE;Sheet1!$A$1;R;45;C;3;X;MOD(COLUMN()-1;C);NEW_REL_COL;INT((COLUMN()-1)/C);Y;(NEW_REL_COL)*R+ROW()-1;V;OFFSET(SOURCE;Y;X);IF(OR(V="";ROW()>R);"";V))

Update SOURCE (Sheet1!$A$1) to be the top-left corner of your source, the number behind R (45) for the rows; the number behind C (3) for the columns of your source.

e.g. for output of 2 columns with 30 rows start the formula with =LET(SOURCE;Sheet1!$A$1;R;30;C;2;


On modern Excel (e.g. 365) can use this Spill-Function for multicolumn with an added empty column in between:

=LET(R;45;C;3;EMPTY_COL;TRUE;
E;IF(EMPTY_COL;1;0);ANZ;COUNTA(Sheet1!$A:$A);MY;R;MX;CEILING.MATH(ANZ/MY;1)*(C+E);
MAKEARRAY(MY;MX;LAMBDA(ru;co;
LET(X;MOD(co-1;(C+E));NEW_REL_COL;INT((co-1)/(C+E));Y;(NEW_REL_COL)*R+ru-1;
IF(OR(AND(EMPTY_COL;X=(C+E-1));Y>=ANZ);"";OFFSET(Sheet1!$A$1;Y;X))
))))

Needs to be filled only in one cell and fills out down and right.
Use R and C like above. Fill the value EMPTY_COL with true or false if you want an empty column to be added between the repetitions.
Rated 4.5 out of 5
This comment was minimized by the moderator on the site
I would be interested in a solution like this as well.
This comment was minimized by the moderator on the site
Dear Sir Thanks for this work, This VBA Code is very helpful for my work, I am glad to complete my task in seconds. Thank You. ....
This comment was minimized by the moderator on the site
After searching the internet for hours, I stumbled across this. Its exactly what I was looking for. Nice job and thanks for taking the time out for this.
This comment was minimized by the moderator on the site
Thank you for this information! It was very helpful and easy to use - even for somebody lacking strong computer skills (I used the first method)
This comment was minimized by the moderator on the site
Hello, I have a question related to the second option "Print long column on one page with VBA code". If i have more than one column in range how can I use the same code. Let say the range of "$A$2:$C$118" how can i do it work. Thanks.
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations