Đôi khi dữ liệu bạn thu thập trong một trang tính rất khớp với một cột duy nhất. Ví dụ: bạn có thể có một danh sách tên và tất cả chúng đều nằm trong cột A của trang tính của bạn. Khi bạn chọn in trang tính, nó có thể sử dụng khá nhiều trang, tất cả chúng gần như trống vì bên trái của mỗi trang chứa tên và bên phải chứa khoảng trắng.

Trong loại ví dụ này, sẽ rất hay nếu bạn in một cột duy nhất như thể nó là nhiều cột. Bằng cách đó, bạn có thể sử dụng nhiều trang đã in hơn và ít trang tổng thể hơn cho lệnh in của mình. Thật không may, Excel không chứa lệnh nội tại hoặc cài đặt in cho phép bạn tự động định dạng lại dữ liệu của mình để dữ liệu in tốt hơn. Tuy nhiên, có những cách giải quyết.

Một giải pháp thường bị bỏ qua là chỉ sao chép danh sách một cột vào tài liệu Word trống. Nếu bạn dán nó ở đó dưới dạng văn bản thuần túy, bạn có thể định dạng mỗi trang cho nhiều cột và thực sự in thông tin.

Nếu bạn không muốn sử dụng Word, bạn có thể cắt và dán thông tin từ cột đầu tiên vào các cột khác để cung cấp số cột in mong muốn. Tất nhiên, điều này nên được thực hiện trong một trang tính hoặc sổ làm việc mới, để dữ liệu gốc không bị xáo trộn. Ví dụ: nếu bạn có 200 tên trong danh sách ban đầu của mình, bạn có thể cắt 40 tên cùng một lúc từ danh sách và dán chúng vào các cột từ A đến E của một trang tính mới. Việc in trang tính này cần ít trang hơn so với in trang tính một cột ban đầu.

Tất nhiên, nếu bạn phải làm việc cắt và dán này thường xuyên, công việc nhà có thể nhanh chóng trở nên mệt mỏi. Trong trường hợp này, bạn có thể sử dụng một macro thực hiện điều tương tự: Nó cắt và cắt danh sách ban đầu và dán nó vào một số cột trên sổ làm việc mới.

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

Khi bạn chạy macro này, bạn sẽ được yêu cầu chọn phạm vi bạn muốn chuyển đổi, sau đó bạn được yêu cầu chỉ định số cột bạn muốn định dạng lại. Nó tạo một trang tính mới trong sổ làm việc hiện tại và sao chép thông tin từ bản gốc vào nhiều cột như bạn đã chỉ định.

Để có thêm tài nguyên để giải quyết vấn đề này, hãy tham khảo các trang Web sau:

http://www.ozgrid.com/VBA/MiscVBA.htm#Print http://www.mvps.org/dmcritchie/excel/snakecol.htm

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (2219) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: