2016-01-21 47 views
1

如何修改这个代码也给空字符串范围获得独特的价值观以及在Excel VBA中的空字符串

Sub GetUniqueAndCount() 

    Dim d As Object, c As Range, k, tmp As String 

    Set d = CreateObject("scripting.dictionary") 
    For Each c In Selection 
     tmp = Trim(c.Value) 
     If Len(tmp) > 0 Then d(tmp) = d(tmp) + 1 
    Next c 

    For Each k In d.keys 
     Debug.Print k, d(k) 
    Next k 

End Sub 

回答

1

只需删除测试TMP的长度,它应该做的它:

Sub GetUniqueAndCount() 

    Dim d As Object, c As Range, k, tmp As String 

    Set d = CreateObject("scripting.dictionary") 
    For Each c In Selection 
     tmp = Trim(c.Value) 
     d(tmp) = d(tmp) + 1 
    Next c 

    For Each k In d.keys 
     Debug.Print k, d(k) 
    Next k 

End Sub 
+0

我不相信你可以设置一个字典键为零长度的字符串或vbNullString。 – Jeeped

+0

我也不确定,但我试过d(“”)= 1,它工作。 –