Làm cách nào để làm cho tính năng chiều cao hàng tự động phù hợp với chiều cao của Excel thực sự tự động phù hợp với chiều cao của hàng?


88

Đối với mọi thế hệ Excel tôi có thể nhớ (bao gồm cả năm 2010, hiện tôi đang sử dụng), các tính năng "Hàng kích thước tự động" của Excel đôi khi không thực sự tự động kích thước một hàng khi ô chứa văn bản được bọc. Khi nó hoạt động đúng, tất cả các văn bản được tiết lộ và không có không gian bổ sung dưới dòng văn bản cuối cùng. Khi thất bại, nó thêm không gian bên dưới văn bản. Để làm cho vấn đề tồi tệ hơn, những gì bạn nhìn thấy không phải lúc nào cũng là những gì bạn nhận được, tức là văn bản xuất hiện ổn trên màn hình sẽ bị cắt khi nó được in. Bạn cũng có được kích thước khác nhau tùy thuộc vào việc bạn được phóng to / thu nhỏ hay ở kích thước thực tế.

Trường hợp thử nghiệm đơn giản:

Tại sao có khoảng cách một dòng sau văn bản trong ô A1 mà không phải là A2?

(Để tái tạo: đặt chiều rộng của cột A thành 17,14 (125 pixel), bọc văn bản và căn chỉnh ô trên cùng.)

(Tôi đã kiểm tra kỹ rằng tôi đã áp dụng Auto Fit Row height cho cả hai hàng. Mức thu phóng là 100%.)

Auto Fit thất bại cho hàng đầu tiên, thành công cho hàng thứ hai

Có biện pháp khắc phục nào được biết đến cho việc này mà không cần dùng đến cách điều chỉnh độ cao hàng thủ công (điều này không thực tế đối với nhiều hơn một số hàng) không?


Trong trường hợp bất cứ ai muốn sao chép ví dụ trong câu hỏi của tôi, chiều rộng của cột A là 17,15 (125 pixel).
devuxer

1
Lỗi dường như phụ thuộc vào phông chữ và kích thước phông chữ
Raystafarian

1
@Raystafarian, dường như không hoạt động với Wrap Text được bật.
devuxer

1
Tôi đã thử tự động hóa các cột, mở rộng một cột và sau đó tự động hóa các hàng. Điều đó đã giảm xuống từ 73 đến 64 trang nhưng vẫn còn rất nhiều dòng trống ở cuối hầu hết các hàng. Tôi có các hàng thẳng hàng đầu. Thay đổi thủ công kích thước của các hàng làm cho nó trông ổn khi tôi đang làm việc trên tài liệu, nhưng không phải trong bản xem trước hoặc in.

1
Vâng, thật khó chịu! Cũng đã thấy điều này ít nhất trong Excel 2007. Đừng nhớ đã từng thấy nó trong Excel 2003.
tóm tắt

Câu trả lời:


105

Một phương pháp tôi vừa tìm thấy (mở rộng bài viết trước một chút):

  • Chọn toàn bộ tờ.
  • Thay đổi kích thước cột rộng hơn một chút (vì toàn bộ trang tính được chọn, tất cả các cột sẽ rộng hơn)
  • Bấm đúp vào dấu phân cách hàng - chiều cao hàng sẽ được tự động trang bị
  • Bấm đúp vào dấu phân cách cột - chiều rộng cột sẽ được tự động trang bị

Voila!


2
Điều này thực sự có vẻ làm việc. Vùng màu xám là nơi bạn nói "rộng hơn một chút". Một trong những ví dụ tôi đã thử không hoạt động trừ khi tôi kéo dài cột một số tiền hợp lý, nhưng cuối cùng tôi đã làm cho nó hoạt động. Cảm ơn!
devuxer

5
Tôi đã chọn toàn bộ trang tính sau đó nhấp đúp vào dấu tách hàng giữa hai hàng ngẫu nhiên và toàn bộ tài liệu điều chỉnh lại độ cao của hàng.
Keith Sirmons

6
Lưu ý rằng AutoFit không hoạt động đối với bất kỳ ô được hợp nhất nào: support.microsoft.com/kb/212010
freb

Không phải phương pháp này chỉ hoạt động nếu tất cả các cột có cùng chiều rộng? Khi tôi thay đổi kích thước một cột rộng hơn một chút, tất cả các cột khác đều có cùng chiều rộng (trong Excel 2010).
Ed Greaves

Đợi một chút, phương pháp này có tác dụng phụ là tăng chiều rộng của tất cả các cột trong trang tính, phải không?
Ant_222

13

