使用excel VBA,我构建了一个字典并填充它。我做了我的测试并且做得很好。 之后,在一个循环中,我必须测试是否存在一个键来执行某些操作:
For i3 = 2 To n 'n is the the number of rows
If dicos.Exists(ActiveSheet.Range("T" & i3)) Then
ActiveSheet.Range("N" & i3) = dicos(ActiveSheet.Range("T" & i3)) + 1
Else
ActiveSheet.Range("N" & i3) = 1
End If
Next
它不起作用,我在所有列N中都有1个。我尝试用T列中的一些值进行手动测试并找到它! 任何人都可以向我解释我做错了什么以及为什么当我手动输入值时测试是肯定的,当程序必须从单元格中取出它时它是否为负(T列)? 非常感谢你。
答案 0 :(得分:1)
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
Dim dicos As Dictionary
Set dicos = new Dictionary
'Populate dicos....
For i = 2 To n 'n is the the number of rows
If dicos.Exists(ws.Cells(i, 20).Value) Then
ws.Cells(i, 14) = dicos.Item(ws.Cells(i, 20).Value) + 1
Else
ws.Cells(i, 14) = 1
End If
Next
我认为问题是你没有在添加剂行上使用.Value
,因此它只是在那里放1。当我测试您的代码时,我将+1更改为+4,并在cells(i,14)
而不是1中获得了4。