Bagaimana cara membuat fitur "Auto Fit Row Height" Excel benar-benar sesuai dengan tinggi baris?

88

Untuk setiap generasi Excel yang saya ingat (termasuk 2010, yang saya gunakan sekarang), fitur "Auto Size Row" Excel terkadang gagal untuk benar-benar secara otomatis mengukur baris ketika sel berisi teks yang dibungkus. Ketika berfungsi dengan baik, semua teks terungkap dan tidak ada ruang tambahan di bawah baris teks terakhir. Ketika gagal, itu menambah ruang ekstra di bawah teks. Lebih buruk lagi, apa yang Anda lihat tidak selalu seperti yang Anda dapatkan, yaitu, teks yang muncul dengan baik di layar akan terpotong ketika dicetak. Anda juga mendapatkan ukuran yang berbeda tergantung pada apakah Anda memperbesar / memperkecil atau pada ukuran sebenarnya.

Test case sederhana:

Mengapa ada selisih satu baris setelah teks di sel A1 tetapi tidak di A2?

(Untuk mereproduksi: atur lebar kolom A ke 17,14 (125 piksel), bungkus teks, dan atas penyelarasan sel.)

(Saya memeriksa ulang apakah saya menerapkan Tinggi Baris Fit Otomatis pada kedua baris. Tingkat pembesaran 100%.)

Auto Fit gagal untuk baris pertama, berhasil untuk baris kedua

Apakah ada obat yang dikenal untuk ini tanpa menggunakan penyesuaian ketinggian baris secara manual (yang tidak praktis untuk lebih dari beberapa baris)?

penjahat
sumber
Jika ada yang ingin mereproduksi contoh dalam pertanyaan saya, lebar kolom A adalah 17,15 (125 piksel).
devuxer
1
Bug tampaknya tergantung pada font dan ukuran font
Raystafarian
1
@Raystafarian, sepertinya tidak berfungsi dengan Teks Bungkus dihidupkan.
devuxer
1
Saya mencoba autofitting kolom, yang memperlebar satu kolom, dan kemudian autofitting baris. Itu membuatnya turun dari 73 menjadi 64 halaman tetapi masih banyak baris kosong di bagian bawah sebagian besar baris. Saya memiliki baris atas selaras. Mengubah ukuran baris secara manual membuatnya tampak OK ketika saya sedang mengerjakan dokumen, tetapi tidak dalam pratinjau atau dicetak.
1
Ya, sangat menyebalkan! Juga lihat ini setidaknya di Excel 2007. Jangan ingat pernah melihatnya di Excel 2003.
abstrask

Jawaban:

105

Metode yang baru saja saya temukan (sedikit memperluas posting sebelumnya):

  • Pilih seluruh lembar.
  • Ubah ukuran kolom sedikit lebih lebar (karena seluruh lembar dipilih, semua kolom akan menjadi lebih luas)
  • Klik dua kali pemisah baris - tinggi baris akan dipasang secara otomatis
  • Klik dua kali pemisah kolom - lebar kolom akan dipasang secara otomatis

Voila!

Nick Carrington
sumber
2
Ini sepertinya berhasil. Satu area abu-abu adalah tempat Anda mengatakan "sedikit lebih lebar". Salah satu contoh yang saya coba tidak berhasil kecuali saya meregangkan kolom dalam jumlah yang wajar, tetapi akhirnya saya berhasil. Terima kasih!
devuxer
5
Saya memilih seluruh lembar kemudian mengklik dua kali pemisah baris antara dua baris acak dan seluruh dokumen menyesuaikan kembali ketinggian baris.
Keith Sirmons
6
Perhatikan bahwa AutoFit tidak berfungsi untuk sel yang digabungkan: support.microsoft.com/kb/212010
freb
Tidakkah metode ini hanya berfungsi jika semua kolom memiliki lebar yang sama? Ketika saya mengubah ukuran kolom sedikit lebih lebar, semua kolom lainnya menjadi lebar yang sama (di Excel 2010).
Ed Greaves
Tunggu sebentar — metode ini memiliki efek samping meningkatkan lebar semua kolom dalam lembaran, bukan?
Ant_222
13

