我的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'所以第二個維度變化 –