1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Excel按列合并相同相邻单元格和拆分单元格

Excel按列合并相同相邻单元格和拆分单元格

时间:2023-06-04 10:08:33

相关推荐

Excel按列合并相同相邻单元格和拆分单元格

目录

1.使用vba的方式

1.1合并相同相邻单元格

1.2拆分单元格

2.使用分类汇总+定位ctrl+G的手工方法

1.使用vba的方式

1.1合并相同相邻单元格

代码如下:

Sub RngMergeCondition() '批量合并单元格Dim rngUser As RangeDim rngMerge As RangeDim rngSelect As RangeDim i As Long, j As LongDim lngRowFirst As LongDim lngClnFirst As LongDim arr As VariantDim brr As VariantDim strTemp As StringDim lngBK As LongDim shtUser As WorksheetOn Error Resume NextSet rngSelect = SelectionSet rngUser = Application.InputBox("请选择需要合并的单元格区域!", Default:=rngSelect.Address, Type:=8)Set rngUser = Intersect(rngUser.Parent.UsedRange, rngUser)'使用Intersect规避用户选择整列数据If rngUser Is Nothing Then MsgBox "选择的单元格区域不能为空白": Exit Subarr = rngUser.ValueReDim brr(1 To UBound(arr), 1 To 2)'结果数组,第一列保存值,第二列保存合并行数For i = 1 To UBound(arr)strTemp = ""For j = 1 To UBound(arr, 2)strTemp = strTemp & "@@" & arr(i, j)'合并多列字符串为单个字符串Nextbrr(i, 1) = strTemp'字符串装入结果数组If i > 1 Then'如果不是第一行If brr(i - 1, 1) = strTemp ThenIf lngBK = 0 Then lngBK = i - 1'lngBK变量赋值结果数组用于存放合并行数的位置brr(lngBK, 2) = brr(lngBK, 2) + 1'累计相同值的行数ElselngBK = iEnd IfEnd IfNextApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalselngRowFirst = rngUser.Row'用户选择单元格区域的开始行lngClnFirst = rngUser.Column'用户选择单元格区域的开始列Set shtUser = rngUser.ParentFor i = 1 To UBound(brr)If brr(i, 2) > 0 ThenFor j = 1 To UBound(arr, 2)Set rngMerge = shtUser.Cells(i + lngRowFirst - 1, lngClnFirst + j - 1)rngMerge.Resize(brr(i, 2) + 1, 1).MergeNextEnd IfNextApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueEnd Sub

1.2拆分单元格

代码如下:

Sub unMergeRng() '撤销合并单元格Dim rngUser As RangeDim rngMerge As RangeDim lngRowFirst As LongDim lngRowEnd As LongDim lngClnFirst As LongDim lngColEnd As LongDim lngRowMerge As LongDim i As LongDim j As LongDim rngSelect As RangeOn Error Resume NextSet rngSelect = Selection'用户初始选择的单元格Set rngUser = Application.InputBox("请选择需要撤销合并的单元格区域!", Default:=rngSelect.Address, Type:=8)'用户选择需要撤销合并的单元格区域Set rngUser = Intersect(rngUser.Parent.UsedRange, rngUser)'Intersect避免用户选择整列等单元格范围时,程序运算数据虚大,运算效率低下If rngUser Is Nothing Then MsgBox "选择的单元格区域不能为空白": Exit SublngRowFirst = rngUser.Row'运算范围的初始行lngRowEnd = lngRowFirst + rngUser.Rows.Count - 1'运算范围的结束行lngClnFirst = rngUser.Column'运算范围的开始列lngColEnd = lngClnFirst + rngUser.Columns.Count - 1'运算范围的结束列Application.ScreenUpdating = FalseFor i = lngRowFirst To lngRowEnd'遍历行For j = lngClnFirst To lngColEnd'遍历列lngRowMerge = Cells(i, j).MergeArea.Rows.Count'合并单元格的行数If lngRowMerge > 1 ThenWith Cells(i, j).Resize(lngRowMerge, 1).Select.UnMerge'撤销合并.Value = Cells(i, j)'填充数据End WithEnd IfNexti = i + lngRowMerge - 1'跳过已处理完的合并行NextrngSelect.SelectApplication.ScreenUpdating = TrueEnd Sub

拆分前:

拆分后:

以上摘自

/tags/Ntzakg4sNDMxMjUtYmxvZwO0O0OO0O0O.html

2.使用分类汇总+定位ctrl+G的手工方法

前提条件是向下有相同的单元格 如果向下是空的单元格需要先搞成相同单元格:

然后复制粘贴A列为值,然后就可以用一下的分类汇总了

以下摘自百度

百度安全验证/s?id=1716740632111022951&wfr=spider&for=pc

这个方法是小编知道最早流传的经典操作技巧之一,我们先选中需要合并单元格字段列的单元格区域,在数据选项卡中的分级显示找到分类汇总,选择后会弹出一个提示,我们确定后会按照部门列字段进行分类汇总,接着对左边多出来的汇总列区域选中,按快捷键Ctrl+G或者F5定位空值,然后在开始选项卡中将定位的空单元格合并。

继续选中D列部门字段单元格区域,再次打开分类汇总对话框,然后点击全部删除,把多余的C列删除。这样操作下来,部门字段中相同内容的单元格就全部被合并了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。