有人想付费学习字典,我觉得没啥必要,再谈字典Dictonary(免费)!

文摘   教育   2024-10-15 22:48   江苏  

关于本公众号】了解一下,欢迎关注谢谢!

快速浏览

实用案例

|日期控件||简单的收发存||收费管理系(Access改进版)|

|电子发票管理助手||电子发票登记系统(Access版)|

|文件合并||表格拆分||审计凭证抽查底稿|

|中医诊所收费系统(Excel版)||中医诊所收费系统(Access版)||银行对账单自动勾对|

|印章使用登记系统|

收费使用项目

|财务管理系统||工资薪金和年终奖个税筹划||新税法下工资表模版|

内容提要

  • 字典dictionary
大家好,我是冷水泡茶,在VBA中,字典是一个非常重要的对象,在我们分享的很多案例中都有它的身影,我们还专门写过所谓的教程:
Excel VBA【教程】字典Dictionary
点击公众号文章页面的“VBA编程实战推荐搜索”,输入“字典”,可以搜出很多关于字典的内容:
我以为我们已经讲得非常清楚了,但不知为何,仍然有人搞不明白,我想可能是没有仔细搜索的关系吧,如果是这样,如果大家想了解VBA相关内容,不妨先在本公众号搜索一下,如果没找到满意的内容,我们再用搜索引擎或者人工智能搜索。
前两天,有人在公众号留言:

我想专门学下字典,不知能否出个专辑?愿意付费

当时我看到这条留言的时候,思考良久,却不知如何回复,最后就回复了一个“可以”,心想,我慢慢考虑如何做这个“字典专辑”吧。
但是,想来想去,也没有想出合适的方案,其实是没有多少新鲜的内容,也不知道如何收费,收你个30、50的吧,我犯不着费那个劲,收你个300、500的吧,你可能也不愿意,我也替你不值。
不过,我既然答应了,就应该有所交待,那么,今天我们就再来聊一聊字典。
1、字典有两个关键要素,键(key)和项(item),两者是一一对应的关系,key不可以重复,item则不限。
2、这里的字典,跟我们都用过新华字典并不是一回事,但有很多相通之处:
我们用绿色圈出来的部分,我们可以当作是字典的key,汉语拼音“an”下面有很多汉字,这些汉字下面又有很多词组,就好比我们的嵌套字典。
3、再举一个例子,字典就好比一本书或者一篇论文的目录,甚至可以看成一整本书:
我们可以认为,每一级目录都是一个级别字典的key,而文章的内容可以看作为字典的item,实际上,我们是可以把一篇文章装入字典的。
4、字典的key一般采用字符串或者整数,也可以是除数组以外的任何数据类型。
5、字典的item则可以是任何类型的数据,如果是另一个字典,则形成嵌套字典,也可以是数组,Range对象等。
6、字典的常用属性与方法:
(1)dic.add dkey,xxx,向dic添加项目,dkey为key,xxx为item。
(2)arr=dic.keys,把所有key存到数组;arr=dic.items,把所有items存到数组。
(3)dic.remove dkey,把键值为dkey的key及对应的item删除。
(4)dic.RemoveAll,清空字典所有项目。
(5)dic(dkey)=dic(dkey)+1,将dkey进行计数。
(6)dic.exists(dkey),判断字典是否存在dkey,返回TRUE或False。
(7)用For each  key/item in dic.keys/items,循环遍历字典的key或者item。
(8)dic.Count,字典所有key的数量。
(9)xxx=dic(dkey),把键值为dkey的item赋值给变量xxx。
(10)if dic is nothing, 判断dic是不是已经赋过值,if dic.count=0,判断字典有没有数据。
7、主要应用场景:
(1)取得不重复值,这个最简单,如果没有其他的需求,我们就直接把所有可能的key往字典里直接添加,item的值随便取,比如空值。
(2)数据统计与汇总,可以对key进行计数,也可以将key对应的数值进行汇总。
(3)重新组织数据,改变数据结构,比如常见的一维转二维等等。

后记

1、我们在向字典添加数据的时候,如果是简单的计数、汇总,我们一般不需要判断key是否存在,如果不存在则自动添加:

dic(dkey)=dic(dkey)+1

上述代码,左边的dic(dkey)表示给dkey对应的item赋值,右边的dic(dkey)则表示从字典取值。如果不存在dkey,则右边的dic(dkey)取不到值,则dic(dkey)=1,如果存在dkey,则把原来的dic(dkey)加1。当然,判断一下也没毛病:

If dic.exists(dkey) Then    dic(dkey) = dic(dkey) + 1Else    dic(dkey) = 1End If

2、我们从字典取值的时候,对于一级字典,item为单一值,比如字符串、数值之类的,我们在取dkey的item的时候,一般不需要判断是否存在dkey,如果不存在dkey,则返回一个空值;

x=dic(dkey)

3、而对于多级字典,我们一般要逐级判断是否存在key,否则,一旦有不存在的上级key,肯定会报错:

If dic.exists(key1) Then    If dic(key1).exists(key2) Then        If dic(key1)(key2).exists(key3) Then            x = dic(key1)(key2)(key3)        End If    End IfEnd If

4、我们可以把字典理解成一张“对照表”,一个key对应着一个特定的item。

5、字典的内容我想得也差不多了,具体代码可以参考公众号案例,还是那句“老话”:多搜索。

好,今天就到这里,我们下期再会!


~~~~~~End~~~~~~

安利小店
安利的牙膏非常不错,用了以后就不想再用其他的了;洗洁精洗衣液也是日常必备,用过都说好!

合谷医疗
合谷医疗专攻各种疑难杂症,尤其擅长抑郁症焦虑失眠儿童神经发育异常多动症自闭孤独症腰颈椎疾病治疗,可谓神乎其技!体验过的直呼早点来就好了

喜欢就点个、点在看留言评论、分享一下呗!感谢支持!

  • Excel问题,请在文章下面留言讨论!或者加入我的付费交流群提问

VBA编程实战
Excel应用案例、Excel VBA、公式函数使用技巧分享,思路解读...... 这里有鲜活案例、实用的技巧......
 最新文章