Bỏ qua nội dung chính

Làm thế nào để in cột dài trên một trang trong Excel?

Giả sử bạn có một danh sách dài dữ liệu trong một cột, có thể 200 hàng và bây giờ bạn cần in chúng, nhưng khi bạn in, nó sử dụng khoảng 5 trang giấy, chỉ có một cột ở phía bên trái và nhiều khoảng trắng trên phía bên phải. Trong word, bạn có thể cột, nhưng Excel không có chức năng này. Làm thế nào để bạn in dữ liệu danh sách dài trên một trang để tiết kiệm giấy?

In cột dài trên một trang với công thức

In cột dài trên một trang với mã VBA

In cột dài trên một trang với Kutools cho Excel


mũi tên màu xanh bong bóng bên phải In cột dài trên một trang với công thức

Ở đây tôi có thể giới thiệu cho bạn một công thức dài để giải quyết vấn đề này, hãy làm như sau:

1. Trong một trang tính mới của sổ làm việc đang hoạt động của bạn, hãy nhập công thức =IF(OFFSET(Sheet1!$A$1,(COLUMN()-1)*45+ROW()-1,0)="","",OFFSET(Sheet1!$A$1,(COLUMN()-1)*45+ROW()-1,0)) vào ô A1.

Chú ý: Sheet1 là trang tính có danh sách dài mà bạn muốn xếp vào cột.

45 là số hàng mà bạn muốn liệt kê dữ liệu trong một cột.

Chúng đều là các biến và bạn có thể thay đổi chúng theo nhu cầu của mình.

2. Sau đó chọn ô A1 và kéo chốt điền xuống hàng 45, rồi tiếp tục kéo chốt điền từ sang phải cho đến khi dữ liệu được hiển thị. Và cột dài đã được chia thành nhiều cột để phù hợp với một trang trong một trang tính mới. Xem ảnh chụp màn hình:

doc-in-dài-cột1


mũi tên màu xanh bong bóng bên phải In cột dài trên một trang với mã VBA

Mã VBA sau đây cũng có thể giúp bạn chia một danh sách dài dữ liệu thành nhiều cột để bạn có thể in dữ liệu và tiết kiệm giấy.

1. Giữ ALT + F11 chìa khóa và nó mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Cửa sổ mô-đun.

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. Sau đó nhấn F5 để chạy mã này và chọn dữ liệu danh sách mà bạn muốn chia trong hộp thoại bật lên, xem ảnh chụp màn hình:

doc-in-dài-cột2

4. Nhấp chuột OKvà nhập số cột bạn muốn chia. Xem ảnh chụp màn hình:

doc-in-dài-cột3

5. và bấm OK, cột dài đã được chia thành năm cột trong một trang tính mới. Xem ảnh chụp màn hình:

doc-in-dài-cột4 -2 doc-in-dài-cột5

mũi tên màu xanh bong bóng bên phải In cột dài trên một trang với Kutools cho Excel

Cả công thức dài và mã VBA có thể khó đối với bạn, ở đây tôi có thể giới thiệu cho bạn một phương pháp dễ dàng và thuận tiện để giải quyết vấn đề này. Kutools cho Excel'S In nhiều cột hàm có thể giúp bạn chia nhanh cột dài thành nhiều cột để có thể in chúng một cách hợp lý.

Kutools cho Excel bao gồm hơn 300 công cụ Excel tiện dụng. Dùng thử miễn phí không giới hạn trong 30 ngày. Lấy nó ngay.

Khi bạn đã cài đặt Kutools cho Excel, bạn có thể thực hiện theo các bước sau:

1. Nhấp chuột Doanh nghiệp > In nhiều cột, xem ảnh chụp màn hình:

doc-in-dài-cột6

2. Trong In nhiều cột hộp thoại:

  • Nhấp vào đầu tiên nút tài liệu để chọn tiêu đề của dải ô, sau đó bấm vào nút thứ hai nút tài liệuđể chọn cột mà bạn muốn chia.
  • Sau đó, chỉ định số hàng bạn muốn đặt trên mỗi trang Hàng trên mỗi trang invà nhập số cột bạn muốn trong một trang dưới Số lượng phân đoạn. Xem ảnh chụp màn hình:

doc-in-dài-cột7

3. Sau đó nhấn vào OK, dữ liệu danh sách dài đã được chia thành năm cột trong một trang. Xem ảnh chụp màn hình:

doc-in-dài-cột8 -2 doc-in-dài-cột9

Ghi chú:

1. Tiêu đề sẽ được thêm vào trước mỗi cột.

2. Nếu bạn kiểm tra Tạo liên kết với trang tính hoạt động tùy chọn, dữ liệu trang tính mới có thể được liên kết với dữ liệu nguồn.

Nếu bạn muốn biết thêm về tính năng này, vui lòng nhấp vào In nhiều cột.

Công cụ năng suất văn phòng tốt nhất

🤖 Trợ lý AI của Kutools: Cách mạng hóa việc phân tích dữ liệu dựa trên: Thực thi thông minh   |  Tạo mã  |  Tạo công thức tùy chỉnh  |  Phân tích dữ liệu và tạo biểu đồ  |  Gọi các hàm Kutools...
Các tính năng phổ biến: Tìm, đánh dấu hoặc xác định các bản sao   |  Xóa hàng trống   |  Kết hợp các cột hoặc ô mà không làm mất dữ liệu   |   Vòng không có công thức hữu ích. Cảm ơn !
Siêu tra cứu: Nhiều tiêu chí VLookup    VLookup Nhiều Giá Trị  |   VLookup trên nhiều trang tính   |   Tra cứu mờ ....
Danh sách thả xuống nâng cao: Tạo nhanh danh sách thả xuống   |  Danh sách thả xuống phụ thuộc   |  Danh sách thả xuống nhiều lựa chọn ....
Trình quản lý cột: Thêm một số cột cụ thể  |  Di chuyển cột  |  Chuyển đổi trạng thái hiển thị của các cột ẩn  |  So sánh dãy và cột hữu ích. Cảm ơn !
Các tính năng nổi bật: Tiêu điểm lưới   |  Chế độ xem thiết kế   |   Thanh công thức lớn    Trình quản lý sổ làm việc & trang tính   |  Thư viện tài nguyên (Văn bản tự động)   |  Bảng chọn ngày   |  Kết hợp các bảng tính   |  Mã hóa/Giải mã ô    Gửi email theo danh sách   |  Siêu lọc   |   Bộ lọc đặc biệt (lọc in đậm/nghiêng/gạch ngang...) ...
15 bộ công cụ hàng đầu12 bản văn CÔNG CỤ (thêm văn bản, Xóa ký tự,...)   |   50 + Biểu đồ Các loại (Biểu đồ Gantt,...)   |   40+ Thực tế Công thức (Tính tuổi dựa trên ngày sinh,...)   |   19 chèn CÔNG CỤ (Chèn mã QR, Chèn ảnh từ đường dẫn,...)   |   12 Chuyển đổi CÔNG CỤ (Số thành từ, Chuyển đổi tiền tệ,...)   |   7 Hợp nhất & Tách CÔNG CỤ (Các hàng kết hợp nâng cao, Chia ô,...)   |   ... và nhiều hơn nữa

Nâng cao kỹ năng Excel của bạn với Kutools for Excel và trải nghiệm hiệu quả hơn bao giờ hết. Kutools for Excel cung cấp hơn 300 tính năng nâng cao để tăng năng suất và tiết kiệm thời gian.  Bấm vào đây để có được tính năng bạn cần nhất...

Mô tả


Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
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