从数组中删除错误值

时间:2017-07-17 06:49:42

标签: vba

假设我有一个UDF功能:

 Dim arr() as variant, rng as range
 set rng = some range
 arr=rng
 Function=worksheetfunction.sum(arr)

如果rng包含值的错误,我将如何从arrray而不是从工作表中删除它们?

我宁愿不做。对于循环遍及rng范围的每个语句。我宁愿能够从阵列中删除它们。

这是一般性问题而不是任何事情。

1 个答案:

答案 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