- ?
合并一个EXCEL多个sheet的内容到一个汇总sheet
窦紫槐
展开
继上篇大猫为大家介绍了合并多个工作簿的VBA代码之后,这篇我们继续为大家介绍一个实用的技能。
将一个excel文档中的多个工作表进行合并为一个工作表
打开要合并的工作簿
按alt+F11进入VBA工程界面
新建一个模块
复制下面的代码,然后执行即可
作用结果是:
它会新建一个叫做“汇总”的工作表,然后把当前工作簿里的所有Sheet里有数据的内容都复制到“汇总”表里。提示:如果数据表里的内容没有表头的话需要把StartRow = 2改成StartRow = 1
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(what:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
Sub MergeSheets()
Dim sh As Worksheet
Dim DestSh As Worksheet
Dim Last As Long
Dim shLast As Long
Dim CopyRng As Range
Dim StartRow As Long
Application.ScreenUpdating = False
Application.EnableEvents = False
'新建一个“汇总”工作表
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets("汇总").Delete
Application.DisplayAlerts = True
Set DestSh = ActiveWorkbook.Worksheets.Add
DestSh.Name = "汇总"
'开始复制的行号,忽略表头,无表头请设置成1
StartRow = 2
For Each sh In ActiveWorkbook.Worksheets
If sh.Name <> DestSh.Name Then
Last = LastRow(DestSh)
shLast = LastRow(sh)
If shLast > 0 And shLast >= StartRow Then
Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
MsgBox "内容太多放不下啦!"
GoTo ExitSub
End If
CopyRng.Copy
With DestSh.Cells(Last + 1, "A")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
Next
ExitSub:
Application.GoTo DestSh.Cells(1)
DestSh.Columns.AutoFit
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
- ?
Excel | SUM、SUMIF+INDIRECT——求和项排序相同与不同的多工作表数据汇总
hjh_h
展开
问题情景
很多电商、工资等数据统计的时候都会遇到这样的问题:数据以不同的部门,或者不同的月份,也或不同的年份等情况分布在不同的工作表里,经常要求对分表根据相同数据项对数据进行汇总统计。
示例数据如下图:
共12月的数据,无需合并,直接汇总到“汇总”工作表“年销售业绩”列中。
注意:各分表的结构一致,姓名都在B列,求和的数据都在C列。
关键操作第一种情况:所有表“姓名”排序一致
这种求和方法很简单,只要在“汇总”表C2单元格输入公式“=SUM('*'!C2)”就可以了,回车以后,公式自动变成:=SUM('1月:12月'!C2)。
第二种情况:所有表“姓名”排序不一致
这种情况下求和稍有麻烦,我们一步一步分析:
第一步:
如果是仅对一个表,只需要Sumif函数直接求和即可,比如:
=SUMIF('1月'!$B$2:$B$37,汇总!B2,'1月'!$C$2:$C$37);
第二步:
现在是对12个表汇总,需借助INDIRECT函数生成对多个表区域的引用,即是:
INDIRECT(ROW($1:$12)&"月!$B$2:$B$37")--引用每个表的B列姓名数据区域
以及
INDIRECT(ROW($1:$12)&"月!$C$2:$C$37")--引用每个表的C列销量数据区域。
第三步:
写入Sumif函数,即是:
SUMIF(INDIRECT(ROW($1:$12)&"月!$B$2:$B$37"),汇总!B2,INDIRECT(ROW($1:$12)&"月!$c$2:$c$37"))
第四步:
INDIRECT函数引用的是一组数,数组求和,最后最外层加Sumproduct函数,即是:
=SUMPRODUCT(SUMIF(INDIRECT(ROW($1:$12)&"月!$B$2:$B$37"),汇总!B2,INDIRECT(ROW($1:$12)&"月!$c$2:$c$37")))。
结果如下:
另:
本例使用INDIRECT函数产生多维引用,其中:
使用ROW($1:$12)产生月份序号数组:
{1;2;3;4;5;6;7;8;9;10;11;12}
公式中的INDIRECT(ROW($1:$12)&"月!$B$2:$B$37")作为SUMIF函数的range参数,表示每个月销售记录表的$B$2:$B$37区域,共12个区域:
{"1月!$B$2:$B$37";"2月!$B$2:$B$37";"3月!$B$2:$B$37";"4月!$B$2:$B$37";"5月!$B$2:$B$37";"6月!$B$2:$B$37";"7月!$B$2:$B$37";"8月!$B$2:$B$37";"9月!$B$2:$B$37";"10月!$B$2:$B$37";"11月!$B$2:$B$37";"12月!$B$2:$B$37"}
同理,公式中的INDIRECT(ROW($1:$12)&"月!$c$2:$c$37")表示每个月销售记录表的$c$2:$c$37区域,作为SUMIF函数的sum_range参数。
- ?
EXCEL多个工作簿快速合并到一个工作表,一键搞定!
Su
展开
快到年底了,有小伙伴提出了如何快速将12个月的数据合并到一个工作表问题,比如将每个月不同销售员不同产品的销售数据汇总到一个工作表。今天我们就来分享一个快速将多个结构相同的工作簿数据汇总到一个工作表的方法,快速简单,一键搞定,提问的小伙伴速来围观!
一、如下数据源,我们需要将12个月的产品销售数据工作簿合并到一个工作表中。
二、效果展示
三、实现步骤
1、导入VBA模块:新建一个EXCEL汇总表,将sheet1更名为“汇总表”,删除其余的工作表,按ALT+F11 调出VBA 编辑器 →在工程窗口右击选择【导入文件】→选择VBA 模块文件(快速合并工作表和工作簿.bas)→关闭VBA 编辑器。导入后可以从【开发工具】→【宏】处看到“合并工作簿”和“合并工作表”两个宏。
2、制作一键"合并工作簿"和一键"合并工作表"按钮。插入矩形,输入文字“合并工作簿”并调整文字颜色大小和对齐方式等,然后复制一个矩形,并将文字改为“合并工作表”。选中文字为“合并工作簿”的矩形,右键→指定宏→选择宏“合并工作簿”,选中文字为“合并工作表”的矩形,右键→指定宏→选择宏“合并工作表”。
3、合并1至12月的12个工作簿数据到1个工作表。单击“合并工作簿”,首先选择需要合并的所有工作簿,点【打开】,将12个月的销售表合并到EXCEL汇总表。然后复制标题行到汇总表的第一行,再单击“合并工作表”,所有工作表即汇总到汇总表中了。
我是EXCEL学习微课堂,分享EXCEL学习的小技巧,小经验。如一键合并工作表如果分享的内容对您有用,欢迎点赞、收藏、评论、转发,更多的EXCEL技能,可以关注“EXCEL学习微课堂”。 需要一键快速合并多个工作簿到工作表原文件和VBA代码的,请评论转发后私信联系我或留下您的邮箱!
- ?
Excel超高效汇总表格,看这篇就够了
支冬易
展开
excel使用技巧大全如何汇总多个excel表格这是很多朋友都非常困扰的一个问题,今天我们来介绍一下不用公式如何来轻松的完成。
如下图所示,在一个工作簿中有4个城市的销量表,我们现在要将这4个表用数据表来汇总起来。
方法如下:1、按alt+d键,松开后按d键。这时就会打开数据透视表和数据透视图向导,第1步选取“多重合并计算数据区域”,请看下图。
2、点击“自定义页字段”
3、添加区域和设置字段数目和名称。
4、添加要合并的所有表格,并且依次的给所有表设置名称和字段数目。
5、点击完成后就会生成数据透视表,将页字段名字从“页1”改成“城市”,“行”改成“产品”。
没更改前:
更改后为:
设置ok!
下面我们就能够通过字段位置的调整来完成模式不同的汇总。
以城市+产品汇总
以产品+城市汇总
数据透视表只是可以完成一些比较简单的表格的合并,但一些行数列数比较多比较复杂,格式又不一致的表格就要用到SQL语句来合并了。在之后的课堂上我们会讲到这个的,谢谢。
- ?
不同条件下工作表多表汇总数据方法,你真的值得一看
段诗桃
展开
我们平时都碰到过对各类的数据进行汇总,那么接下来小编将为你讲解在各种情况下,如何对多个工作表的数据进行汇总。
▼场景1:当分工作表首行首列条件、及位置都统一时候
将1月-3月人员销售额,汇总到汇总表中(如下图):
操作方法:
1、在你要汇总的表格当中,点击数据—合并计算;
2、引用位置分别引用1月至3月你要汇总的数据区域并进行添加;
3、将标签位置选择首行和左列对齐。
▼场景2:当分工作表首行首列条件固定时
将1月-3月每个月每人各种商品编码进行销售额进行求和,操作效果如下:
因为分工作表中相似的每行每列固定的都是一个人的数据,所以可以用通配符*,来对所有工作表求和。公式为:sum('*'!B2)
▼场景3:当分工作表首行首列条件不固定,位置会有不同的时候
如下图中分工作表人员可能会有不一致的情况下:
操作方法同场景1,演示如下:
以上就是各种条件下如何对多工作表数据进行汇总,快试一下吧。
另外在合并计算当中除了数据求和,还有其他包括:平均、计算、最大最小值等数据运算,是不是很方便呀~
- ?
一键篇 | Excel一键实现所有工作表的内容合并到一个新的工作表
真理
展开
Excel作为一个具有强大的数据处理的办公软件,对于白领一族来说,使用频率应该较高。在处理数据过程中,您是否碰到过清单之类汇总的情况,就是将同一个工作簿中的所有工作表的内容合并到一个工作表中。对于不会取巧的朋友,可能就是一个表一个表的复制,然后粘贴拼凑在一块,若碰到表格数量不多的情况,这种方法还好,若是碰到工作表数量庞大,例如50个工作表,100个工作表......这种方法就很鸡肋。今天本篇以Excel2013为例,教大家如何一键实现所有工作表合并到新工作表中,同样适用于Excel其他版本,碰到细微差异,可以适当调整代码。
教程将内容分成三部分:第一部分是新建一个汇总的工作表,并重新自定义命名;第二部分是逐一将各个工作表复制粘贴到汇总工作表中;第三部分为提示,即当合并工作完成后弹出提示。具体操作如下:
打开工作簿,在工作表标签中会显示包含的工作表名称,教程以下图中三个工作表为例,分别是Sheet1,Sheet2,Sheet3.按下组合键Alt+F11即可从Excel工作界面切换到VBA界面,在VBA窗口单击菜单栏中的插入,找到模块命令,单击该命令即可创建一个新的模块窗口,在模块窗口复制粘贴以下代码:
Sub Comb()
Dim i%
On Error Resume Next
Sheets(1).Select
Worksheets.Add '新建一个工作表
Sheets(1).Name = "汇总工作表" '对新建工作表重命名
For i = 2 To Sheets.Count 'For循环,遍历所有工作表
Sheets(i).Activate '激活工作表
Range("a1").Select
Selection.CurrentRegion.Select '选择活动工作表数据区域
Selection.Copy Destination:=Sheets(1).Range("a65536").End(xlUp).Offset(1) '粘贴到汇总工作中
Next
MsgBox ("工作表已全部合并到指定工作表中!") '弹窗提示合并完成
End Sub
- ?
Excel办公应用:多个表中的数据汇总到一个表中
飘灵儿
展开
在工作中,我们经常需要把多个表中的数据汇总到一个表中。
这必须考虑以下三种情况:
情况一:多个表在同一工作簿中,表的结构相似,表头内容顺序一致。
解决方案:使用函数公式完成
具体方法,如下动图演示:
重点:在“总销售额”表单中的"B2"单元格中,输入公式【=SUM(华北区:华南区!B2)】
情况二:多个表在同一工作簿中,表的结构相似,表头内容顺序不一致。
解决方案:使用【数据】-【合并计算】完成
情况三:多个表不在同一工作簿中,表的结构和表头内容可随意。
解决方案:使用VBA代码完成
具体方法,如下代码:
Sub CombineWbs()
Dim bt As Range, r As Long, c As Long
r = 1
c = 7
Dim wt As Worksheet
Set wt = ThisWorkbook.Worksheets(1)
wt.Rows(r + 1 & ":1048576").ClearContents
Application.ScreenUpdating = False
Dim FileName As String, sht As Worksheet, wb As Workbook, WbN As String
Dim Erow As Long, fn As String, arr As Variant, Num As Long
FileName = Dir(ThisWorkbook.Path & "*.xlsx")
Num = 0
Do While FileName <>""
If FileName <> ThisWorkbook.Name Then
Erow = wt.Range("A1").CurrentRegion.Rows.Count + 1
fn = ThisWorkbook.Path & "" & FileName
Set wb = GetObject(fn)
Set sht = wb.Worksheets(1)
Num = Num + 1
arr = sht.Range(sht.Cells(r + 1, "A"), sht.Cells(1048576, "B").End(xlUp).Offset(0, 7))
wt.Cells(Erow, "A").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
WbN = WbN & Chr(13) & wb.Name
wb.Close False
End If
FileName = Dir
Loop
Application.ScreenUpdating = True
MsgBox "共合并了" & Num & "个工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"
End Sub
温馨提醒(针对情况三):
把以上代码,复制到Thisworkbook代码窗口中(即:按【Alt+F11】组合键,打开VBE编辑环境),然后点击【运行】命令,就可以快速实现上述功能了;
需要合并的工作簿和存储汇总数据的活动工作簿,二者需要在同一文件夹下;
本案例,假定工作表总列数为7。需要更改列数时,只需更改代码中对应的参数设置。
点击【运行】命令后,会弹出如下对话框(仅举例说明):
最后,点击【OK】,即可。
鸣谢:谢谢大家的阅读!有问题,欢迎提问!!
- ?
如何将Excel表格里几张表格数据汇总到一张上面?
吧吧炉
展开
1.工作簿中有多张工作表,A列和B列都有类似的数据,行数不同。
2.选中“汇总”表A1单元格,点击【数据】-【合并计算】。
3.左上角选择适当的运算方式,本例为“求和”。如下图所示点击选择按钮选择数据。
4.选中第一张工作表数据,并点击【添加】按钮。
5.顺序将其他工作表数据也添加进来。
6.由于原始数据第一行是标题,并且要以A列数据分类汇总,所以选中下面两个选项。
7.确定后就在“汇总”表生成了每个人的“数量”汇总求和数据。
8.如果勾选【创建指向源数据的链接】则最终返回链接数据并汇总。
9.完成汇总效果如下。
10.点击每个人旁边的加号就可以看到汇总数据是从哪张工作表的哪个单元格引用过来的。
(本文内容由百度知道网友茗童贡献)
- ?
Excel VBA:汇总多个工作簿每个工作表名称包含指定关键词的数据
谷梦
展开
今天再分享下汇总指定文件夹下每个工作簿中工作表名称包含某个指定关键词的小代码(当不指定关键词时,则默认汇总所有工作表数据)。
举个栗子。假设有一文件夹,内有十几个工作簿,每个工作簿又各有多个不等数量的工作表,现在我们只想汇总每个工作簿中工作表名称包含“看见星光”的数据,那就可以使用我们今天分享的小代码了。
如果是想把所有工作表的数据一股脑全部汇总呢?不管它什么“看见星光”还是“看见月光”的——也可以使用今天的代码,程序运行中弹出的输入关键词对话框什么都不填直接确定就可以了。
小贴士:
1、(重复说明)如果需要汇总所有工作表的数据,关键词对话框什么都不填直接确定就可以了、另外关键词不区分字母大小写。
2、如果需要汇总的工作表含有多个不同的关键词……也是可以的,由于代码汇总后的数据后增加一个“来源工作表”的字段,表亲们可以先把所有工作表的数据汇总,然后根据“来源工作表”字段对数据明细进行筛选删除操作。
代码如下:
Sub Collectwks()
Dim Sht As Worksheet, rng As Range, Sh As Worksheet
Dim Trow&, k&, arr, brr, i&, j&, book&, a&
Dim p$, f$, Headr, Keystr
'
With Application.FileDialog(msoFileDialogFolderPicker)
'取得用户选择的文件夹路径
.AllowMultiSelect = False
If .Show Then p = .SelectedItems(1) Else Exit Sub
End With
If Right(p, 1) <> "\" Then p = p & "\"
'
Keystr = InputBox("请输入需要合并的工作表所包含的关键词:", "提醒")
If StrPtr(Keystr) = 0 Then Exit Sub
'如果点击了inputbox的取消或者关闭按钮,则退出程序
Trow = Val(InputBox("请输入标题的行数", "提醒"))
If Trow < 0 Then MsgBox "标题行数不能为负数。", 64, "警告": Exit Sub
Set Sht = ActiveSheet
Application.ScreenUpdating = False '关闭屏幕更新
Cells.ClearContents
Cells.NumberFormat = "@"
'清空当前表数据并设置为文本格式
ReDim brr(1 To 200000, 1 To 2)
'定义装汇总结果的数组brr,最大行数为20万行,2列是临时的
'
f = Dir(p & "*.xls*") '开始遍历工作簿
Do While f <>""
If f <> ThisWorkbook.Name Then '避免同名文件重复打开出错
With GetObject(p & f)
'以'只读'形式读取文件时,使用getobject方法会比workbooks.open稍快
For Each Sh In .Worksheets '遍历表
If InStr(1, Sh.Name, Keystr, vbTextCompare) Then
'如果表中包含关键词则进行汇总(不区分关键词字母大小写)
Set rng = Sh.UsedRange
If rng.Count > 1 Then
'如果rng的单元格数量大于1……
book = book + 1 '标记一下是否首个Sheet,如果首个sheet,BOOK=1
a = IIf(book = 1, 1, Trow + 1) '遍历读取arr数组时是否扣掉标题行
arr = rng.Value '数据区域读入数组arr
If UBound(arr, 2) + 2 > UBound(brr, 2) Then
'动态调整结果数组brr的最大列数,避免明细表列数不一的情况。
ReDim Preserve brr(1 To 200000, 1 To UBound(arr, 2) + 2)
End If
For i = a To UBound(arr) '遍历行
k = k + 1 '累加记录条数
brr(k, 1) = f '数组第一列放工作簿名称
brr(k, 2) = Sh.Name '数组第二列放工作表名称
For j = 1 To UBound(arr, 2) '遍历列
brr(k, j + 2) = arr(i, j)
Next
Next
End If
End If
Next
.Close False '关闭工作簿
End With
End If
f = Dir '下一个表格
Loop
If k > 0 Then
Sht.Select
[a1].Offset(IIf(Trow = 0, 1, 0)).Resize(k, UBound(brr, 2)) = brr '放数据区域
[a1].Resize(1, 2) = [{"来源工作簿名称","来源工作表名"}]
MsgBox "汇总完成。"
End If
Application.ScreenUpdating = True '恢复屏幕更新
End Sub
- ?
Excel多工作表数据汇总到一个工作表,其实很简单
Rock
展开
我们有时候需要将在多个工作表的数据到同一个工作表当中,首先我们需要确认的是这些数据的格式是否具有一致性,如果所有的数据格式都是一样的,那么这个问题就非常好处理了。今天和大家分享的是一键汇总各分表数据到总表。
照例举个栗子,如下图,一个工作簿,包含多个工作表的格式都是相同,现在需要将各个分表的数据汇总到总表中,如果是你,你会怎么去做?
数据分别在不同的工作表中,每个工作表的数据格式都是一致的。
也许你会想到使用数据透视表或者合并计算等方式进行操作。但是你会发现这两种操作方式都有它的不足或者扩展性不强。比如说,当标题行或列是多行(多列)或者存在合并单元格时,也就无能无力了。
我和你说的是VBA代码来实现这个,有时候就是那么一瞬间的错过,你就不会再遇到啦!
我们首先看看,下面的动画教程:
PS:是将分表的数据汇总明细到当前活动的工作表,因此在使用时务必先在需要汇总的表中执行。
附上VBA源代码
以上就是今天要和大家分享的技巧,希望对大家有所帮助,祝各位一天好心情!
唯有不断学习,才能不被淘汰!
Excel中每一个方法都有特定的用途,不是他们没有用处,只是你不了解或者暂时用不着,建议你收藏起来,万一哪天用着呢?
excel工作簿数据汇总
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并