WYSIWYG của Excel không phải là tốt nhất. Trong ảnh của bạn, 'con mèo.' chỉ lén lút vào dòng thứ 5. Nếu bạn giảm tỷ lệ phần trăm thu phóng xuống bất cứ thứ gì dưới 100% (ví dụ 99%.) Thì 'mèo'. bây giờ được gói xuống dòng thứ 6 Tôi nghĩ rằng Excel đang cố gắng tự động điều chỉnh theo cách sẽ đảm bảo mọi thứ hầu như luôn hiển thị bất kể mức độ phóng to của bạn.

Đó không phải là vấn đề duy nhất bạn sẽ gặp phải với AutoFit. Ngoài ra, cách in một ô được bọc từ sẽ không khớp với những gì bạn thấy trên màn hình. Lấy ví dụ của bạn và thay đổi phông chữ thành Chuyển phát nhanh trong khi để lại kích thước ở mức 11.

Thay đổi phông chữ sang Chuyển phát nhanh

Như bạn có thể thấy, ô A1 dường như được cung cấp thêm 1,5 dòng. Bây giờ hãy nhìn vào bản xem trước in, 'mèo.' là hoàn toàn ẩn.

in bản xem trước của cùng một tập tin

Theo kinh nghiệm của tôi, Excel có vấn đề này với một số phông chữ và kích thước phông chữ nhất định hơn các phông chữ khác. Chuyển phát nhanh kém hơn Chuyển phát nhanh Mới , kích thước 11 thường kém hơn 10 hoặc 12. (Tại sao họ chọn kích thước 11 làm mặc định mới, tôi không biết.)


Vì vậy, ... về cơ bản họ đã phá vỡ nó. Mặc dù lời giải thích của bạn là hợp lý, nhưng nó thực sự làm tôi bực mình, nó giống như thế này: - /
abstrask

3

Tôi chỉ viết một macro nhỏ cho mục đích đó. Tôi đã gán cho nó một phím tắt (Ctrl-Shift-J) và nó hoạt động như một cơ duyên đối với tôi.

Sub ArrangeTable()
'set proper column width and row height for the current region
    With Selection.CurrentRegion
        .Columns.ColumnWidth = 200
        .Columns.EntireColumn.AutoFit
        .Rows.EntireRow.AutoFit
    End With
End Sub

Để cung cấp tính năng này vĩnh viễn, bạn có thể dễ dàng tạo bổ trợ tự động tải:

  • tạo một mô-đun trong một sổ làm việc trống mới và dán mã,
  • gán cho nó phím tắt bạn muốn,
  • sau đó Save As, Add-invào thư mục %appdata%\Microsoft\Excel\XLSTART
    Bằng cách này, nó sẽ được tải vô hình mỗi khi bạn khởi động Excel.

Hoặc bạn có thể làm điều này: Private Sub Worksheet_Change (ByVal Target As Range) ArrangeTable End Sub
Kurdtpage

0

Trong một số trường hợp, vấn đề về không gian thừa ở một số hàng sau khi gọi "Chiều cao hàng tự động" có thể là một cột ẩn đã bọc văn bản trong các hàng đó.


Đó không phải là trường hợp trong câu hỏi này.
Dmitry Grigoryev

0

Có một bài viết kb về điều này "gợi ý" (nó không thể chấp nhận được, theo kiểu cổ điển của Microsoft) rằng nếu bạn từng đặt chiều cao hàng, tự động tăng chiều cao tự động sẽ biến mất vĩnh viễn cho hàng của bảng tính đó. Hàng có chiều cao mà bạn chưa chạm vào sẽ tự động hoàn thành tốt.

Mặc dù bạn có thể đặt lại độ rộng cột với cài đặt "độ rộng tiêu chuẩn" vào năm 2003 (madman do 2007 thiết kế: thay đổi thành "chiều rộng mặc định"), nhưng họ đã quên (một lần nữa) (và một lần nữa) để đặt nó vào hàng. Vì vậy, sự trường tồn dường như không thể tránh khỏi. Điều đó có nghĩa là, nếu bạn có chiều cao mặc định là 15 và bạn tạo một trang tính và đặt tất cả các độ cao thành 12, bạn chỉ bị mất tự động tự động.


1
Tôi không thể sao chép hành vi này. Ngay khi tôi thực hiện "Auto Fit Row height", mọi cài đặt chiều cao thủ công cho hàng đó sẽ ngay lập tức được thay thế bằng chiều cao tự động phù hợp. Vấn đề đơn giản là chiều cao tự động phù hợp thường sai.
devuxer

Tôi có thể nhân đôi hành vi này. Điều này là chính xác như nó làm việc cho tôi.
Peter Nore

0

Đôi khi có phương pháp hạt nhân để sửa lỗi tự động ghi sai.

