【Excel VBA】如何批量合并相同值單元格?
天下大勢合久必分,、分久必合,、分分合合合合分分又合合合再分分分又又合合合合合合合………… 今天我們分享的小代碼就是如何批量撤銷合并單元格…… 端上動(dòng)畫示意圖: 代碼如下: Sub unMergeRng() '撤銷合并單元格 Dim rngUser As Range Dim rngMerge As Range Dim lngRowFirst As Long Dim lngRowEnd As Long Dim lngClnFirst As Long Dim lngColEnd As Long Dim lngRowMerge As Long Dim i As Long Dim j As Long Dim rngSelect As Range On Error Resume Next Set rngSelect = Selection '用戶初始選擇的單元格 Set rngUser = Application.InputBox('請選擇需要撤銷合并的單元格區(qū)域,!', Default:=rngSelect.Address, Type:=8) '用戶選擇需要撤銷合并的單元格區(qū)域 Set rngUser = Intersect(rngUser.Parent.UsedRange, rngUser) 'Intersect避免用戶選擇整列等單元格范圍時(shí),,程序運(yùn)算數(shù)據(jù)虛大,運(yùn)算效率低下 If rngUser Is Nothing Then MsgBox '選擇的單元格區(qū)域不能為空白': Exit Sub lngRowFirst = rngUser.Row '運(yùn)算范圍的初始行 lngRowEnd = lngRowFirst + rngUser.Rows.Count - 1 '運(yùn)算范圍的結(jié)束行 lngClnFirst = rngUser.Column '運(yùn)算范圍的開始列 lngColEnd = lngClnFirst + rngUser.Columns.Count - 1 '運(yùn)算范圍的結(jié)束列 Application.ScreenUpdating = False For i = lngRowFirst To lngRowEnd '遍歷行 For j = lngClnFirst To lngColEnd '遍歷列 lngRowMerge = Cells(i, j).MergeArea.Rows.Count '合并單元格的行數(shù) If lngRowMerge > 1 Then With Cells(i, j).Resize(lngRowMerge, 1) .Select .UnMerge '撤銷合并 .Value = Cells(i, j) '填充數(shù)據(jù) End With End If Next i = i + lngRowMerge - 1 '跳過已處理完的合并行 Next rngSelect.Select Application.ScreenUpdating = True End Sub
專業(yè)的職場技能充電站
|