【发布时间】:2017-12-27 14:17:24
【问题描述】:
我是 VBA 新手。
Endstate - 搜索范围并计算用户指定填充颜色的唯一单元格值的实例,将合并的单元格(我知道,合并会破坏一切)作为一个完整的单元格。
我已经编译了下面的代码,但它不能正常工作,任何帮助将不胜感激!
Function CountUniqueColorBlocks(SearchRange As Range, ColorRange As Range) As Long
Dim cell As Range, blocks As Range
Dim dict As Scripting.Dictionary
Set dict = New Scripting.Dictionary
Set blocks = SearchRange(1).MergeArea(1) ' prime union method (which requires >1 value)
For Each cell In SearchRange
If cell.Interior.Color = ColorRange.Interior.Color And Not dict.Exists(cell.Value) Then
dict.Add cell.Value, 0
End If
Next
CountUniqueColorBlocks = dict.Count
End Function
【问题讨论】:
-
您期望得到什么以及实际得到什么?
-
当我在 Excel 中运行代码时,我得到的答案是实际计数的 +1,我不知道为什么。另外,我想知道是否有比使用脚本字典更有效的方法来执行唯一值搜索,但不将函数限制为仅限数值。
-
+1 是由于合并的单元格被视为空白,因此空白是一个新的唯一值并为您提供额外的值。添加 if 语句以检查
Len(cell.value) > 0以确保忽略空格。