Những gì tôi làm là sao chép văn bản ra khỏi mỗi ô và dán dữ liệu vào Notepad, sau đó xóa hàng. Sau đó, tôi ngay lập tức sao chép và chèn một hàng trống nhưng có cùng định dạng và hành vi tốt như hàng đã bị xóa. (Bạn phải sao chép và chèn toàn bộ hàng bằng cách sử dụng các nút hàng bên trái.)

Khi đã xong, bạn phải quay lại và chèn văn bản từ notepad vào mỗi ô. (Sử dụng F2hoặc kích hoạt chế độ chỉnh sửa của từng ô trước khi chèn văn bản.) Đó là một nỗi đau, vì vậy đây là phương sách cuối cùng, đặc biệt là đối với các bảng tính rộng.

Đó là giải pháp duy nhất đôi khi, vì vấn đề nằm trong chính chương trình.


1
sao chép văn bản ra khỏi mỗi ô - điều này dường như đòi hỏi nhiều công việc như định dạng thủ công.
Dmitry Grigoryev

0

Tôi đã không kiểm tra kỹ lưỡng điều này nhưng nó đã làm việc cho tôi. Về cơ bản, nó sẽ tự động điều chỉnh tất cả các trang tính sau đó quay lại và đặt chiều rộng cột thành chiều rộng ban đầu, trừ khi nó được mở rộng bằng điều chỉnh tự động. Tôi chỉ có 10 cột và không bao giờ có hơn 1000 hàng để điều chỉnh mã khi cần.

Sub ResizeCells()
    Dim sheetCounter As Integer
    Dim rowCounter As Integer
    Dim colCounter As Integer
    Dim totalWidth As Double
    Dim oldColWidths(1 To 10) As Double

    For sheetCounter = 1 To ThisWorkbook.Sheets.Count
        ActiveWorkbook.Worksheets(sheetCounter).Select
        totalWidth = 0

        ' Extend the columns out to 200
        For colCounter = 1 To 10
            oldColWidths(colCounter) = Cells(1, colCounter).ColumnWidth
            totalWidth = totalWidth + oldColWidths(colCounter)
            Cells(1, colCounter).ColumnWidth = 200
        Next

        For rowCounter = 4 To 1000
            If Cells(rowCounter, 1).Value <> "" Or Cells(rowCounter, 2).Value <> "" Or Cells(rowCounter, 3).Value <> "" Then
                Rows(rowCounter & ":" & rowCounter).EntireRow.AutoFit
            End If
        Next

        ' do autofit
        For colCounter = 1 To 10
            Cells(1, colCounter).EntireColumn.AutoFit
        Next

        ' reset to original values if current width is less than the original width.
        For colCounter = 1 To 10
            If Cells(1, colCounter).ColumnWidth < oldColWidths(colCounter) + 0.25 Then
                Cells(1, colCounter).ColumnWidth = oldColWidths(colCounter)
            End If
        Next
    Next
End Sub

Làm thế nào để nó giải quyết lỗi Tự động hóa? Bạn tự động điều chỉnh các hàng, sau đó tự động xác định các cột và sau đó chỉnh lại độ rộng của cột ban đầu. Tại sao nó kết thúc với chiều cao hàng phù hợp chính xác? Nhân tiện, totalWidthlà thất nghiệp.
Ant_222

Nó không hoàn toàn hoạt động đối với tôi, bởi vì bạn chỉ khôi phục chiều rộng của những colunns đã trở nên hẹp hơn. Thuật toán của bạn do đó không giữ được chiều rộng cột.
Ant_222

-1

Để diễn giải Dunc :

Tôi đã giải quyết một vấn đề tương tự bằng cách:

  1. Chọn toàn bộ bảng tính.

  2. Nhấp đúp vào dòng trong lề ở giữa hai hàng.

Cụ thể để giải quyết vấn đề của bạn về dòng bổ sung đó, tôi cho rằng có một nhân vật ở đó. Nó có thể không phải là một nhân vật có thể nhìn thấy, nhưng chắc chắn có một cái gì đó ở đó.


3
Các bước của bạn không khác gì những gì tôi đã thử (nhấp đúp vào giữa các hàng chỉ là một phím tắt cho "Auto Fit Row height"). Đối với lý thuyết của bạn rằng có một nhân vật phụ, bạn có thể đúng, nhưng tôi chắc chắn đã không loại một, và tôi sẽ không biết làm thế nào để loại bỏ nó. Tôi mời bạn thử gõ văn bản chính xác như trong hình minh họa của tôi vào Excel và xem bạn có nhận được kết quả tương tự không.
devuxer

1
Không có nhân vật nào ở đó.
Raystafarian

-1

Tôi đã không dành thời gian để đọc các bình luận khác. Tại sao dòng ở dưới cùng của khối thứ nhất mà không phải trong khối thứ hai?