WYSIWYG Excel bukan yang terbaik. Dalam gambar Anda, 'kucing.' baru saja menyelinap ke baris 5. Jika Anda mengurangi persentase zoom menjadi kurang dari 100% (misalnya 99%.) Maka 'cat.' sekarang dibungkus ke garis ke-6. Saya pikir Excel sedang mencoba menyesuaikan secara otomatis dengan cara yang akan memastikan semuanya hampir selalu terlihat terlepas dari tingkat zoom Anda.

Itu bukan satu-satunya masalah yang Anda miliki dengan AutoFit. Selain itu, cara sel yang dibungkus kata dicetak tidak akan selalu cocok dengan yang Anda lihat di layar. Ambil contoh Anda dan ubah font ke Courier sambil meninggalkan ukuran 11.

Ubah font menjadi Kurir

Seperti yang Anda lihat, sel A1 tampaknya diberi 1,5 garis ekstra. Sekarang lihat pratinjau cetak, 'cat.' sepenuhnya tersembunyi.

cetak pratinjau dari file yang sama

Dalam pengalaman saya, Excel memiliki masalah dengan font dan ukuran font tertentu lebih dari yang lain. Kurir lebih buruk daripada Kurir Baru , ukuran 11 umumnya lebih buruk dari 10 atau 12. (Mengapa mereka memilih ukuran 11 sebagai default baru, saya tidak tahu.)

mischab1
sumber
Jadi ... pada dasarnya mereka memecahkannya. Penjelasan Anda masuk akal, tapi itu benar-benar menggangguku, seperti ini: - /
abstrask
3

Saya baru saja menulis makro kecil untuk tujuan itu. Saya menetapkannya sebagai tombol pintas (Ctrl-Shift-J) dan berfungsi seperti pesona bagi saya.

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

Untuk membuat ini tersedia secara permanen, Anda dapat dengan mudah membuat add-in pemuatan secara otomatis:

  • buat modul di buku kerja kosong baru dan tempel kode,
  • tetapkan itu tombol pintas yang Anda inginkan,
  • kemudian Save As,, Add-inke folder %appdata%\Microsoft\Excel\XLSTART
    Dengan cara ini akan dimuat tanpa terlihat setiap kali Anda memulai Excel.
Patrick Honorez
sumber
Atau Anda bisa melakukan ini: Private Sub Worksheet_Change (ByVal Target As Range) ArrangeTable End Sub
kurdtpage
0

Dalam beberapa kasus, masalah ruang ekstra di beberapa baris setelah menjalankan "Ketinggian Baris AutoFit" mungkin kolom tersembunyi telah membungkus teks dalam baris tersebut.

Bobo
sumber
Yang tidak demikian dalam pertanyaan ini.
Dmitry Grigoryev
0

Ada artikel kb tentang ini yang "menyarankan" (ini jarang dapat diterima, dalam mode Microsoft klasik) bahwa jika Anda pernah menetapkan tinggi baris, autofitting tinggi otomatis secara otomatis hilang untuk baris lembar kerja itu. Baris yang tingginya belum Anda sentuh akan menghasilkan autofit dengan baik.

Meskipun Anda dapat mengatur ulang lebar kolom dengan pengaturan "lebar standar" pada tahun 2003 (yang dirancang orang gila 2007: ubah menjadi "lebar default"), tetapi mereka lupa (lagi) (dan lagi) untuk meletakkannya di baris. Jadi keabadian tampaknya tidak terhindarkan. Itu berarti, jika Anda memiliki tinggi standar 15, dan Anda membuat lembar dan mengatur semua ketinggian ke 12, Anda hanya kehilangan autofitting otomatis.

GatesIsAntichrist
sumber
1
Saya tidak dapat menduplikasi perilaku ini. Segera setelah saya melakukan "Auto Fit Row Height", setiap pengaturan ketinggian manual untuk baris itu segera diganti dengan ketinggian auto-fit. Masalahnya hanyalah ketinggian auto-fit yang sering salah.
devuxer
Saya BISA menduplikasi perilaku ini. Ini persis seperti itu bekerja untuk saya.
Peter Nore
0

