您好,我正在嘗試從陣列中獲取 MIN 和 MAX 值,盡管有任何事情,它總是回傳“0”。我的代碼:
Dim MachineCapacitySmallestArray() As Variant
MachineCapacitySmallestArray = thisworkbook.worksheets(1).range("C25:D25")
SmallestCapacity = Application.Min(MachineCapacitySmallestArray)
在范圍內我有自然數
我嘗試將這些單元格格式化為數字等,但沒有任何效果。我犯了什么錯誤以及如何解決?
uj5u.com熱心網友回復:
根據評論,您的問題似乎是您的資料,您的單元格中可能有字串,而不是數字(可能以某種方式匯入?)
如前所述,更改單元格格式不會更改單元格的內容,它只是定義了如何顯示資料。該數字3.14
可以顯示為 3、3.140000、00003.14 或 3.14E 00,它的值不會改變。但是,字串'3.14
是字符3
、、和的組合.
,與數字無關。在值位于單元格中之后設定單元格格式不會將其轉換為數字。1
4
如果您將資料讀入 VBA,VBA 將從 Excel 中獲取準確的值,在您的情況下,您必須手動將其轉換為數字,例如使用以下例程。On Error Resume Next
如果單元格不包含可以轉換為數字的內容,這將防止型別不匹配。
Sub ArrToNumber(ByRef arr)
Dim i As Long, j As Long
For i = LBound(arr, 1) To UBound(arr, 1)
For j = LBound(arr, 2) To UBound(arr, 2)
On Error Resume Next
arr(i, j) = CDbl(arr(i, j))
On Error GoTo 0
Next
Next
End Sub
現在只需在您的代碼中添加對該例程的呼叫即可。如果您想在 Excel 中也有數字,請從最后一條陳述句中洗掉注釋符號。
Dim MachineCapacitySmallestArray() As Variant
MachineCapacitySmallestArray = thisworkbook.worksheets(1).range("C25:D25")
ArrToNumber MachineCapacitySmallestArray
SmallestCapacity = Application.Min(MachineCapacitySmallestArray)
' thisworkbook.worksheets(1).range("C25:D25") = MachineCapacitySmallestArray
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/487663.html
上一篇:使用附加文本拆分單元格值