excel将某列内容相同的相邻单元格合并

#新建宏执行下列代码,是合并B列的

Sub test()

Dim Rng As Range, Dic As Object, Arr, N&

Set Dic = CreateObject("scripting.dictionary")  '创建字典项目

'循环a1所在列要处理的数据区 For Each Rng In Range("a1", Range("a1").End(xlDown))

For Each Rng In Range("a1", Range("a1").End(xlToRight))  '循环a1所在行要处理的数据区
    If Rng <> "" Then  '如果单元格不为空,则
        If Dic.exists(Rng.Value) Then  '如果已存在该单元格内容对应的字典项目,则将当前单元格与已存在内容进行组合
            Set Dic(Rng.Value) = Union(Dic(Rng.Value), Rng)
        Else  '否则进行添加
            Set Dic(Rng.Value) = Rng
        End If
    End If
Next Rng
If Dic.Count > 0 Then  '如果字典项目数大于0,则
    Arr = Dic.keys  '将字典的key赋值给数组
    Application.DisplayAlerts = False  '关闭警告信息(合并单元格时会弹出警告信息,通过此命令禁止弹出该信息)
    For N = LBound(Arr) To UBound(Arr)  '循环数组各项(即字典的keys集)
        For Each Rng In Dic(Arr(N)).Areas  '循环字典中对应项的item项所存储的单元格区域的各个区域范围
            If Rng.Cells.Count > 1 Then Rng.Merge  '如果范围中不止一个单元格,则该范围进行合并
        Next Rng
    Next N
    Application.DisplayAlerts = True  '打开警告作息
End If
Set Dic = Nothing  '清空字典项目

End Sub


#补充资料

End 属性
参阅应用于示例特性返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+ 向上键、End+ 向下键、End+ 向左键或 End+ 向右键。Range 对象,只读。

expression.End(Direction)
expression      必需。 该表达式返回“应用于”列表中的对象之一。

Direction      XlDirection 类型,必需。所要移动的方向。
XlDirection 可为 XlDirection 常量之一。
xlDown
xlToRight
xlToLeft
xlUp

示例
本示例选定包含单元格 B4 的区域中 B 列顶端的单元格。
Range("B4").End(xlUp).Select
               
本示例选定包含单元格 B4 的区域中第 4 行尾端的单元格。
Range("B4").End(xlToRight).Select
               
本示例将选定区域从单元格 B4 延伸至第四行最后一个包含数据的单元格。
Worksheets("Sheet1").Activate
Range("B4", Range("B4").End(xlToRight)).Select

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值