Terkadang ada metode nuklir untuk memperbaiki autoproblem yang bermasalah.

Yang saya lakukan adalah menyalin teks dari setiap sel dan menempelkan data dalam Notepad, lalu hapus barisnya. Kemudian saya segera menyalin dan menyisipkan baris yang kosong tetapi memiliki format dan perilaku yang sama dengan baris yang telah dihapus. (Anda harus menyalin dan menyisipkan seluruh baris dengan menggunakan tombol baris kiri.)

Setelah selesai, Anda harus kembali dan memasukkan teks dari notepad ke setiap sel. (Gunakan F2atau aktifkan mode edit masing-masing sel sebelum memasukkan teks.) Ini menyakitkan, jadi ini adalah pilihan terakhir, terutama untuk lembar kerja lebar yang sangat lebar.

Ini adalah satu-satunya solusi kadang-kadang, karena masalahnya ada di dalam program itu sendiri.

Paul
sumber
1
salin teks dari setiap sel - ini tampaknya membutuhkan pekerjaan sebanyak format manual.
Dmitry Grigoryev
0

Saya belum benar-benar menguji ini tetapi sudah bekerja untuk saya. Pada dasarnya itu akan secara otomatis menyesuaikan semua lembar kemudian kembali melalui dan mengatur lebar kolom ke lebar aslinya, kecuali jika diperpanjang oleh penyesuaian otomatis. Saya hanya punya 10 kolom dan tidak pernah lebih dari 1000 baris jadi sesuaikan kodenya sesuai kebutuhan.

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
Dan Williams
sumber
Bagaimana cara mengatasi bug Autofitting? Anda secara otomatis menyesuaikan baris, lalu membuat kolom otomatis, dan kemudian memilih ulang lebar kolom asli. Mengapa berakhir dengan ketinggian baris pas yang benar? By the way, totalWidthmenganggur.
Ant_222
Ini tidak sepenuhnya bekerja untuk saya, karena Anda mengembalikan lebar hanya dari kolom-kolom yang telah menjadi lebih sempit. Algoritme Anda karena itu tidak mempertahankan lebar kolom.
Ant_222
-1

Mengutip Dunc :

Saya telah memecahkan masalah serupa dengan:

  1. Memilih seluruh spreadsheet.

  2. Mengklik dua kali garis di margin di antara dua baris.

Khususnya untuk mengatasi masalah Anda tentang garis tambahan itu, saya akan berasumsi bahwa ada karakter di sana. Ini mungkin bukan karakter yang terlihat, tetapi pasti ada sesuatu di sana.

wizlog
sumber
3
Langkah-langkah Anda tidak berbeda dengan apa yang sudah saya coba (mengklik dua kali di antara baris hanyalah pintasan untuk "Ketinggian Baris Sesuai Otomatis"). Adapun teori Anda bahwa ada karakter tambahan, Anda mungkin benar, tetapi saya tentu saja tidak mengetik satu, dan saya tidak akan tahu bagaimana cara menghilangkannya. Saya mengundang Anda untuk mencoba mengetik teks persis seperti yang saya miliki di ilustrasi saya ke Excel dan melihat apakah Anda mendapatkan hasil yang sama.
devuxer
1
Tidak ada karakter di sana pada saya.
Raystafarian
-1

Saya tidak meluangkan waktu untuk membaca komentar lainnya. Mengapa garis di bagian bawah blok pertama dan bukan di blok kedua?

Itu karena teks berakhir terlalu dekat dengan tepi kanan sel. Jika Anda menyesuaikan kolom menjadi sedikit lebih lebar dan klik dua kali di antara baris itu akan mengubah ukurannya.

Renier Wessels
sumber
4
Saya tidak ragu Anda benar, tetapi itu bukan "otomatis" lagi, ini manual.
devuxer
-1

Saya juga telah mengalami bug kecil tapi sangat mengganggu ini selama bertahun-tahun. Saya tidak punya solusi selain mengutak-atik lebar baris untuk sel dengan sebagian besar teks di dalamnya, dan akhirnya program akan mengalah dan menunjukkan teks dengan benar.

