ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11823|回复: 13

[分享] 合并计算多个工作表的数据(Consolidate)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-1-2 10:17 | 显示全部楼层 |阅读模式
声明: 本帖内容来源于EH论坛 编著的《EXCEL 2007 VBA实战技巧精粹》技巧94

分享原因:
1、本人不会这个方法,之前基本上用字典处理
2、论坛内对此类的汇总需求不少

Option Explicit
SubConsolidateSheets()
   Dim Arr(1 To 3)  As String, i AsInteger
   Dim rng As Range
   For i = 1 To 3
      Arr(i) = Sheets(i).Name & "!"& _
          Sheets(i).Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1)
   Next
   Set rng = Sheets("汇总表").Range("A1")
    With rng
       .Consolidate Sources:=Arr, Function:=xlSum, _
                    TopRow:=True,LeftColumn:=True
       .Value = "业务员"’ Consolidate同时基于行列汇总,将忽略左上角的内容
   End With
   Sheets(1).Range("A1").Copy
   With rng
       .Resize(1, .CurrentRegion.Columns.Count) _
       .PasteSpecial xlPasteFormats
   End With
   Sheets(1).Range("A2").Copy
   With rng.CurrentRegion
       .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count) _
       .PasteSpecial xlPasteFormats
   End With
   Application.CutCopyMode = False
   rng.Select
   Set rng = Nothing
EndSub

以下是本人增加的解释说明:
Range.Consolidate(Sources, Function,TopRow, LeftColumn, CreateLinks)
名称
必选/可选
数据类型
描述
Sources
可选
Variant
以文本引用字符串数组的形式给出合并计算的源,该数组采用 R1C1-样式表示法。这些引用必须包含将要合并计算的工作表的完整路径。
Function
可选
Variant
XlConsolidationFunction 常量之一,用于指定合并计算的类型。
TopRow
可选
Variant
如果为  True,则基于合并计算区域中首行内的列标题对数据进行合并。如果为 False,则按位置进行合并计算。默认值为 False
LeftColumn
可选
Variant
如果为  True 则基于合并计算区域中左列内的行标题对数据进行合并计算。如果为 False,则按位置进行合并计算。默认值为 False
CreateLinks
可选
Variant
如果为  True,则让合并计算使用工作表链接。如果为 False,则让合并计算复制数据。默认值为 False
XlConsolidationFunction 参数说明
名称
描述
xlAverage
-4106
平均。
xlCount
-4112
计数。
xlCountNums
-4113
只计数数值。
xlMax
-4136
最大值。
xlMin
-4139
最小值。
xlProduct
-4149
乘。
xlStDev
-4155
基于样本的标准偏差。
xlStDevP
-4156
基于全体数据的标准偏差。
xlSum
-4157
总计。
xlUnknown
1000
未指定任何分类汇总函数。
xlVar
-4164
基于样本的方差。
xlVarP
-4165
基于全体数据的方差。
Range.Address(RowAbsolute, ColumnAbsolute,ReferenceStyle, External, RelativeTo)
名称
必选/可选
数据类型
描述
RowAbsolute
可选
Variant
如果为  True,则以绝对引用返回引用的行部分。默认值为 True
ColumnAbsolute
可选
Variant
如果为  True,则以绝对引用返回引用的列部分。默认值为 True
ReferenceStyle
可选
引用样式。默认值为  xlA1
External
可选
Variant
如果为  True,则返回外部引用。如果为  False,则返回本地引用。默认值为  False
RelativeTo
可选
Variant
如果  RowAbsoluteColumnAbsoluteFalse,并且 ReferenceStylexlR1C1,则必须包括相对引用的起始点。此参数是定义起始点的 Range 对象。
XlReferenceStyle 参数说明
名称
描述
xlA1
1
默认值。使用 xlA1 返回 A1 样式的引用。
xlR1C1
-4150
使用 xlR1C1 返回 R1C1 样式的引用。

技巧94 合并计算多个工作表的数据.zip

127 KB, 下载次数: 736

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-1-2 10:51 | 显示全部楼层
谢谢分享,收藏了,不错的帖子

TA的精华主题

TA的得分主题

发表于 2016-1-2 10:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢分享                     

TA的精华主题

TA的得分主题

发表于 2016-1-3 00:06 | 显示全部楼层
用函数做的分享,第一列姓名排列顺序要一致,表格可以无限制添加,但位置稍注意下。
公式.png
结果.png

技巧94 合并计算多个工作表的数据.rar

14.77 KB, 下载次数: 79

TA的精华主题

TA的得分主题

发表于 2016-5-31 16:01 | 显示全部楼层
楼主你好,我看的是VBA实战技巧2010那本书,里边的技巧90讲的consolidate函数。
里边的第三行在定义需要进行合并的数据区域arr的时候是将所有的sheet的名字都列出来了,这样使用很不方便,想请教下您这个有办法解决么,不然我每次更新数据源都可能需要更新代码中的这个范围。
盼复,谢谢!
附:代码如下:
Sub consolidatedemo()
    Dim arr As Variant
    arr = Array("Report!R1C1:R40C90", "Report (2)!R1C1:R40C90", "Report (3)!R1C1:R40C90")
    With Worksheets("Sheet1").Range("A1")
        .Consolidate sources:=arr, Function:=xlSum, toprow:=True, leftcolumn:=True
        .Value = "行别"
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-5-31 16:30 | 显示全部楼层
pigyoung 发表于 2016-5-31 16:01
楼主你好,我看的是VBA实战技巧2010那本书,里边的技巧90讲的consolidate函数。
里边的第三行在定义需要进 ...

可以同过代码遍历反馈每张表的表名吧?

TA的精华主题

TA的得分主题

发表于 2016-6-22 11:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-11-13 19:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-11-24 14:39 | 显示全部楼层

收藏学习………………………………

TA的精华主题

TA的得分主题

发表于 2018-12-26 21:44 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 12:44 , Processed in 0.048947 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表