Keith có một trang tính sử dụng các cột từ A đến H. Anh ấy muốn có thể mở rộng mỗi cột một lượng tương ứng. Ví dụ, nếu anh ta chọn tất cả 8 cột, sẽ thật tuyệt nếu anh ta có thể nắm lấy cạnh bên phải của cột H và khi anh ta kéo sang phải, tất cả các cột sẽ được giãn cách tương ứng. Anh ấy tự hỏi liệu có cách nào để làm rộng kiểu cột này không.

Để hiểu rõ hơn về những gì Keith đang nói về, có lẽ một ví dụ là theo thứ tự. Cách thông thường để điều chỉnh độ rộng cột bằng chuột là chọn các cột và sau đó kéo một dải phân cách giữa các tiêu đề cột sang phải hoặc trái. Giả sử rằng chiều rộng của cột A là 5, cột B là 10 và cột C là 15. Nếu bạn chọn A: C và kéo dải phân cách ở bên phải của tiêu đề cột C lên 20, tức là tăng 33% cho cột C. Lý tưởng nhất, cả cột A và B cũng sẽ được thay đổi kích thước bằng 33% (như Keith mong muốn), nhưng thay vào đó, cả hai đều được đặt thành chiều rộng 20 để phù hợp với cột C.

Hơn nữa, nhấn giữ phím bổ trợ (Ctrl, Alt hoặc Shift) khi bạn kéo chuột không có tác dụng; chiều rộng cột vẫn được đặt bằng nhau. Nếu bạn cố gắng nhấp chuột phải và kéo, điều đó không có tác dụng gì ngoại trừ hiển thị menu Ngữ cảnh. Do đó, từ tất cả các thử nghiệm mà chúng tôi đã có thể thực hiện, không có cách nào để điều chỉnh độ rộng cột trong Excel theo tỷ lệ mà chúng tôi có thể khám phá.

Có lẽ cách dễ nhất là sử dụng macro để điều chỉnh độ rộng của cột.

Sau đây là một ví dụ điển hình về cách tiếp cận như vậy.

Sub ProportionalWidth()

Dim C As Range     Dim sRaw As String     Dim sTemp As String     Dim P As Single

sRaw = InputBox("Increase width by how what % (0 to 100)?")

P = Val(sRaw)

If P >= 0 And P <= 100 Then         P = 1 + (P / 100)

sTemp = ""

For Each C In Selection.Columns             sTemp = sTemp & "Column " & ColumnLetter(C.Column)

sTemp = sTemp & ": " & C.ColumnWidth & " ==> "

C.ColumnWidth = C.ColumnWidth * P             sTemp = sTemp & C.ColumnWidth & vbCrLf         Next C         MsgBox sTemp     Else         MsgBox "Out of range; no adjustment made"

End If End Sub
Function ColumnLetter(Col As Long) As String     Dim Arr     Arr = Split(Cells(1, Col).Address(True, False), "$")

ColumnLetter = Arr(0)

End Function

Thực tế có hai macro trong ví dụ này. Đầu tiên (Chiều rộng theo tỷ lệ) thay đổi chiều rộng của bất kỳ cột nào bạn đã chọn. Cột thứ hai (ColumnLetter) được sử dụng để chuyển đổi một số cột dạng số thành các chữ cái của cột. Nó chỉ được sử dụng để kết hợp báo cáo (trong sTemp) về độ rộng trước và sau của các cột.

Khi bạn chọn cột và chạy macro, nó sẽ nhắc bạn về việc bạn muốn tạo những cột đó rộng hơn bao nhiêu. Nhập một số từ 0 đến 100, nhấp vào OK và các cột được mở rộng theo tỷ lệ phần trăm đó. Ngoài ra, bạn sẽ thấy một hộp thông báo hiển thị chiều rộng ban đầu của mỗi cột và chiều rộng đã điều chỉnh.

Lưu ý rằng macro này chỉ mở rộng các cột. Nếu bạn muốn sử dụng nó để làm cho các cột hẹp hơn theo tỷ lệ, bạn sẽ cần phải sửa đổi nó để xử lý các giá trị âm.

_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 (13429) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.