如何利用excel汇总多张相同样式表格的数据?

本人在一个集团公司工作,下属有若干公司,常下发若干excel表格。表格的样式都一样,收回来的是全国各地上报的。除了在单元格内输入=B12+[安徽.xls]Sheet1!$B$12+[内蒙古.xls]Sheet1!$B$12+[上海.xls]Sheet1!$B$12……等简单的excel单元格相加方法外,还有没有别而办法。34-40加单位,在手动输入的时候可能会遗漏,假如有100家单位呢?难免+的时候会漏掉。求高手指点迷津,不胜感激。

假设:每个报表是关于三个城市的每季度的业务数字,如图,想要把这四张表格,汇总成一张表格。

    点击上图的“+”号,新建一个表格,重命名为“全年”。

    单击“数据”选项卡——“数据工具”组中的“合并计算”,弹出“合并计算”对话框。

    选中“首行”、“最左列”、“创建指向数据源的链接”三个复选框,单击“引用位置”右侧的按钮;单击第一季度的表,选中表格内容,返回。

    第一季度表已经被汇总。

    重复上述步骤,将第二、第三、第四季度的表汇总。
    技巧:如果表格名称规范、表哥范围固定,可以在“引用位置”里直接修改表名,然后单击“添加”。

    数据汇总完成。

    可以展开左侧的“+”号,查看每个项目包含的分表数据。

     

注意:上述“数据合并”,其实每个表不一定完全一样,比如有一个表多一列,有一个有很多行,只要指定的合并范围正确,都可以正确合并。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-07
弄个程序 收集 合并后再 用透视表或者 Sumif 汇总, 可以直接统计 有多少个单位 避免遗漏

多个Excel 档放到 一个文件夹内
新建一个Excel档----Alt+F11 视图--代码窗口,把如下代码复制进去,按F5运行即可(如复制进去没有换行,先复制到Word 再复制进去) , 注意 收集 sheet1 的, sheet1 A 列不能为空,因为以A 列的行数为准

Sub 遍历当前文件夹下工作薄()
t = Timer
Application.ScreenUpdating = False
ActiveSheet.Range("2:10000").ClearContents
Dim i, r, wk As Workbook, sh As Worksheet, rr
p = ThisWorkbook.Path & "\"
s = Dir(p & "*.xls*")
Do While s <> ""
If s <> ThisWorkbook.Name Then
Set wk = Workbooks.Open(p & s)
arr = wk.Sheets("sheet1").UsedRange
r = UBound(arr)
For i = 2 To r
Set sh = wk.Sheets("sheet1")
With ThisWorkbook.Worksheets("sheet1")
rr = ThisWorkbook.Worksheets("sheet1").[A65536].End(xlUp).Row + 1
For j = 1 To 20
Cells(rr, j).Value = sh.Cells(i, j)
Next j
End With
Next i
wk.Close
End If
s = Dir
Loop
t1 = Timer - t
MsgBox ("所有工作薄收集完成,用时" & t1 & "秒")
Application.ScreenUpdating = True
End Sub追问

同问,财务报表多行多列,这个公式能够汇总吗?

追答

For j = 1 To 20 ‘我这里设置的20列, 你可以自己改成 实际列输入
行数 是实际有多少行 就收集多少行
For i = 2 To r '从第二行开始收集, 如果开始不是第二行, 把 2修改为实际开始行数

追问

按F5提示“运行错误9,下表越界。”怎办呢?

追答

Set sh = wk.Sheets("sheet1")
arr = wk.Sheets("sheet1").UsedRange

表名称 默认为 sheet1 , 请修改为实际 名称

追问

还是下标越界,选择继续,出现1004错误。

追答

本回答被提问者采纳
第2个回答  2013-04-07
可以用vba完成.
下面的宏将选中的目录下所有文件的第一个工作表的b2单元格的值求和后放在当前文件第一个工作表的a1单元格.

Sub 数据汇总()
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
If .SelectedItems.Count = 0 Then Exit Sub
p = .SelectedItems(1) & "\"
End With
Application.ScreenUpdating = False
f = Dir(p & "*.xls")
With ThisWorkbook.Sheets(1)
Do While f <> ""
Set w = Workbooks.Open(p & f)
.Range("a1").Value = .Range("a1").Value + w.Sheets(1).Range("b2").Value
'可以仿照上句增加其它需要汇总的单元格.
w.Close False
f = Dir
Loop
End With
Application.ScreenUpdating = True
End Sub追问

可是我的表格是很多列的,比如财务报表汇总,怎么处理?

追答

.Range("a1").Value = .Range("a1").Value + w.Sheets(1).Range("b2").Value

.Range("a2").Value = .Range("a2").Value + w.Sheets(1).Range("b3").Value

.Range("a4").Value = .Range("a4").Value + w.Sheets(1).Range("b4").Value

'可以仿照上面语句增加其他需要汇总的单元格.

本回答被网友采纳
第3个回答  2013-04-07
用VF这个简单
相似回答