In một cột đơn trong nhiều cột (Microsoft Excel)
Đô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 các 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 để nó 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://dmcritchie.mvps.org/excel/snakecol.htm
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (8239) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: