Làm cách nào để in một bảng Excel theo bố cục nhiều cột?


13

Trong bảng excel của tôi, tôi có ba cột A, B, C rất mỏng, nhưng có rất nhiều dòng (> 500). Bây giờ nếu tôi in nó ra, tôi nhận được 10 trang gần như trống rỗng. Chỉ ở viền trái của mỗi trang tôi mới thấy ba cột này.

Những gì tôi muốn làm là in toàn bộ trang tính đó theo bố cục nhiều màu. 2 hoặc 3 cột trên mỗi trang là đủ. Hiện tại, tôi đang làm điều đó bằng cách sao chép các giá trị ra khỏi Excel, chèn nó vào tài liệu Word và sau đó sử dụng chức năng bố trí nhiều cột của Word. Không có cách nào để đạt được điều đó trực tiếp trong Excel?

Để làm rõ vấn đề của tôi: Hiện tại các trang của tôi trông như thế

A B C
A B C
A B C
A B C
. . .

Nhưng điều tôi muốn là đây:

A B C     A B C     A B C
A B C     A B C     A B C
A B C     A B C     A B C
. . .     . . .     . . .

Câu trả lời:


10

Tôi không nghĩ Excel có thể làm điều đó. Một cách giải quyết khả thi là sử dụng Microsoft Word và chọn các cột xung quanh: Cách rắn cột để sử dụng ít trang hơn

Sử dụng MS Word để Cột rắn (#msword)

Đây có lẽ là cách dễ nhất để sử dụng cho một lần sử dụng, vì tôi đã không đưa vào hộp thoại vào macro Excel của mình được mô tả sau.

  1. Chọn và sao chép các cột từ bảng tính Excel.
  2. Dán vào Word, việc này sẽ mất một vài phút
  3. Chọn các hàng sẽ được lặp lại ở đầu trong bảng, sau đó chỉ ra điều này trong Word với Bảng -> Hàng để lặp lại
  4. Chọn toàn bộ bảng bằng cách sử dụng neo hoặc chọn (các) ô trong bảng rồi chọn Bảng -> Chọn -> Bảng
  5. Cho biết số lượng hàng bằng nút cột hoặc Định dạng -> Cột nếu bạn muốn kiểm soát nhiều hơn vị trí

Ví dụ này hoạt động tốt. Bài viết cung cấp các khả năng khác, quá.


4

Nếu bạn có một bảng nguồn được gọi là "có thể truy cập được", hãy đặt công thức này trên một bảng phụ vào mỗi ô (nơi dữ liệu được in sẽ xuất hiện):

=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))

( ở trên được dịch từ tiếng Đức sang tiếng Anh. Công thức tiếng Đức được thử nghiệm là =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3)) :)

kết quả mong đợi:

Điều này sẽ biến đổi nội dung của trang tính "có thể truy cập":

A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...

vào:

A1 B1 C1    A5 B5 C5    ...
A2 B2 C2    A6 B6 C6    ...
A3 B3 C3    ...
A4 B4 C4    ...

Giải trình:

Khái niệm cơ bản:

ví dụ: OFFSET( datatable!$A$2; 3; 4 )tham chiếu ô tương ứng với $A$2, 3 hàng xuống, 4 cột bên phải.

ROW()COLUMN()là các số, biểu thị vị trí của ô hiện tại trong trang tính hiện tại (ví dụ $A$1= cột 1 / hàng 1, $C$2= cột 3 / hàng 2).

Mọi (-1)nơi đều cần thiết bởi vì chúng tôi đang sử dụng offset, và hàng và cột đầu tiên là 1, nhưng chúng tôi muốn ô được tham chiếu đầu tiên là $A$2, không $A$2cộng với offset 1.

Cái (ROW()-2)này dành cho một tiêu đề trong bảng đầu ra- / in (Nó sẽ là -1 nếu bạn không có tiêu đề).
$A$2là cho một tiêu đề trong nguồn "có thể truy cập". Không có tiêu đề nên được tham chiếu với $A$1(thay vì $A$2).

Chi tiết:

Tham số thứ 3 OFFSET(...;...;MOD(COLUMN()-1;3))là phần bù cột , nó sẽ luôn tham chiếu một trong 3 cột đầu tiên của nguồn "có thể truy cập".
Đó là $A$2cộng cột bù 0, 1, 2, 0, 1, 2, 0, 1, 2, ...

Trong tham số thứ 2 OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)chọn phần bù hàng .
Về cơ bản toán học ở đây là y + x * 4.

4 là số hàng bạn muốn hiển thị.
3 là số lượng colums trong nguồn "datable".

X được tạo từ cột và modulo 3.
COLUMN()-1là 0, 1, 2, 3, ... và cứ thế.
MOD(COLUMN()-1;3)sẽ là 0, 1, 2, 0, 1, 2, 0, 1, 2, ...

COLUMN()-1-MOD(COLUMN()-1;3)sẽ là 0, 3, 6, 9, ... và cứ thế, trong đó giá trị chỉ thay đổi mỗi cột thứ 3.
Chia cho 3 sẽ cho kết quả là 0, 1, 2, 3, ...
Phép nhân với 4 sẽ cho kết quả là 0, 4, 8, 12, ...

(Để giải thích về Modulo , xem thêm MOD()trong trợ giúp excel hoặc thao tác modulo trong wikipedia )

(Cảm ơn Jake Kacher, vì ý tưởng cơ bản)


1

Bạn có thể sử dụng một công thức đơn giản:

=OFFSET(Sheet1!$A$1,(ROW()-2)*5+COLUMN(),0)

để cho dữ liệu chảy theo chiều ngang trong 5 cột.
Sau đó, bạn có thể chọn kích thước trang, in hàng đầu tiên trên mỗi trang, v.v ...
Đơn giản, gọn gàng, không cần VBA.


3
Có lẽ hữu ích cho một Chuyên gia Excel - nhưng tôi không biết tôi sẽ đặt cái này ở đâu hoặc làm thế nào để sử dụng nó.
Anthony Nichols

1
Không thực hiện chính xác những gì được yêu cầu, nhưng cũng không thú vị. Nếu cột A có một dãy số dài, thì nếu bạn sao chép công thức này để nói C, D, E, F, G và kéo nó xuống một số đủ trong số các hàng, bạn sẽ nhận được 5 cột dữ liệu ngắn hơn. Dữ liệu chảy qua năm cột, trong khi tôi hy vọng bạn muốn dữ liệu chảy xuống từng cột và rắn qua. Tuy nhiên, công thức nhỏ gọn rất thú vị.
loneRanger

0

Cách dễ nhất tôi tìm thấy là tạo một bảng tính mới và chỉ cần tạo lại bảng theo cách thủ công tách thành các cột riêng biệt.

ví dụ A1 =Sheet1!A1

B1 =Sheet1!B1

C1 =Sheet1!C1

Trống D1 (đối với cột chia)

sau đó là E1 =Sheet1!E51

F1 =Sheet1!B51

G1 =Sheet1!C51

Và sao chép này xuống hơn 50 hàng. Điều này sau đó biến một bảng 100 cột đơn thành một bảng 50 cột 50 hàng. Điều chỉnh cho phù hợp với nhu cầu của bạn.

Tất nhiên đây là thủ công và phụ thuộc vào số hàng còn lại như cũ. Sẽ không khó để tự động tính toán số lượng hàng cần thiết từ số lượng hàng trong bảng gốc và số lượng cột bạn muốn. Vấn đề duy nhất là nếu bảng gốc mở rộng ra ngoài những gì sẽ phù hợp trên một trang khi được tách thành các cột trên trang tính mới.


0

Nếu bạn có Adobe Indesign, bạn có thể đặt tệp excel vào đó và thực hiện bố cục này một cách dễ dàng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.