ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 字典解释

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-29 13:44 | 显示全部楼层 |阅读模式
各位师哥师姐好, 我对黄色背景的 内容不是太理解,怎么和 (绿色) 运行结果框中的  书名后面的 统计数值来匹配。 谢谢!

运行结果为左侧绿区

运行结果为左侧绿区

TA的精华主题

TA的得分主题

发表于 2022-12-29 14:24 | 显示全部楼层
1、关于-1,这里,d(k).keys()是一个数组,下标为0,所以,上标应该是在d(k).count-1。
2、关于d(k).keys()(i),这个就是排重后的书名了,而d(k).items()(i),这个就是书名重复的次数了。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-29 14:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
k是时间,d(k).keys()是时间对应的书名,d(k).items()是时间对应书名的数量

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-29 14:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
时间对应所有书名的字典为字典d,字典d的Key(书名)又作为新的字典d(k)记录书名的数量,字典的嵌套,d(k).keys为书名,d(k).items为数量 d.keys为时间,d.items为书名。虽然我以前也用过字典的嵌套,但是没想到可以直接将key定义为新的字典,太巧妙了

TA的精华主题

TA的得分主题

发表于 2022-12-29 16:07 | 显示全部楼层
这个是字典嵌套,首先把A列的时间作为字典d的关键字(key),然后将每个关键字又创建为字典,
比如,Set d("20220331") = CreateObject("Scripting.Dictionary"),然后将书名又作为字典d("20220331")的关键字,如d("20220331")("三国演义")=d("20220331")("三国演义")+1,最后得到"20220331"对应的各个书名(不重复的)及名个书名出现的次数,即4个书名,三国、红楼、西游、水浒。
d(k).keys()(i)相当于d("20220331").keys()(0),即字典d("20220331")的第1个关键字,也就是"三国演义",再连接上d("20220331").items()(0),即关键字"三国演义"对应的项,也就是5,最终 brr(1 , 2) = "三国演义5",brr(1 , 3) = "红楼梦5".......

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-29 20:37 | 显示全部楼层
ykcbf1100 发表于 2022-12-29 14:24
1、关于-1,这里,d(k).keys()是一个数组,下标为0,所以,上标应该是在d(k).count-1。
2、关于d(k).keys( ...

大哥好,对于 d(K), 其关键字是 日期,书面是 d(K)的 item。而 d(k).items()(i) 就成了 重复书名的次数了?相当于 countif 函数的作用? 谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-29 20:44 | 显示全部楼层
本帖最后由 yepingapple 于 2022-12-30 10:06 编辑

五楼的大哥, 您好!
d(k) 字典的  key  是 日期,如 ("20220331"), 其对应的 项是 书名吧。
d(k).keys()(i) 相当于一个新字典,对应的 key 是书名,为何其项值 就是 重复的次数。谢谢!

TA的精华主题

TA的得分主题

发表于 2023-1-1 17:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-1-5 13:43 | 显示全部楼层
yepingapple 发表于 2022-12-29 20:44
五楼的大哥, 您好!
d(k) 字典的  key  是 日期,如 ("20220331"), 其对应的 项是 书名吧。
d(k).keys( ...

d是一个字典,d(k),是嵌套的另一个字典,d(k).keys()(i)是字典d(k)的一个关键字(不是一个新字典),也就是某书名。
比如该书名为“三国”,
1、当字典d(k)的关键字里还没有“三国”这个书名时,当代码中出现d(k)("三国")=x这样的表达式时,便在字典d(k)里添加了关键字"三国",此时该关键字对应的项(item)为空值(如果用来计算的话相当于0),所以d(k)("三国")+1,等于0+1,结果为1,所以d(k)("三国")=d(k)("三国")+1,等同于d(k)("三国")=1。
2、当再次循环到这个关键字“三国”时,d(k)("三国")的值以经是1了,此时再出现d(k)("三国")=x时,就是等于用新的值替换原来的值了,d(k)("三国")=d(k)("三国")+1,就是在d(k)("三国")的值(1)上再加1,和为2,即将d(k)("三国")的值修改为2,下次再循环到,再继续加1,最终得到“三国”的总次数。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-6 08:00 | 显示全部楼层
半百 发表于 2023-1-5 13:43
d是一个字典,d(k),是嵌套的另一个字典,d(k).keys()(i)是字典d(k)的一个关键字(不是一个新字典),也就 ...

谢谢大哥的详细指导。

打个比方,若 C 列写上了 “ 书签的第几页”, 比如 C2 单元格 写上了 第 108页,及2020年3月 31日 读到了 108页。同样的程序,我真的难辨别其 item 写的是 统计书名数量的增加还是 连接的 多少页数的内容。

是不是可以理解为: 其 item 仅仅涉及自身单元格,即为统计数量,若涉及另外的行或列 (比如 涉及到了  brr(j+1, i+3), 即多出 一列了),那就不是单纯的统计了,需要考虑后续的单元格字符“。谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 22:39 , Processed in 0.044949 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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