【Excel】一行一行地调整行高太麻烦了。。。

常在Excel走,哪有不调行高?

如果是碰到这种情况:

【Excel】一行一行地调整行高太麻烦了。。。_第1张图片

处女座的你是否会关掉、删了它?

    其他星座呢?嘴上笑嘻嘻,心里MMP地也要忍痛把格式调好...

【Excel】一行一行地调整行高太麻烦了。。。_第2张图片

接下来就教大家怎么简单又快速地调整行高吧。

1、自动调整行高

Excel的单元格有“自动调整行高”和“自动调整列宽”的模式,方法就是把鼠标放在需要调整的单元列(行)边上,当鼠标变成【十】时,双击,就可以了。

【Excel】一行一行地调整行高太麻烦了。。。_第3张图片
【Excel】一行一行地调整行高太麻烦了。。。_第4张图片

2、批量调整

上面的方法只适用于不含【合并单元格】的表格,如果表格中包含了【合并单元格】,则无法通过【自动调整】来实现

【Excel】一行一行地调整行高太麻烦了。。。_第5张图片

如上图那样,根本【自动】不了。。。

所以还是只能用【宏】了,代码如下:

 Sub My_MergeCell_AutoHeight()

 Dim rh As Single, mw As Single

 Dim rng As Range, rrng As Range, n1%, n2%

 Dim aw As Single, rh1 As Single

 Dim m$, n$, k

 Dim ir1, ir2, ic1, ic2

 Dim mySheet As Worksheet

 Dim selectedA As Range

 Dim wrkSheet As Worksheet

Application.ScreenUpdating = False

 Set mySheet = ActiveSheet

 On Error Resume Next

Err.Number = 0

 Set selectedA = Application.Intersect(ActiveWindow.RangeSelection, mySheet.UsedRange) '返回重叠range

        selectedA.Activate

 If Err.Number <> 0 Then

g = MsgBox("请先选择需要'最合适行高'的行!", vbInformation)

 Return

 End If

        selectedA.EntireRow.AutoFit

 Set wrkSheet = ActiveWorkbook.Worksheets.Add '创建个临时sheet来折腾

 For Each rrng In selectedA

 If rrng.Address <> rrng.MergeArea.Address Then '找出合并单元格

 If rrng.Address = rrng.MergeArea.Item(1).Address Then '合并单元格第一格与地址对应

                    'If (Application.Intersect(selectedA, rrng).Address <> rrng.Address) Then

 '    GoTo gotoNext

 'End If

 Dim tempCell As Range

 Dim width As Double

 Dim tempcol

width = 0

 For Each tempcol In rrng.MergeArea.Columns

width = width + tempcol.ColumnWidth

 Next

                    wrkSheet.Columns(1).WrapText = True

                    wrkSheet.Columns(1).ColumnWidth = width

                    wrkSheet.Columns(1).Font.Size = rrng.Font.Size

                    wrkSheet.Cells(1, 1).Value = rrng.Value

                    wrkSheet.Activate

 'wrkSheet.Cells(1, 1).RowHeight = 0

                    wrkSheet.Cells(1, 1).EntireRow.Activate

                    wrkSheet.Cells(1, 1).EntireRow.AutoFit

                    mySheet.Activate

                    rrng.Activate

 If (rrng.RowHeight < wrkSheet.Cells(1, 1).RowHeight) Then

 Dim tempHeight As Double

 Dim tempCount As Integer

 Dim addHeightRow

tempHeight = wrkSheet.Cells(1, 1).RowHeight + 10 '自动调整后行高+10

tempCount = rrng.MergeArea.Rows.Count '多行合并单元格的行数


 For Each addHeightRow In rrng.MergeArea.Rows '选区中每个row赋值

 If (addHeightRow.RowHeight < tempHeight / tempCount) Then

addHeightRow.RowHeight = tempHeight / tempCount

 End If

tempHeight = tempHeight - addHeightRow.RowHeight

tempCount = tempCount - 1

                        Next


 End If

 End If

 Else

 If rrng.WrapText = True Then '非合并单元格、自动换行

rrng.RowHeight = rrng.RowHeight + 3 '非合并行+3,以适应打印

 End If

 End If

 Next

Application.DisplayAlerts = False '删除工作表警告提示

        wrkSheet.Delete

Application.DisplayAlerts = True

Application.ScreenUpdating = True

 End Sub

效果如下:

【Excel】一行一行地调整行高太麻烦了。。。_第6张图片

3、添加到按钮功能

①新建一个空白文档:

【Excel】一行一行地调整行高太麻烦了。。。_第7张图片

②复制上面的宏,粘贴:

【Excel】一行一行地调整行高太麻烦了。。。_第8张图片

③保存成【Excel97-2003加载宏(*.xla)】

【Excel】一行一行地调整行高太麻烦了。。。_第9张图片

这时它的路径会自动变成【C:\Users\Administrator\AppData\Roaming\Microsoft\AddIns】

然后改个容易辨识的名字:

【Excel】一行一行地调整行高太麻烦了。。。_第10张图片

保存。

④在【加载项】里找到它

Excel2007~2016:【开始】-【Excel选项】-【加载项】-【转到】

【Excel】一行一行地调整行高太麻烦了。。。_第11张图片
【Excel】一行一行地调整行高太麻烦了。。。_第12张图片
【Excel】一行一行地调整行高太麻烦了。。。_第13张图片

Excel2013~2016:还可以【开发工具】-【Excel加载项】

【Excel】一行一行地调整行高太麻烦了。。。_第14张图片
【Excel】一行一行地调整行高太麻烦了。。。_第15张图片

⑤添加自定义按钮

【Excel】一行一行地调整行高太麻烦了。。。_第16张图片
【Excel】一行一行地调整行高太麻烦了。。。_第17张图片
【Excel】一行一行地调整行高太麻烦了。。。_第18张图片

以后打开其他表格都会有这个按钮了


文件已经上传网盘,下载后直接放在:

C:\Users\Administrator\AppData\Roaming\Microsoft\AddIns

然后在Excel选择【加载项】即可找到它


关注公众号,在后台回复Excel行高即可获取上述的.xla文档

微信搜索公众号@圣创杂学堂,即可获取每天更新

【Excel】一行一行地调整行高太麻烦了。。。_第19张图片

原创不易,转载请保留出处。

你可能感兴趣的:(【Excel】一行一行地调整行高太麻烦了。。。)