Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1947|回复: 4

[已解决]有关字典求重复值的问题

[复制链接]
发表于 2016-8-10 15:36 | 显示全部楼层 |阅读模式
A列数值为1,2,3,4,5,6,1,2,3

Sub test1()     
Dim Arr, d, i&         
Set d = CreateObject("scripting.dictionary")
Arr = Range("a1").CurrentRegion
For i = 1 To UBound(Arr)
    d(Arr(i, 1)) = d(Arr(i, 1)) + 1

   
    Next
   
    For Each a In d.keys
    If d(a) > 1 Then p = p & "," & a

  
Next
[d9] = Mid(p, 2)
End Sub

这段代码里面的最后在[d9]输出为1,2,3
请问这段代码中的   d(Arr(i, 1)) = d(Arr(i, 1)) + 1  怎么理解
当我将+1 换成+2 [d9]输出 为 1,2,3,4,5,6
+1和+2 有什么区别吗?

最佳答案
2016-8-10 17:00
luhao1990 发表于 2016-8-10 16:42
首先要谢谢大大的  解释。
其次呢我自己仔细的想了想  觉得  d(Arr(i, 1)) = d(Arr(i, 1)) + 1 其实是不 ...

语法
object.Item(key) [= newitem]


可以这么写,d.item("a")="apple"
也可以这么简写,d("a")="applie"
而写成d.item,则是错误的写法。


关于重复次数,可看3楼例子。
是由于某个key的item在不断累加,类似于 s=s+1的效果,从而达到计数效果。
发表于 2016-8-10 15:56 | 显示全部楼层
本帖最后由 爱疯 于 2016-8-10 15:58 编辑

以下只是比喻


arr(i,1),某种物品
d,是可存放物品的盒子
d(arr(i,1)),装有某种物品的盒子
d(Arr(i, 1)) = d(Arr(i, 1)) + 1 ,当前盒中某种物品的个数 = 之前盒中某种物品的个数 + 1
回复

使用道具 举报

发表于 2016-8-10 16:03 | 显示全部楼层
本帖最后由 爱疯 于 2016-8-10 16:14 编辑

Sub test()
    Dim dic As Object
    Set dic = CreateObject("scripting.dictionary")

    Debug.Print "循环之前,dic(""a"")=" & dic("a")

    dic("a") = dic("a") + 1
    Debug.Print "第1次循环后,dic(""a"")=" & dic("a")

    dic("a") = dic("a") + 1
    Debug.Print "第2次循环后,dic(""a"")=" & dic("a")
End Sub


改一下,感觉这样和循环对比,更好理解些。
从结果看,d(x)=d(x)+1这种形式,相当于对字典中的key(即x)进行计数。
回复

使用道具 举报

 楼主| 发表于 2016-8-10 16:42 | 显示全部楼层
爱疯 发表于 2016-8-10 16:03
Sub test()
    Dim dic As Object
    Set dic = CreateObject("scripting.dictionary")

首先要谢谢大大的  解释。
其次呢我自己仔细的想了想  觉得  d(Arr(i, 1)) = d(Arr(i, 1)) + 1 其实是不是可以可以理解为 d.item(arr(i,1))=d.item(arr(i,1))+1
针对本题 其实d.key 就是1,2,3,4,5,6    而 d.item 就是d.key的重复次数
不知道这样理解有没有问题
                           

回复

使用道具 举报

发表于 2016-8-10 17:00 | 显示全部楼层    本楼为最佳答案   
luhao1990 发表于 2016-8-10 16:42
首先要谢谢大大的  解释。
其次呢我自己仔细的想了想  觉得  d(Arr(i, 1)) = d(Arr(i, 1)) + 1 其实是不 ...

语法
object.Item(key) [= newitem]


可以这么写,d.item("a")="apple"
也可以这么简写,d("a")="applie"
而写成d.item,则是错误的写法。


关于重复次数,可看3楼例子。
是由于某个key的item在不断累加,类似于 s=s+1的效果,从而达到计数效果。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 02:11 , Processed in 0.304537 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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