您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
一个表格下发至各部门填写,各部门的人员把顺序打乱了,如何把数据汇总到总表?
数据,工作,部门一个表格下发至各部门填写,各部门的人员把顺序打乱了,如何把数据汇总到总表?
发布时间:2016-12-08加入收藏来源:互联网点击:
问题补充: 有多个部门发来的表格,格式相同都相同,需汇总到一个表格中,因各部门仅填写自己部门数据。现需要把各部门的数据导入汇总表,而在导入某部门时仅导入他们的数据,因其他部门的数据未更新,所以不能覆盖其他部门的数据,请问最快的操作方法是怎样?或用什么函数嵌套?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
多个部门数据汇总问题,实际上是将多个工作簿数据汇总到一个表格上的问题,这个问题现在用Excel2016的新功能Power Query(Excel2010或Excel2013可到微软官方下载相应的插件)处理非常简单。因为格式相同,所以你完全不用考虑数据的顺序问题,也不需要考虑数据的覆盖问题。以多个工作簿数据为例,讲解具体方法如下:
一、直接将需要汇总的工作簿(各部门发上来的最新数据)放到同一个文件夹
二、从数据菜单选择新建查询-从文件-从文件夹,并选择需要汇总的数据所在的文件夹:
三、进入Power Query后,添加自定义列,用函数Excel.Workbook解析出所有工作簿的内容:
四、展开解析出来的数据(即得到每个工作簿的所有表,如果只需要其中的某个表,那可以在展开后进行筛选):
五、展开表中的具体数据
经过以上简单的几个步骤,你就得到了所有数据的汇总表,如下图所示:
后续按需要删掉一些不必要的列,并再进行整理即可。
同时,通过Power Query完成的操作,在后续数据有更新时,可以直接在结果表里一键刷新得到最新的内容:
更多Excel Power系列新功能文章配套材料下载
PQ入门20篇:https://pan.baidu.com/s/1ITXFJF0eokdC2zKVJvkrhQ
PQ进阶20篇:https://pan.baidu.com/s/1d1o_GfrmWFOp2tA8yhxe9A
PQ实战20篇:https://pan.baidu.com/s/1EiDJPk57XtdH1x4SGd2UnQ
M函数基础20篇:https://pan.baidu.com/s/1BWzQRI4dZPZacxP6LqRECQ
PQ动画30+:https://pan.baidu.com/s/19jUxwhbdXw24OtkFyWNlew
PP入门15篇:https://pan.baidu.com/s/1dZLjCRiQikYnyqLc-DWo_w
数据透视11篇:https://pan.baidu.com/s/112OmlCU_o_upI5B3pTt4fg
我是大海,微软认证Excel专家,企业签约Power BI顾问
让我们一起学习,共同进步!
【您的关注和转发铸就我前行的动力!谢谢支持!】
回答于 2019-09-11 08:43:50
谢谢邀请。
此问题,可能涉及到多个工作簿的数据处理,而且需要频繁地更新全部数据或指定某一个工作簿的数据。一般来说,用VBA处理效果理想。
1、新建一个xlsm格式的工作簿,用来汇总数据。
该工作簿有2个工作表,一个工作表用于存放汇总数据,一个工作簿用于操作。
2、各个部门都有一个工作簿,工作簿中的表格形式都是固定的,假设格式如下:
3、将数据和xlsm文件都放在同一个路径下。
4、操作的工作表,设置如下图:
使用数据有效性设置下拉菜单选择操作,如果是“全部”,则一次性更新所有部门的数据;
如果选择部门,则只更新该部门的数据。
5、参考代码如下:因只做过简单测试,若有错误,敬请指出。
关键的文字代码如下:
1、遍历所有工作簿提取数据:
Workbooks("汇总表.xlsm").Sheets("汇总").Range("a2:d66666").Clear '清空数据区域
Do Until sFName = ""
Set wb = Workbooks.Open(sPath & sFName) '依次遍历打开目标工作簿
r1 = wb.Sheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row '将数据放进数组
arr = wb.Sheets("sheet1").Range("a2:d" & r1).Value
For i = 1 To UBound(arr) '添加工作簿名称
arr(i, 4) = Split(sFName, ".")(0) '工作簿名称
Next
wb.Close False '关闭工作簿
With Workbooks("汇总表.xlsm").Sheets("汇总") '//导入数据操作
r = .Cells(Rows.Count, 1).End(xlUp).Row + 1 '最后行号+1
.Range("a" & r).Resize(UBound(arr), 4) = arr '复制,导入数据
End With
sFName = Dir '下一个工作簿
Loop
2、指定单个文件提取数据
On Error Resume Next '无论是否存在数据,一概删除原有旧数据,插入新的数据更新
Set wb = Workbooks.Open(sPath & s & ".xlsx") '打开工作簿,获取新数据
r1 = wb.Sheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row '将新数据放进数组
arr = wb.Sheets("sheet1").Range("a2:d" & r1).Value
For i = 1 To UBound(arr) '添加工作簿名称
arr(i, 4) = s
Next
wb.Close False '关闭工作簿
With Workbooks("汇总表.xlsm").Sheets("汇总")
r2 = .[d:d].Find(s).Row '确定是否存在数据
icol = Application.CountIf(.[d:d], s) '数据条数
.Range("a" & r2).Resize(icol, 4).EntireRow.Delete '删除旧数据
r = .Cells(Rows.Count, 1).End(xlUp).Row + 1 '最后行号+1
.Range("a" & r).Resize(UBound(arr), 4) = arr '复制,导入数据
End With
6、具体操作,如下图Gif演示:
7、文件下载链接如下:
链接: https://pan.baidu.com/s/1BWxjCZ9LDUvfDrNN_oN-lQ 密码: a3qz
此种方法仅供参考,如有建议,欢迎指导。
套路Excel
回答于 2019-09-11 08:43:50
建议呢,收集数据的时候使用表单大师,这样的话你在建好需要收集信息的字段,比如:姓名、手机等等,像图片这样的~ 建好后点击发布,把表单的链接或者二维码发布到群里,各部门的员工就可以通过链接或者二维码来填写信息,填写完提交后,你就可以在后台直接查看数据了,可以根据表单数据直接做报表,还可以将收集的数据导出Excel表格,通过表格直接汇总数据。这样是不是会方便些呢?比起传统的分发纸质表让员工填写数据——收回纸质表——再根据纸质表中的内容一个个登记到电脑表格中做汇总,还是使用表单大师方便快捷哦^_^
上一篇:28岁有房有车有存款,觉得工作压力太大,可以放弃现在工作吗?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |