ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于VBA分组求和等问题,类似于透视表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-27 10:45 | 显示全部楼层 |阅读模式
求助各位老师,现有表1,表2。
表1中有公司名称,企业类型,营业额三列;表2中有企业名称,信用额度,借款金额及所属地区。
想要的是经过几个步骤,最终得出每个地区的借款金额(sheet:目标),sheet1为我自己手工做的过程,没删掉,供参考,步骤如下:
1.将表1分组汇总得出每个公司的营业额,我是用透视表做的,现在想整个过程通过VBA实现;
2.将分组汇总后的表,通过公司名称,在表2中找到,分别返回信用额度,借款金额和所属地区;
3.筛选信用额度大于20000的数据;
4.通过分组汇总,得出每个地区的借款金额。

附件如下,多谢!

模板.rar

11.95 KB, 下载次数: 6

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2018-6-27 12:52 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-27 13:38 | 显示全部楼层
朱荣兴 发表于 2018-6-27 12:52
若只计算每个地区的借款额,字典去重分类犬和,跟表1有啥关系呢???

这个是我自己写的例子,实际上表1和表2中并不是一一对应的。。

TA的精华主题

TA的得分主题

发表于 2018-6-27 13:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ivccav 于 2018-6-27 13:46 编辑



按你的思路写了一个,完全符合你所要的思路。

11.png
22.png

模板.zip (14.86 KB, 下载次数: 15)



TA的精华主题

TA的得分主题

发表于 2018-6-27 13:44 | 显示全部楼层
本帖最后由 魂断蓝桥 于 2018-6-27 14:05 编辑

SELECT 所属地区,sum(借款金额) from (select a.名称,a.营业额,b.信用额度,b.借款金额,b.所属地区 FROM (select 名称,SUM(营业额) as 营业额 FROM [表1$a1:c]  GROUP BY 名称) A  inner join [表2$a1:d] b on a.名称=b.名称 WHERE B.信用额度>=20000) group by 所属地区

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-27 13:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ivccav 发表于 2018-6-27 13:42
按你的思路写了一个,完全符合你所要的思路。

好的,我试一下,谢谢老师。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-27 15:43 | 显示全部楼层
魂断蓝桥 发表于 2018-6-27 13:44
SELECT 所属地区,sum(借款金额) from (select a.名称,a.营业额,b.信用额度,b.借款金额,b.所属地区 FROM (se ...

老师,初级的语句我还能看懂,但是这里的a.   b. 是怎么定义的?怎么确定表示哪个sheet页呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-27 15:45 | 显示全部楼层
ivccav 发表于 2018-6-27 13:42
按你的思路写了一个,完全符合你所要的思路。

老师,这里的select b.所属地区  还有a.XXX  a和b是怎么定义的?怎么确定表示哪一个sheet?

TA的精华主题

TA的得分主题

发表于 2018-6-27 15:58 | 显示全部楼层
本帖最后由 ivccav 于 2018-6-27 16:00 编辑
ksharpbury 发表于 2018-6-27 15:45
老师,这里的select b.所属地区  还有a.XXX  a和b是怎么定义的?怎么确定表示哪一个sheet?

当两个以上表格join的时候,系统分不清字段是哪个表的,就需要指定别名方便引用。

[表2$] b就表示表2的别名为b,表1也是一样的道理,其别名是a。
语法:[表X$] 别名,注意表名和别名之间有空格

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-27 16:24 | 显示全部楼层
ivccav 发表于 2018-6-27 15:58
当两个以上表格join的时候,系统分不清字段是哪个表的,就需要指定别名方便引用。

[表2$] b就表示表2 ...
  1. Private Sub 汇总结果_Click()
  2.     Set cnn = CreateObject("adodb.connection")
  3.     cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=Yes';Data Source=" & ThisWorkbook.FullName
  4.         strsql = "select b.客户名称,b.授信额度,sum(b.信贷余额_折人民币) from (select * from " & _
  5.         "((select 客户名称,sum(贷款余额) as 贷款总余额 from [信贷余额表$] group by 客户名称) a left join [新一代授信客户表$] b on a.客户名称=b.客户名称) where b.授信额度>5000000) " & _
  6.         "group by b.二级行名称"
  7. Range("2:65536").ClearContents
  8. Range("a2").CopyFromRecordset cnn.Execute(strsql, , 1)
  9. End Sub
复制代码


老师请帮忙看一下哪里需要改可以吗?报错 运行时错误'-2147217887(8004e21)'  自动化(Automation)错误

引用ADODB确实一次都没见过,照猫画虎肯定有错误的地方,望指正。

两个表的列数都很多,表结构如图

表a: 信贷余额表,作为表a.png
表b:
新一代授信客户表,想作为表b.png

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

本版积分规则

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

GMT+8, 2024-12-27 20:43 , Processed in 0.045288 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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