打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
跟烟花入门VBA之69:单元格对象Range(十三)

 查看所有烟花系列VBA教程,点击左下角“原文链接”

Calculate 方法

RowDifferences 方法
 返回一个 Range 对象,该对象表示每行中与比较单元格内容不同的所有单元格。
 语法:RowDifferences(Comparison)
 Comparison 必选,用于与指定区域进行比较的单个单元格。
 这个方法等同于与定位条件中的“行内容差异单元格”。
 使用上与
ColumnDifferences差别不大,一个是列差异,一个是行差异。

Consolidate 方法

 将多个工作表中多个区域的数据合并计算至单个工作表上的单个区域。
 语法:Consolidate(Sources, Function, TopRow,LeftColumn, CreateLinks)
  Sources 可选 ,以文本引用字符串数组的形式给出合并计算的源。
   
该数组采用 R1C1样式表示法,这些引用必须包含将要合并计算的工作表的完整路径
  
Function 可选,XlConsolidationFunction 常量之一,用于指定合并计算的类型。
  
TopRow 可选,如果为 True,则基于合并计算区域中首行内的列标题对数据进行合并。
    
如果为 False,则按位置进行合并计算,默认值为 False
  
LeftColumn 可选,如果为 True 则基于合并计算区域中左列内的行标题对数据进行合并计算。
    如果为
False,则按位置进行合并计算。默认值为 False
  
CreateLinks 可选,如果为 True,则让合并计算使用工作表链接。
    如果为
False,则让合并计算复制数据。默认值为 False
 很明显,Consolidate方法就是在技巧中使用的合并计算
示例:
 Dim sht As Worksheet
 Dim str As String
 Dim arr
 For Each sht In Worksheets
     If sht.Name Like '#月' Then
         '对工作表名称过滤,只有 X月 这类名字的才处理,X代表1位数字
         str = str & ''' & sht.Name & ''!' & sht.UsedRange.Address(ReferenceStyle:=xlR1C1) & Chr(10)
         '返回的地址以R1C1样式表示,
     End If
 Next
 '这里应用代码来生成数组,如果要合并的工作表比较多,推荐用代码,这样方便,也能避免写错。
 If Len(str) Then
     str = Left(str, Len(str) - 1)
     '去掉字符串结尾的CHR(10)字符,避免生成数组后,最后一个元素为空
 Else
     Exit Sub
 End If

 arr = Split(str, Chr(10))
 '字符串转换成数组

 With Worksheets.Add(after:=Worksheets(Worksheets.Count))
     .Range('a1').Consolidate arr, xlSum, True, True
     '求和,列标题,行标题,不建立连接
     .Cells(Rows.Count, 2).End(xlUp).Offset(2, -1).Consolidate arr, xlSum, True, False
     '求和,列标题,无行标题,不建立连接
     .Cells(Rows.Count, 2).End(xlUp).Offset(2, -1).Consolidate arr, xlSum, False, True
     '求和,无列标题,行标题,不建立链接
     .Cells(1, Columns.Count).End(xlToLeft).Offset(, 2).Consolidate arr, xlCount, True, True, True
     '求和,列标题,行标题,建立链接
 End With

 1月数据截图:
  


 2月数据截图:
  


 3月数据截图:
  


 效果图:
  

 计算工作表指定区域中的单元格

 返回值:Variant

说明:

 在之前讲过的工作簿对象,工作表对象时,也有Calculate方法。

 所有打开的工作簿 Application.Calculate(或只是 Calculate

 指定工作表 Worksheets(1).Calculate

 指定区域 Worksheets(1).Rows(2).Calculate

 单独计算工作表中指定区域中的单元格时,不会触发工作表或工作簿对象的Calculate事件。


ColumnDifferences 方法

 返回一个 Range 对象,该对象表示每列中所有与比较单元格内容不同的单元格。

 Comparison 必选,用于对指定区域进行比较的单个单元格,该单元格必须位于调用该方法的单元格区域中。

 这个方法等同于与定位条件中的“列内容差异单元格”。

 Comparison参数也就相当于比较区域中的活动单元格。

 示例:


  On Error Resume Next
  Dim rg1 As Range
  Dim rg2 As Range
  Dim rg3 As Range
  Dim rg4 As Range
  With Range('a1:a12')
   Set rg1 = .ColumnDifferences(.Cells(1))
   Set rg2 = .ColumnDifferences(.Cells(2))
   Set rg3 = .ColumnDifferences(.Cells(3))
   MsgBox rg1.Address & vbCr & rg2.Address & vbCr & rg3.Address
   '这里是为了演示,没有判断对象变量引用为空的情况。
   Set rg4 = .Offset(, 1).ColumnDifferences(.Cells(1, 2))
   If Not rg4 Is Nothing Then
    MsgBox rg4.Address
   Else
    MsgBox '源单元格内容完全相同'
   End If
  End With

 数据截图如下:
  

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
取得工作表名称、单元格赋值个工作表名称
Excel
VBA|使用Range对象02:获取单元格信息
VBA利用数组优化代码运行效率
巧用Excel VBA进行考试成绩登分录入
《神奇的VBA》编程:批量拆分单元格数据
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服