|
最近在看字典,发现一般只能用key值找item值,不能反过来用item值获取key值。(不知道是字典的缺陷,还是我还没有找到方法)
所以我用没有重复项的数组复制给字典的时候,同时做了相反的赋值,如:dic(arr1(i, 1)) = arr1(i, 2) 和dic(arr1(i, 2)) = arr1(i, 1)
' arr1(1,1) = 1 arr1(1,2) = "A"
' arr1(1,2) = 2 arr1(1,2) = "B"
' arr1(1,3) = 3 arr1(1,2) = "C"
按理这样复制出来,字典结果应该是:
但是实际是:
后面多了4, ,5,6 出来。
为什么?怎么多出这些值出来?百思不得其解
代码如下
- Sub 字典测试()
- #If ProjectStatus = "DEV" Then
- Dim dic As Scripting.Dictionary
- Set dic = New Scripting.Dictionary
- #Else
- Dim dic As Object
- Set dic = CreateObject("Scripting.Dictionary")
- #End If
- Dim key As Variant
- Dim arr1() As Variant, sheet1 As Variant
- Set sheet1 = Sheets("Sheet1")
- With sheet1
- ' arr1(1,1) = 1 arr1(1,2) = "A"
- ' arr1(1,2) = 2 arr1(1,2) = "B"
- ' arr1(1,3) = 3 arr1(1,2) = "C"
- arr1 = .Range("A2:B4").Value
-
- For i = LBound(arr1) To UBound(arr1)
- 'dic.Add arr1(i, 1), arr1(i, 2)
- dic(arr1(i, 1)) = arr1(i, 2)
- dic(arr1(i, 2)) = arr1(i, 1)
- Next
-
- .Range("h2").Value = dic.Count
-
- For i = 1 To dic.Count
- .Range("E" & i + 1).Value = dic(dic(i))
- .Range("F" & i + 1).Value = dic(i)
- Next
- '输出所有字典
- For i = 0 To dic.Count - 1
- .Range("j" & i + 1).Value = dic.Keys()(i)
- .Range("k" & i + 1).Value = dic.items()(i)
- Next
- End With
- '打印所有字典
- With dic
- For Each key In .Keys
- Debug.Print key, .Item(key) & Chr(13)
- Next
- End With
- Set sheet1 = Nothing
- Set dic = Nothing
- End Sub
复制代码 文件附件我也上传了,请高手帮我看看。或者告诉知道字典用item值获取key值的方法也请告之,谢谢。
|
|