假设我有一个UDF功能:
Dim arr() as variant, rng as range
set rng = some range
arr=rng
Function=worksheetfunction.sum(arr)
如果rng包含值的错误,我将如何从arrray而不是从工作表中删除它们?
我宁愿不做。对于循环遍及rng范围的每个语句。我宁愿能够从阵列中删除它们。
这是一般性问题而不是任何事情。
答案 0 :(得分:0)
我建议将它们添加到Collection
,因为它们在动态大小时效果更好(您也可以使用Scripting.Dictionary
。然后遍历该范围,并将非错误单元格值添加到收藏。
我知道这个例子不符合你不循环每个元素的要求。但是,除非您有特定的理由将数据保持在范围内,否则我并不能真正看到这一点。还有其他数据结构,更适合于进一步处理数据。
简单示例:
Sub FindNonErrorCells()
Dim rng As Range
Dim cell As Range
Dim coll As Collection
'Insert your range here
Set rng = Sheets("Sheet1").Range("C1:C5")
Set coll = New Collection
For Each cell In rng
If Not IsError(cell) Then
coll.Add cell.Value
End If
Next cell
End Sub