Andrew Buchanan
sumber
mengotak-atik lebar baris bukanlah solusi yang dapat direproduksi.
Dmitry Grigoryev
-1

Ada solusi mudah:

1) Pilih semua baris yang Anda ingin autoformat (jika itu adalah blok besar klik pada yang pertama dan kemudian tekan Shift + End dan Shift + Down)

2) Klik kanan pada pilihan, Format Cells, Alignment tab, hapus centang Wrap text.

Semoga ini membantu ;)

Pedro
sumber
1
Jika Anda hapus centang Wrap text, tidak ada gunanya menyesuaikan ketinggian baris Anda lagi, karena semua baris akan berukuran sama.
Dmitry Grigoryev
Saya sudah terganggu dengan masalah ini selama bertahun-tahun. Toggling Wrap Text untuk baris bermasalah mengembalikan fungsi autofit.
Mitch
-1

Saya memiliki Excel 2010. Saya menemukan bahwa masalah ini terjadi pada saya ketika pengaturan Zoom saya tidak 100%. Selama saya di 100%, saya tidak mendapatkan teks terpotong dengan AutoFit untuk kolom dan baris

Kevin Morin
sumber
3
Dalam contoh yang saya gunakan untuk pertanyaan saya, saya berada di zoom = 100% sepanjang waktu. Masalahnya terjadi terlepas.
devuxer
-1

Hipotesis saya adalah bahwa Excel diikat ketika harus memperpanjang terlalu banyak baris. Saya memiliki pengalaman serupa dengan yang di atas. Ini terlihat seperti ada tambahan NL / CR / LF di akhir tapi aku tahu tidak ada. Jika saya membangun sel beberapa karakter sekaligus, itu memformat otomatis OK sampai ukuran tertentu tercapai, kemudian menempatkannya di baris tambahan. (Perilaku serupa secara terbalik terjadi jika Anda mulai dengan menghapus beberapa karakter.) Itu terjadi pada waktu yang berbeda dengan sel yang berbeda.

Kekecewaan!

Jadi, jika Anda dapat memperluas lebar sel, Anda mungkin bisa menghindari masalah. Jika Anda tidak dapat (seperti dalam kasus saya), Anda terjebak dengan pemformatan manual. Seperti yang saya katakan, "Nyebelin!"

GeoffH
sumber
-1

Sebenarnya ada karakter tambahan di sana. Ini adalah karakter LF tersembunyi yang ada di akhir setiap bidang. Ketika teks berukuran tepat, baris tambahan ada untuk menahan karakter LF. Mengubah ukuran lebar kolom seperti yang disarankan orang lain akan menyelesaikan masalah sel itu, tetapi jika spreadsheet Anda memiliki banyak nilai ukuran yang bervariasi di kolom yang sama, ada kemungkinan bahwa perbaikan Anda untuk sel ini akan menyebabkan sel lain di kolom memiliki masalah. . Saya telah belajar untuk hidup dengannya hampir sepanjang waktu.

phipywr
sumber
Jelas tidak ada karakter LF tersembunyi di akhir setiap bidang, kecuali tentu saja OP telah meletakkannya di sana dengan Alt + Enter. Pertanyaannya benar-benar tentang kasus ketika tidak ada karakter baris baru, tetapi Excel masih gagal untuk menyelaraskan sel dengan benar.
Dmitry Grigoryev
-2

Apa yang berhasil untuk saya (Excel 2010), adalah menghapus sekitar seratus kolom yang tidak digunakan di sebelah kanan data saya. Saya hanya bisa menebak bahwa ada sesuatu di sana yang menyebabkan tinggi baris otomatis bertingkah buruk.

Runk
sumber
4
Saya dapat melihat bagaimana itu akan membantu, tetapi tidak ada bedanya untuk test case yang ditunjukkan dalam pertanyaan saya.
devuxer
-2

pilih semua sel, dan klik pada baris yang memisahkan baris dua kali ... secara otomatis akan melakukannya.

paul
sumber