Excel VBA中单元格的合并与拆分

对于合并单元格这里提供”从上到下“和“从下到上”合并单元格两种方式,”从上到下“的方法需要记录当前列有多少个相同的单元格和判断相应的单元格是否是合并单元格,过程相对来说繁琐一些,“从下到上”的方法则相对简单一些 ,代码量相对来说也比较少。
1.”从上到下“的方法

Sub 从上到下合并单元格()
'
Dim i, l, m As Integer
'禁止弹出提示的对话框
Application.DisplayAlerts = False

k% = InputBox("请输入合并单元格所在的列")

'*****************在1995-2006年,excel工作簿包含65536行,但现在的office 2007中工作簿包含1048576行,
'*****************从A列最后一行向上找,找到有数据的行为止
 l = [A65536].End(xlUp).Row      'l记录当前表格的最后一行的行数
 
 For i = 1 To l
  
'判断该单元格是否是合并单元格

If Cells(i, k).MergeCells = True Then    
     If Cells(i - m, k) = Cells(i + 1, k) Then     
      m = m + 1                               'M代表一个有多少个相同的单元格   
    Else  
         m = 0
    End If
Else
         m = 0
      If Cells(i, k) = Cells(i + 1, k) Then  
        m = m + 1
      End If
End If 
  Range(Cells(i, k), Cells(i + m, k)).Merge
 Next
 Application.DisplayAlerts = True
 End Sub

2.”从下到上“的方法

Sub 从下到上合并单元格()
Dim i, l As Integer
'禁止弹出提示的对话框
Application.DisplayAlerts = False

k% = InputBox("请输入合并单元格所在的列")
'*****************在1995-2006年,excel工作簿包含65536行,但现在的office 2007中工作簿包含1048576行,
'*****************从A列最后一行向上找,找到有数据的行为止
 l = [A65536].End(xlUp).Row      'l记录当前表格的最后一行的行数
 
 For i = l To 2 Step -1
     If Cells(i, k) = Cells(i - 1, k) Then
      Range(Cells(i, k), Cells(i - 1, k)).Merge
    End If
 Next
  Application.DisplayAlerts = True  
End Sub
  1. 单元格的拆分
    当单元格进行合并之后就是如何进行拆分,拆分和合并原理大致相似,就是先判断是否是合并单元格,然后获取合并单元格的数目,进行拆分和填充。相应代码如下:
Sub 拆分单元格()

Dim i, l, m As Integer

'禁止弹出提示的对话框
Application.DisplayAlerts = False

k% = InputBox("请输入拆分单元格所在的列")
'*****************在1995-2006年,excel工作簿包含65536行,但现在的office 2007中工作簿包含1048576行,
'*****************从A列最后一行向上找,找到有数据的行为止
 l = [A65536].End(xlUp).Row      'l记录当前表格的最后一行的行数
 For i = 1 To l
      '判断该单元格是否是合并单元格
       If Cells(i, k).MergeCells = True Then
          m = Cells(i, k).MergeArea.Count                           '记录合并单元格的个数
          Range(Cells(i, k), Cells(i + m - 1, k)).UnMerge      ‘拆分单元格
          Range(Cells(i, k), Cells(i + m - 1, k)).FillDown       ’填充单元格
          i = i + m - 1   
      End If    
 Next
  Application.DisplayAlerts = True
End Sub

`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值