Excel精英培训网

 找回密码
 注册

QQ登录

只需一步,快速开始

你正在寻找更好的Excel学习教程吗?Excel技巧80集+数据透视表+函数初中高全套+VBA80集,想学的这儿全都有
查看: 224|回复: 12
打印 上一主题 下一主题

[已解决] 将分公司报表合并汇总在一张表上

[复制链接]
跳转到指定楼层
1楼
发表于 2020-3-31 10:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
     我公司下属有20个分公司,每月分公司都会出具一套报表,现需要将其中的6张报表(附件中用红色标注表页)简单求和汇总在汇总空白表上或自动生成一张汇总表。所有分公司表格严格规定故所有表格大小数据位置完全一致,不会出现串行错列情况。只要简单求和即可。

求助各位大侠,谢谢

汇总.zip

762.21 KB, 下载次数: 6

分享到:  QQ好友和群QQ好友和群
收藏收藏1
来自 2#
发表于 2020-3-31 11:26 | 只看该作者
我帮你写了一个,我对财务的情况比较熟,所以相对难度就比较。
1、先看下面的截图:
     1)插入一个参数表,定义连续汇总区域的相关参数,注意一个连续区域就要定义一行;
          同一个表可以定义多个连续区域,因为财务表很多时候其汇总区域并不只有一个,比如资产负债表,资产部分为一个区域,负债和所有者权益部分为另一个,这两个区域因为不相连,所以需要定义为2行参数。有多少个这样的连续区域就分别定义几行;
     2)参数内容比较简单,看下截图大致能懂,我还是略微解释重要的地方:
          工作表名称:这个名称必须与需要汇总的工作表名称完全相同,不是简写,代码需要根据这个名称检索需要汇总的明细表;
          后面还有4个参数,都是关于汇总区域4个坐标位置的,很好理解;
     3)我只是示范性的添加了汇总表、资产负债表、利润表的汇总参数,剩下的你自己根据需要在后面接着增减;

2、本代码会检索本目录下的所有文件:
    1)空白汇总表也需要放在这个目录下,代码不会去检索识别空白汇总表与明细表的目录差异;
    2)与汇总无关的其他类型文件不能放在这个专用目录里,这会导致不属于excel类型的文件用excel方式打不开;

如有其他问题可以在提问;


1.png (26.37 KB, 下载次数: 1)

1.png

汇总表.rar

62.75 KB, 下载次数: 12

评分

参与人数 1学分 +2 收起 理由
zjdh + 2 学习

查看全部评分

回复

使用道具 举报

3楼
 楼主| 发表于 2020-3-31 15:44 | 只看该作者
hfwufanhf2006 发表于 2020-3-31 11:26
我帮你写了一个,我对财务的情况比较熟,所以相对难度就比较。
1、先看下面的截图:
     1)插入一个 ...

我对宏不懂,我试了一下,报错说找不到"$汇总空白表.xlsm",如附件图片,请问除了你这个宏文件外,我是不是还要这个文件夹中放一个汇总空白表,前面的$要不要,文件名后缀是否加m,汇总的数据出现在你这个宏文件中,还是另一个汇总空白表中,我试了几下,都是同样报错,请教了

1.png (21.59 KB, 下载次数: 1)

1.png
回复

使用道具 举报

4楼
发表于 2020-3-31 16:23 | 只看该作者
lujianwkx 发表于 2020-3-31 15:44
我对宏不懂,我试了一下,报错说找不到"$汇总空白表.xlsm",如附件图片,请问除了你这个宏文件外,我是不 ...

1、不清楚你的excel版本,只要是2007及以上版本,带宏的excel都是.xlsm类型,不带宏的excel是.xlsx类型,只有很早以前的老版本97-2003版才是.xls类型,这些早期版本目前基本没人用了。如果版本没问题,就不应该有什么错误,宏是封装在excel文件中的,并不需要额外的其他文件支持;2、excel要运行宏,需要在设置中“启用宏”,设置“选项-信任中心-宏安全性-启用宏”,设置完成后关闭excel,然后再打开excel设置才会生效。不同版本菜单的位置可能不一样,你要找一下。这个设置是永久的,只要不再修改设置,下次运行就会一直保持启用宏的状态;
3、需要说明一下,在设置宏中系统可能会提示风险,宏就是编程代码,是有出问题风险可能性的,你既然来问当然是愿意承担风险的。其实系统说的风险是指的恶意病毒,因为excel宏代码是能够制造病毒程序的。但你不要担心,这个宏是我写的,我还没那个写病毒代码的能力,用vba的基本都是初学者之类的小菜鸟,距离能写病毒相差十万八千里,反正我还没见过有人用vba写出病毒来;
4、最后,再给你上传一份转换成97-2003格式版本的文件,要是这个也用不了,我就真没办法了;

提醒:压缩文件解压缩后,只能把excel文件放在目录中,压缩文件要移走。前面已经说过了,非excel文件用excel的打开方式是会出错的;

97-2003格式-汇总空白表.rar

