分享

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

 剩矿空钱 2018-07-07



1、用字典的item属性修改字典的item,可读可写。语法为:字典.item(key)=''新item''

下图代码,将孙悟空(key)的item(孙行者)用item属性改为''者行孙''。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

添加字典数据,也可以使用''=''赋值,且''=''不会像Add方法那样遇到相同的key就出错。

这种方法可以理解为省略了 ''.item'' 。

d(''孙悟空'') = ''孙行者'' 等价于 d.Item(''孙悟空'') = ''孙行者'' 。

理解此句代码:字典里是没有''孙悟空''这个key的,直接使用字典的item属性就可以达到Add方法同样的结果且更好,语法为:字典.item(key)=''item''。

d.Item(''孙悟空'') = ''孙行者'' 就表示向字典里添加了key为''孙悟空'',item为''孙行者'' 的数据。简写为 d(''孙悟空'') = ''孙行者'' 。

不需要管字典里原先有木有''孙悟空''这个key,如果没有,字典的item属性就会自动新建一个key''孙悟空''。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

所以,向字典里添加key和item,可以用item属性代替Add方法。

如果字典里已经有''孙悟空''这个key,再使用字典的item属性,那么就相当于直接修改''孙悟空''这个key对应的item。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

上面的代码,d(''孙悟空'') = ''孙行者'' (不管原先有木有''孙悟空'')直接在字典中添加了key为''孙悟空'',item为''孙行者''的数据。

d(''孙悟空'') = ''行者孙'' 直接将key为''孙悟空''的item由''孙行者''修改为''行者孙'' 。

所以,忘掉Add方法吧,用字典的item属性代替,更加强大。


2、key属性修改字典的key

字典的key属性,可写不可读,即只能通过此属性修改关键字,不能读取关键字。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

上面代码将''孙悟空''修改为''孙猴子'',其对应的item不变。


3、注意问题:d(''孙悟空'')相当于用字典的item属性(.item省略)新建了一条key为''孙悟空'',item为空白的数据。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

上图,此时字典的数据条数为1,因为用key属性修改了''孙悟空''这个key,自然''孙悟空''就从字典了消失了。

下图时字典的数据条数为2,d(''孙悟空'')又添加了''孙悟空''这个key,item没指定就是默认空值。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

所以,d(''孙悟空''),字典的item属性作用为:添加数据--修改数据--输出数据,十八般武器样样精通。

1、代替Add方法添加数据;

2、修改字典的item;

3、读取字典的item。


练习1:字典去重复,提取唯一值。

利用字典的key不能重复的特性,提取唯一值。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性


练习2:计数,同样是上面的原始数据。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

理解计数:d(arr(i, 1)) = d(arr(i, 1)) 1

原始数据中,每个姓名的计数都为2。以''孙尚香''为例子。当代码运行至第一个孙尚香时:

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性

d(arr(i, 1)) = d(arr(i, 1)) 1,''=''右边的d(arr(i, 1))新建了key为孙尚香,item为空值的数据。

d(arr(i, 1)) = d(arr(i, 1)) 1相当于d(arr(i, 1)) = 空值 1,VBA自动运算,

变为d(arr(i, 1)) = 0 1 -->d(arr(i, 1)) = 1,然后将孙尚香作为字典的key,1作为孙尚香对应的item,存入字典。

当运行至第2个孙尚香时,d(arr(i, 1)) = d(arr(i, 1)) 1,''=''右边的d(arr(i, 1))就读取了孙尚香的item,此时为1。d(arr(i, 1)) = d(arr(i, 1)) 1等于d(arr(i, 1)) = 1 1-->d(arr(i, 1)) =2,然后相当于修改了孙尚香这个key对应的item,由1变为2,完成数量累计;

第三个孙尚香时,继续执行相同的操作(相当于不断修改同一个key对应的item),从而完成计数。

......

这和我们常用的(累加累计)一样的原理:i=i 1,如i为字典,不就是计数了,字典也可以是变量且更强大,容易读取。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性


练习3:求和,其原理和计数一样。

VBA简单入门37:去重复、计数、求和,字典Key属性、Item属性


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约