ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 看一看能不能让你通俗的理解字典的各项用法及功能

看一看能不能让你通俗的理解字典的各项用法及功能

作者:绿色风 分类: 时间:2022-08-18 浏览:118
楼主
kevinchengcw
自从学会了字典,觉得处理很多以前觉得很复杂的问题都得心应手,这么好的东西实在想奉献给大家,只好硬着头皮为大家写一篇讲解的文章,在这里不会过多利用专业词汇来解释,我会尽量用一些你能想像得出的情景来说明,其中的各种理解纯属个人见解,并未翻阅什么资料,如有纰漏望不吝指出。
下面开始:
我们先不说什么是字典,因为只要你懂得用法,你即使不知道什么是字典也没关系(其实是我自己也说不明白,嘿嘿!),我要说的是,你要想学会使用字典先要学会当老板,不相信,告诉你,这真的很重要,为什么,我们下面来讲。
老板不会干啥高难度的活,不过搬搬抬抬的经验丰富,就弄个物流方面的公司吧,要当老板你要先注册个公司吧,公司可有各种名称的后缀,什么有限公司啦,责任公司啦,多了去了,同样,想使用字典也需要定义吧,不过不管他是什么公司,总得有个自己的公司名吧,先不去管后缀,当老板就要自己说得算,决定了,公司名就起字典Dictionary的简写Dic,当然,你当老板你说得算,你可以起个你喜欢的名字(我喜欢用Dic)。
决定了公司名,我们就去注册一下公司名吧,用之前先来个:
Dim Dic
或者
Dim Dic as Object
这样你就拥有了自己的公司了,这里你可以想像dim就是注册,dic就是公司名,as object就是说明公司性质(后缀名),至于object是什么性质的公司我们就不管了,老板没读太多书,只要知道公司能申请下来就行了。
现在公司名有了,我们得有个办公地点吧,老板有钱,盖个办公大楼吧,有钱就是好办事,一句话就搞定了:
Set Dic=CreateObject("scripting.dictionary")
这样就盖起了一座大楼(创建了一个字典项目),什么,你问老板为啥要这样盖楼,老板不会盖楼,只会出钱,然后自然有人帮着盖。而且老板就是有钱,这楼盖的这个大哟,你问有多大,你有多大块空地就盖多大个楼(据说字典容量的大小只与你空闲的内存空间大小有关)。
公司也注册了,办公楼也建好了,老板琢磨着,嗯,该招人了。
"那个啥,秘书,帮我贴几条规定在墙上,我的地盘我做主,我就是皇上:
1.
今后公司人员录用我一句话就决定;
2.
凡进我公司的人员都得服从公司的规定,名字由老板定,不能与别人重名,而且要随叫随到,这样才能有效率;
3.
公司的每个员工各有一个保管区域Dic(员工名),随货品不同可任意放置,但要能随时提取;
4.
我们公司要成为最有效率的公司,如果我这个老板觉得这名员工不需要了,一句话就开除;
5.
我这个老板有权在必要的时候开除全部员工或解散公司。
弄大点的字,贴门口!"
招聘、查询、开除与解散的办理手续如下:
招聘: Dic.add 人员名,责任区
查询: Dic.exists(人员名)
开除: Dic.remove 人员名
解散公司: Dic.removeall
老板想想,要有活了才招聘人员,这样不浪费人力成本,终于接了个活,有个公司到了一批货,让老板在接货的时候去掉重复的项目,老板想这事简单,我们公司人名都是唯一的,就让每个员工的名字与货品名一样,我们公司又不允许有重名的情况,这样不就解决了吗,于是在提货时现场招聘,看到一样货,老板就叫一声自己的员工,如果有人答应就说明已经有了,如果没人答应,老板就从现场现聘一个人员,并将其命名为新货品的名字:
老板一般说
"张三在吗?"if dic.exists("张三")
或者
"没有叫张三的吧?"if not dic.exists("张三")
"没有叫张三的,那你过来吧,聘你了,你现在叫张三,在公司先顶个空缺!"
If not dic.exists("张三") then dic.add "张三",""
如此,将所有的重复的全去除了。老板很开心,第一单做的漂亮,兴冲冲的去交货,没想到对方又提出了新要求:"我们要付对方货款,这个是要计件的,你把刚刚那些货的实际件数计一下顺便给我们吧!",老板一想,这个也行,我们公司的员工随叫随到,于是老板守着货品一个一个的叫:"张三,一件;李四,两件……",于是张三,李四把各自保管的物品数量加了个一:
Dic("张三")=Dic("张三")+1
Dic("李四")=Dic("李四")+2
……
全弄完了,老板要去报告数量去了,不过叫货品名称没问题,这个全部员工的名字都叫啥我也记不住啊,这个得请我那个数组兄弟帮个忙了。
话说这个数组兄弟是更早就开公司的,擅长的就是这种统计,对了,数组兄弟注册的公司叫Arr(Array的缩写,如果要用到时可以与dic公司一同注册,也不用写明公司性质和公司规模,你要不喜欢,给他起个别的名也行啊),现在把所有员工的名字报上去吧,问个智力题先:话说一个员工是key,那一群员工叫啥,keys?!不错不错,英文学得不错,知道加上s代表复数哈,现在就把员工名单报给Arr公司,让他们帮着搞一下吧:
Arr=Dic.keys
Arr公司的工作方式的循环的来,从第一个人到最后一个人或从最后一个人到第一个人都行,不过我习惯从低到高,先申请个号码牌(注意,做事要有条理,事先考虑到要用到的在申请区全申请完,像我就提前申请了个号码牌: Dim N as Integer)
For N=LBound(Arr) To UBound(Arr)
Msgbox "货品名是" & Arr(N) & " 的货品数量是:" & Dic(Arr(N))
Next N
这样就一个个的列出了各种货品的数量。
谁知对方公司又提出了新要求:"我们公司仓库小,你把数量小于3的货品给我们就行了!"
于是老板又数一次,多于3的员工就开除掉吧:
For N=LBound(Arr) To UBound(Arr)
If Dic(Arr(N))>3 then Dic.remove Arr(N)
‘老板有规定的嘛,不需要时一句话就开除!
Next N
终于交完了差,老板想了想,这回都不需要了,直接全开吧:
Dic.removeall
‘呵呵,终于用上了
老板又想,做这行还真不容易,反正也没其他事了,连楼也拆了吧,免得占着位置:
Set Dic=Nothing
"其实即使不解散公司,只要拆楼公司也就解散了!"老板这样想着。
回想公司的各项工作,老板觉得这次开的公司有下面这几个方面做得不错:
1.
员工名唯一而且随叫随到(不用像数组兄弟的公司一样,要循环到了才出现),这样在去除重复及运作效率上快很多;
2.
我们公司仓库够牛,不计较数据类型及大小,基本都能存放进对应员工的责任区里,有海纳百川的气魄,而且可以即时提取;
3.
人员进出及公司存亡一句话,**也有**的好处,够灵活嘛,嘿嘿!
怎么样,各位,是不是看到了一个高效却短命的公司从建立到终结的过程,你想不想过一把当老板的瘾呢,马上开始学习字典吧,真的好用。
看一看能不能让你通俗的理解字典的各项用法及功能.rar
2楼
xiangzi728
谢谢kevinchengcw 分享这么好的学习资料!
3楼
xiangzi728
看了半天没看懂!
4楼
chlypy2008
解释的够生动,谢谢分享!
5楼
liuguansky
看了半天没看懂!
6楼
acecrazy
文采非常滴好,看明白了,不会用,练手去
7楼
zm0115
K 哥狠啊  讲完课了把楼都拆了
8楼
cunfu
有劳
9楼
yd0209
先做一个常识性了解,今后咱先盖安居房
10楼
大海情怀
学习
11楼
Ericall
谢谢,学习了
12楼
人性殿堂
版版精采  贴贴经典!
13楼
Cor_Scorpii
生动有趣,笑着就把知识学会了。这个老板真霸气
14楼
我的1314
K 哥狠啊  讲完课了把楼都拆了
15楼
q6co
配上实例就更完美了
16楼
E林好汉
短、平、快,高效。
17楼
吾股丰登
这个通俗的例子很不错 通俗易懂
18楼
兴魏
看了半天没看懂
19楼
DJ_Soo
根据我个人理解,这样解释感觉不大能看得懂啊..
我觉得还是拿字典和字义来解释更容易明白.整个过程就相当于字典出书的整理过程一样..
20楼
LOGO
没想到K哥的文笔这么好。
看完以后很有收获,谢谢K哥的分享!
21楼
我的1314
没想到K哥的文笔这么好。
22楼
hustclm
字典和数组的组合应用,看懂了
23楼
gaokaozhu
下来慢慢学
24楼
sosomc
写得挺好玩,抱走学习。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap