Mac 2016版及Windows版Excel文本换行+自动行高时单元格底部多余空白的消除方法咨询
我太懂你这种被Excel自动行高坑到的无奈了——明明开了文本换行,用自动行高功能却每个单元格底部都留着多余空白,行数越多空白越大,打印出来的效果比屏幕上还夸张,手动一行行调行高又巨费时间!你试过换字体、取消换行调列宽再开自动行高、改视图比例,甚至跨Mac和Windows系统都没用,确实够头疼的。
给你几个我亲测有效的解决思路,你可以挨个试试:
检查单元格的段落格式:这是最容易被忽略的点!选中所有有问题的单元格,右键选择「设置单元格格式」→ 切换到「对齐」选项卡,找到「文本控制」区域,点击旁边的「段落」按钮(部分版本在对齐选项卡的扩展菜单里),把段落的段后间距直接改成0,同时把行间距设为「单倍行距」。很多时候默认的段落格式会带着隐形的段后空白,自动行高计算时会把这个也算进去。
清除旧格式后重新设置:全选整个表格,点击「开始」选项卡的「清除」按钮,选择「清除格式」,把所有残留的旧格式清掉,然后再重新开启文本换行,设置自动行高。有时候格式冲突会导致Excel的行高计算逻辑出错,清掉重来反而能解决问题。
用VBA批量修正(适合大表格):如果表格行数特别多,手动调根本不现实,可以试试这个小代码。按
Alt+F11打开VBA编辑器,插入一个新模块,粘贴下面这段代码:Sub FixAutoFitRowHeight() Dim targetRange As Range Set targetRange = ActiveSheet.UsedRange ' 先确保文本换行开启 targetRange.WrapText = True ' 执行自动行高 targetRange.Rows.AutoFit ' 批量微调行高,消除多余空白 Dim singleRow As Range For Each singleRow In targetRange.Rows ' 可根据字体大小微调这个数值,比如0.3、0.5 singleRow.RowHeight = singleRow.RowHeight - 0.5 Next singleRow End Sub运行之后就能批量处理,要是还是有空白,就把代码里的
0.5改成更小或更大的数值,直到行高完全贴合文本。排查隐藏的非打印字符:有时候单元格末尾不小心多按了软换行(Alt+Enter)、空格,甚至是一些看不见的非打印字符,也会让自动行高多算高度。你可以用「查找和替换」功能,查找内容输入
^l(匹配软换行)或者(空格),替换为空,清理掉这些多余字符后再试自动行高。
备注:内容来源于stack exchange,提问作者Lars Dagson




