排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
字典单条件汇总求和
字典单条件汇总求和
VBA语言専攻
2022-07-25
117
【分享成果,随喜正能量】人的幸福感是自己给的,内心满足即圆满;若内心不知足,就很难得到真正的幸福。所谓圆满不是没苦乐,而是苦乐随喜,悲喜随缘。
。
《VBA数组与字典方案》教程是我推出的第三套教程,目前已经是第一版修订了。这套教程定位于中级,
字典是VBA的精华
,我要求学员必学。七、一、三、九组合套教程掌握后,可以解决大多数工作中遇到的实际问题。
这套教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:字典单条件汇总求和
第三十八讲 利用数组与
字典,实现单条件汇总求和
大家好,我们今天继续讲解VBA数组与字典解决方案,今日的内容是第38讲,利用数组与字典,实现单个条件的数据汇总求和。在VBA解决方案的丛书中,这套VBA数组与字典解决方案是专门讲解数组和字典的。这套书的开始先讲了EXCEL数组的利用,然后又讲了VBA数组,从上一讲开始,我们开始讲字典。介绍了什么是字典,及其简单的应用,从这讲开始,我们开始讲数组和字典的各种实际利用方法,这些方案是我将多年的经验加以整理而成,如果你有机会能看到这些,希望对你有所帮助。
1 单条件汇总求和的实际场景
今日的内容是利用数组与字典,实现单个条件汇总求和,我们看下面的数据:
我们的目的要实现按A列数据汇总求和,看看我们怎么实现,由于这是我的第三套书,大家可以想想,这个内容在我的第一套书《VBA代码解决方案》和第二套书《VBA数据库解决方案》中如何实现呢?
2 实现单条件求和的代码实现及代码讲解
下面看看我给出字典解决方案的代码:
Sub MyNZsz_38() '第38讲 应用数组与字典,实现单个条件汇总求和
Dim myarr
'将数据放入数组中
Sheets("38").Select
myarr = Range("a2:b" & Range("b2").End(xlDown).row)
'定义字典
Set myDic = CreateObject("Scripting.Dictionary")
'给字典赋值
For i = 1 To UBound(myarr, 1)
If Not myDic.exists(myarr(i, 1)) Then
'没有找到键,那么就赋值
myDic(myarr(i, 1)) = myarr(i, 2)
Else
'找到,值增加
myDic(myarr(i, 1)) = myDic(myarr(i, 1)) + myarr(i, 2)
End If
Next
Range("g:h").ClearContents
Range("g1:h1") = Array("型号", "数量")
'将键和键值赋给数组,并通过转置函数显示在工作表中
myarr = Array(myDic.Keys, myDic.items)
Range("g2").Resize(myDic.Count, 2) = Application.Transpose(myarr)
End Sub
代码截图:
代码解析:
1) 上述代码实现了按A列的值为基准,把B列数据汇总的功能。
2) myarr = Range("a2:b" & Range("b2").End(xlDown).row)
上述语句将数据放到数组中,注意这里的myarr 是个二维数组
3) Set myDic = CreateObject("Scripting.Dictionary")
上述语句定义了一个字典
4) If Not myDic.exists(myarr(i, 1)) Then
'没有找到键,那么就赋值
myDic(myarr(i, 1)) = myarr(i, 2)
Else
'找到,值增加
myDic(myarr(i, 1)) = myDic(myarr(i, 1)) + myarr(i, 2)
End If
上述语句实现了首先查找,根据查找的结果做后续处理的方式。查找到了汇总求和,没有找到就新增条目。
5) myarr = Array(myDic.Keys, myDic.items)
上述语句赋给数组,仍是一个二维的数组
6) Range("g2").Resize(myDic.Count, 2) = Application.Transpose(myarr)
上述语句将数组放到工作表中。注意要首先将工作表的区域扩展到和数组一般的大小。
下面看代码的运行:
今日内容回向:
1 如何将键和键值回填到工作表?
2 回填工作表前要做好哪些准备?
我20多年的VBA实践经验,全部浓缩在下面的各个教程及各类工具中:
【分享成果,随喜正能量】人的一切痛苦,本质上都是对自己无能的愤怒。更多人不愿面对这点,转而通过消解别人的努力,来为自己寻找仅有的安慰,这才是loser的表现。
。
数组
文章转载自
VBA语言専攻
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