Đó là vì văn bản kết thúc quá gần với cạnh phải của ô. Nếu bạn điều chỉnh cột rộng hơn một chút và nhấp đúp vào giữa các hàng, nó sẽ thay đổi kích thước tương ứng.


4
Tôi không nghi ngờ gì là bạn đúng, nhưng sau đó không còn "tự động" nữa, đó là thủ công.
devuxer

-1

Tôi cũng đã chịu đựng lỗi nhỏ nhưng cực kỳ mất tập trung này trong nhiều năm. Tôi không có cách giải quyết nào ngoại trừ loay hoay với độ rộng hàng cho ô có hầu hết văn bản trong đó, và cuối cùng chương trình sẽ trở lại và hiển thị văn bản chính xác.


loay hoay với chiều rộng hàng không phải là một giải pháp tái sản xuất.
Dmitry Grigoryev

-1

Có một giải pháp dễ dàng:

1) Chọn tất cả các hàng mà bạn muốn tự động định dạng (nếu đó là một khối lớn nhấp vào đầu tiên và sau đó nhấn Shift + End và Shift + Down)

2) Nhấp chuột phải vào lựa chọn, Định dạng ô, tab Căn chỉnh, bỏ chọn Văn bản ngắt.

Hi vọng điêu nay co ich ;)


1
Nếu bạn bỏ chọn Wrap text, sẽ không còn điểm nào trong việc tự động điều chỉnh độ cao hàng của bạn nữa, vì tất cả các hàng sẽ có cùng kích thước.
Dmitry Grigoryev

Tôi đã bị làm phiền bởi vấn đề này trong nhiều năm. Toggling Wrap Text cho một hàng rắc rối đã khôi phục chức năng tự động.
Mitch

-1

Tôi có Excel 2010. Tôi thấy rằng sự cố này đã xảy ra với tôi khi cài đặt Thu phóng của tôi không ở mức 100%. Miễn là tôi ở mức 100%, tôi sẽ không bị cắt văn bản với AutoFit cho các cột và hàng


3
Trong ví dụ tôi sử dụng cho câu hỏi của mình, tôi đã phóng to = 100% toàn bộ thời gian. Vấn đề xảy ra bất kể.
devuxer

-1

Giả thuyết của tôi là Excel bị thắt nút khi phải mở rộng quá nhiều dòng. Tôi đã có một kinh nghiệm tương tự như trên. Có vẻ như có thêm NL / CR / LF ở cuối nhưng tôi biết là không có. Nếu tôi xây dựng ô một số ký tự cùng một lúc, nó sẽ tự động định dạng OK cho đến khi đạt được kích thước cụ thể, sau đó nó sẽ đặt vào dòng bổ sung. (Hành vi tương tự ngược lại xảy ra nếu bạn bắt đầu bằng cách xóa một số ký tự.) Nó xảy ra ở các thời điểm khác nhau với các ô khác nhau.

Bummer!

Vì vậy, nếu bạn có thể mở rộng chiều rộng ô, có lẽ bạn có thể tránh được vấn đề. Nếu bạn không thể (như trong trường hợp của tôi), bạn bị mắc kẹt với định dạng thủ công. Như tôi đã nói, "Bummer!"


-1

Trên thực tế có một nhân vật phụ ở đó. Đó là nhân vật ẩn giấu ở cuối mỗi lĩnh vực. Khi văn bản có kích thước phù hợp, hàng thừa sẽ ở đó để giữ ký tự LF. Thay đổi kích thước chiều rộng cột như những người khác đã đề xuất sẽ giải quyết vấn đề của ô đó, nhưng nếu bảng tính của bạn có nhiều giá trị kích thước khác nhau trong cùng cột này, có thể việc sửa lỗi cho ô này sẽ khiến một ô khác trong cột gặp sự cố . Tôi đã học cách sống với nó hầu hết thời gian.


Chắc chắn không có ký tự LF ẩn ở cuối mỗi trường, trừ khi tất nhiên OP đã đặt nó ở đó với Alt + Enter. Câu hỏi thực sự là về trường hợp khi không có ký tự dòng mới, nhưng Excel vẫn không thể căn chỉnh các ô đúng cách.
Dmitry Grigoryev

-2

Điều làm việc cho tôi (Excel 2010), là xóa hàng trăm cột không sử dụng ở bên phải dữ liệu của tôi. Tôi chỉ có thể đoán rằng có một cái gì đó ở đó làm cho chiều cao hàng tự động bị sai.


4
Tôi có thể thấy điều đó sẽ giúp ích như thế nào, nhưng nó không tạo ra bất kỳ sự khác biệt nào cho trường hợp thử nghiệm được hiển thị trong câu hỏi của tôi.
devuxer

-2

chọn tất cả các ô và nhấp vào dòng phân tách các hàng hai lần ... nó sẽ tự động làm điều đó.

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.