我的Excel工作表行单元格包含的数据类型的混合组合 - 数字,阿尔法和错误(例如,#REF!)。我想将这个范围传递给一个函数,该函数仅查找最大数量并忽略alpha和错误。我的代码:返回最大价值混合数据类型的范围
Public Function getRangeMax(passedRange As range) As Single
'validate entries in passed range as numbers or skip
'return max from validated numbers
Dim i As Integer, arryLength As Integer
Dim arry()
getRangeMax = 0
arry() = passedRange
arryLength = UBound(arry) - LBound(arry)
For i = 0 To arryLength
On Error Resume Next
If arry(i).value > getRangeMax Then
getRangeMax = arry(i).value
End If
Next i
'getRangeMax = Application.Max(passedRange)
End Function
函数调用是:= getRangeMax(C35:I35)。该特定范围的单元格中的数据为:dB,456.00,#REF !, 12.我希望代码忽略dB和#REF!条目并返回最大数量,在本例中为456.00。相反,该函数返回0.00。我究竟做错了什么?
检查的元素。不要认为它持有你的想法。可能希望为'passedRange'中的每个c'存储到数组中。 – findwindow
将范围存储到内存中的数组后,它是一个多维数组。在你的情况下,它会'arry(1到UBound(arry),1到1)'。 – PatricK
@PatricK如果从单个列传递一个范围,则会是正确的。 OP是通过'C35:I35'所以第二个维度变化 –