ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1119|回复: 9

求教各位老师:怎么用VBA分大小项目动态汇总

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-19 10:26 | 显示全部楼层 |阅读模式
各位老师好:请教一下,怎么用VBA程序动态汇总上传图上的大小项目合计?谢谢。

大小项目动态汇总

大小项目动态汇总

VBA编程求助2018.08.19.zip

47.51 KB, 下载次数: 4

分大小项目汇总

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-8-19 11:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-20 08:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
朱荣兴 发表于 2018-8-19 11:31
上传像样点的附件来看看,你的 B列  行数为变量,实际是什么????

附件已经上传了。
大项目A项到B项之间现在的行数为2行,有可能随小项目的增加,行数增加到10行,也有可能减少到1行。
继续求教。谢谢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-20 09:22 | 显示全部楼层
老师好:
再次上传附件。
谢谢。

VBA编程求助2018.08.20.zip

47.37 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2018-8-21 07:37 | 显示全部楼层
……详见附件,仅供参考……

VBA编程求助2018.08.19.rar

45.45 KB, 下载次数: 17

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-21 10:01 | 显示全部楼层
xiangbaoan 发表于 2018-8-21 07:37
……详见附件,仅供参考……

老师您好:
谢谢,老师的答疑。
这表格是全智能化,比我想象的功能多得多了,太高级了。
老师,再求助一下,每行程序后能不能加说明,每行程序的作用?
谢谢!
智能汇总表(老师)2018.08.21.png

TA的精华主题

TA的得分主题

发表于 2018-8-21 10:29 | 显示全部楼层
GUANGGE 发表于 2018-8-21 10:01
老师您好:
谢谢,老师的答疑。
这表格是全智能化,比我想象的功能多得多了,太高级了。

好吧,有空时我写了回复你,不过你先了解一下数组、字典这些方面,本论坛知识树中有。
佛山小老鼠、香川群子等老师的都很经典,我也是认真拜读老师的大作才勉强入门的。
祝你进步!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-21 11:04 | 显示全部楼层
xiangbaoan 发表于 2018-8-21 10:29
好吧,有空时我写了回复你,不过你先了解一下数组、字典这些方面,本论坛知识树中有。
佛山小老鼠、香川 ...

谢谢,老师.
我正在努力学习VBA。
我先要学习数组,字典。
请您有空,加个程序说明。
谢谢。

TA的精华主题

TA的得分主题

发表于 2018-8-21 18:55 | 显示全部楼层
本帖最后由 xiangbaoan 于 2018-8-22 07:22 编辑
GUANGGE 发表于 2018-8-21 11:04
谢谢,老师.
我正在努力学习VBA。
我先要学习数组,字典。

Sub test()
Dim ar, r&, i%, st$, d As Object, t, n#, sum#
Set d = CreateObject("scripting.dictionary")
ar = Sheet7.[b4].CurrentRegion '单元格区域装入数组,你选择b4按ctrl+a看是哪些区域
For r = 2 To UBound(ar) - 1
    st = ar(r, 1)
    If Len(st) Then '判断是否为空,等同于if st<>"" then
        d(st) = r '将大项位置装入字典
        ar(r, 6) = "" '清空合计,表中黄色单元格,这里可写可不写,写了更严谨些吧
    Else
        ar(r, 6) = ar(r, 4) * ar(r, 5) '若为空则算出每个小项的乘积
    End If
Next
'说明,for r = 2 to 10   ……………… next 循环完后r的值是11,此为特别强调
d(r) = r '记录下最后一行位置,也就是总计,等同于d(UBound(ar)) = r
t = d.items '字典items装入数组
Set d = Nothing '释放对象
For r = 0 To UBound(t) - 1 '在数组中循环,此数组记录着每个大项的位置
    n = 0 '此变量将存放每大项的合计
    For i = t(r) + 1 To t(r + 1) - 1 '在小项中循环
        n = n + ar(i, 6) '累加
    Next
    ar(t(r), 6) = n '将结果写入
    sum = sum + n '各大项累加
Next
ar(UBound(ar), 6) = sum '总计结果写入
Sheet7.[k4].Resize(UBound(ar), UBound(ar, 2)) = ar '数组写入单元格区域
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-27 09:05 | 显示全部楼层
xiangbaoan 发表于 2018-8-21 18:55
Sub test()
Dim ar, r&, i%, st$, d As Object, t, n#, sum#
Set d = CreateObject("scripting.diction ...

谢谢,老师。
非常感谢老师的回复。
我想先看明白程序说明,如有不懂的地方,再请您指导。
谢谢。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 20:13 , Processed in 0.050100 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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