ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 风中之竹

[求助] Excel如何多个文件统计汇总(内详)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-5-16 15:47 | 显示全部楼层
再提供一个软件给你吧,这个我试了64116条记录汇总没有错。
你运行该软件后:
第一步:找到分表的目录(双击打开)
第二步:找到要汇总的总表表格
第三步:点汇总就行了。
第四步:再打开汇总表格就可以看到汇总的效果了(汇总前不要打开)
电子表格自动汇总1.rar (6.99 KB, 下载次数: 68)

裁剪.jpg

TA的精华主题

TA的得分主题

发表于 2009-5-16 16:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我这里没出现,整个程序没加容错,可能是超过65536的错误我没拿过来

TA的精华主题

TA的得分主题

发表于 2009-5-16 16:30 | 显示全部楼层
我测试了一下,还是没出问题,超出65536的问题,准确提示了,不解!!!!!!
关于之处理3万多行的事情,你可以去看一下数据类型的定义,看看各种数据类型的范围。
我目前的是office2007-SP2,不是是否有关系
最近机器很慢,可能该重作下了,也是很忙,没时间上来,几年没上来,最近同事有些事,想给他们找点培训型的资料、案例
希望你早日可以自己解决,整体程序虽然简短,涉及数据定义、文件夹,文件、sheet,range、单元格,相对位移,条件定位、循环、透视表、条件跳转等,内容比较全面,看懂了,一般的程序没问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-16 21:41 | 显示全部楼层
能不能给我源代码啊
对于如何去判断记录条数,完全不知道:(
同时判断两种格式的话,要我自己改实在有点难,呵呵
我在你原来那个上手动该该还行,判断记录条数的话,那就没辙了

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-18 16:20 | 显示全部楼层
  1. arow1 = Cells.Find(What:=定位, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
  2.         xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
  3.         , MatchByte:=False, SearchFormat:=False).Row

  4.           acol1 = Cells.Find(What:=定位, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
  5.         xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
  6.         , MatchByte:=False, SearchFormat:=False).Column
复制代码
这两段是不是就是分别从行和列去判断分表中ユーザ单元格后一格是否为空单元,并取出他们的行号和列号?
  1. aRow = AK.Sheets(i).Range(Chr(64 + acol1) & "65536").End(xlUp).Row
复制代码
这个是用来判断分表中文件的最后一行的吧,
  1. Range(Chr(64 + acol1) & "65536")
复制代码
这一段我该怎么理解呢?
  1. Range("B65536")
复制代码
这个表示什么意思?excel的帮助没看懂

TA的精华主题

TA的得分主题

发表于 2009-5-18 23:34 | 显示全部楼层
第一段是找ユーザ的位置,取行列号
第二段你的判断是对的
其中那段是根据第一段取得的列判断最后一行
最后一段指的是单元格B65536

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-19 09:34 | 显示全部楼层
chr原来是用来将数字返还一个字符的,现在明白了

vba来判断最后一行时,是不是一定要给他一个范围来查找?
就像这里的B65536?
如果给定范围后,VBA找到的最后一行是不是就是指这个范围内的最后一行或者列?

TA的精华主题

TA的得分主题

发表于 2009-5-19 09:55 | 显示全部楼层
那要看你后面的参数,你看一下帮助,以你目前应可以理解

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-19 11:36 | 显示全部楼层
  1. Range(Chr(64 + acol1) & "65536").End(xlUp).Row
复制代码
这个的意思就是从“?65536”这个单元格开始往上找,找到第一个非空单元格后,一直找到"?"这列的顶端,计算出总共有多少行(隐藏行不计算在内),

如果65536改成中间的某个行号,这条语句就全部都返回数值1了
  1. n = ActiveSheet.UsedRange.Rows.Count
  2. a = ActiveSheet.UsedRange.Rows(n).Row
复制代码
这个是网上搜到的,可以把隐藏行也计算在内

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-5-19 11:40 | 显示全部楼层
附件里有两个文件

粗看结构应该完全一样的
05-14那个文件汇总,是从J列开始汇总的
05-15,又能正常汇总了

0512-0518.rar

23.83 KB, 下载次数: 17

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

本版积分规则

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

GMT+8, 2024-11-27 10:34 , Processed in 0.049465 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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