34.32 KB, 下载次数: 3

回复

使用道具 举报

5楼
 楼主| 发表于 2020-3-31 16:44 | 只看该作者
hfwufanhf2006 发表于 2020-3-31 16:23
1、不清楚你的excel版本,只要是2007及以上版本,带宏的excel都是.xlsm类型,不带宏的excel是.xlsx类型, ...

十分感谢你耐心的解答,我用的是2010版本,宏也全启用了,其他宏都可以用,所有应该不是版本问题。只有点击宏按钮或逐语句测试时,这个语句 Set wb = Workbooks.Open(s)报错,我把文件打包上传一下,你可否在你电脑试一下,看要如何调整,还是我的操作不对

汇总.zip

790.31 KB, 下载次数: 7

回复

使用道具 举报

6楼
发表于 2020-3-31 17:16 | 只看该作者
本帖最后由 hfwufanhf2006 于 2020-3-31 17:17 编辑
lujianwkx 发表于 2020-3-31 16:44
十分感谢你耐心的解答,我用的是2010版本,宏也全启用了,其他宏都可以用,所有应该不是版本问题。只有点 ...

我知道问题出在哪里了,我先简要答复一下,如果你搞不定,我明天再来上传文件;

1、前面你提到的错误,是因为我之前是用你的源文件测试的,一切弄好后,我保存为.xlsm文件;
2、保存的文件名称不变,文件类型变为xlsm,这两种类型的文件在实际运行时有差异,其中xlsm会动态生存一个"~$"开始的临时文件,这个临时文件会导致文件过滤失效,以至于重复打开了自己,所以出错;“~$空白文件汇总表.xlsm”与“空白文件汇总表.xlsm”其实是一个东西,前者是后者的临时备份,关闭文件后系统会删除这个备份;
3、如果你能打开代码,只要修改一个地方:文件过滤的那一行:
    把:
    If mySubFile.Name<>thisworkbook.name Then            '原来的过滤方法是把“空白文件汇总表.xlsm”这个自己排除掉
    改成:
     If InStr(mySubFile.Name, "汇总空白表.xlsm") = 0 Then   '因为会动态生存临时文件,所以排除的方法修改成不包含“汇总空白表.xlsm”
     下面一行
        Set wb = Workbooks.Open(s)
      就能正确运行了;


回复

使用道具 举报

7楼
 楼主| 发表于 2020-3-31 18:46 | 只看该作者
hfwufanhf2006 发表于 2020-3-31 17:16
我知道问题出在哪里了,我先简要答复一下,如果你搞不定,我明天再来上传文件;

1、前面你提到的错误 ...

谢谢,非常感谢,我刚试过了,可以了,但实际报表可以会有些不同,等3号出报表时候我试试,如果有新问题到时还需要向你请教,谢谢
回复

使用道具 举报

8楼
 楼主| 发表于 2020-4-2 11:05 | 只看该作者
hfwufanhf2006 发表于 2020-3-31 17:16
我知道问题出在哪里了,我先简要答复一下,如果你搞不定,我明天再来上传文件;

1、前面你提到的错误 ...

你好,我今天试了一下,报错如图,请问一下,这类问题应该是由于什么原因造成的,你可以告诉我一下QQ号或微信号,如有问题再请教你,谢谢

JIXT5]CQUGQ6)~PJ8R0~B5P.png (16.47 KB, 下载次数: 1)

JIXT5]CQUGQ6)~PJ8R0~B5P.png

ME2D~R)KGR6CQ8C0E{YNOLP.png (8.26 KB, 下载次数: 1)

ME2D~R)KGR6CQ8C0E{YNOLP.png
回复

使用道具 举报

9楼
发表于 2020-4-2 11:14 | 只看该作者
lujianwkx 发表于 2020-4-2 11:05
你好,我今天试了一下,报错如图,请问一下,这类问题应该是由于什么原因造成的,你可以告诉我一下QQ号或 ...

1、是因为单元格格式设置不统一,甚至可能有空格;
     如果完全没有设置格式,格式是常规,应该不会有问题;
     但有时会无意中输入空格之类,空格excel会当成字符来处理,空格看不见,不容易发现问题;
2、为了保险,把这一行代码加一个val转换成数字的函数,写成:
     ThisWorkbook.Sheets(s1).Cells(k, j) = Val(ThisWorkbook.Sheets(s1).Cells(k, j)) + Val(wb.Sheets(s1).Cells(k, j))
     你先试一下,如果还不行,我再用数据类型来判断,这个判断会更麻烦些;
回复

使用道具 举报

10楼
 楼主| 发表于 2020-4-2 11:56 | 只看该作者
hfwufanhf2006 发表于 2020-4-2 11:14
1、是因为单元格格式设置不统一,甚至可能有空格;
     如果完全没有设置格式,格式是常规,应该不会有 ...

可以了,谢谢!有QQ号吗,我怕以后还会有新问题!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2020-4-28 06:22 , Processed in 0.078000 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表
拼三张下载