返回列表 上一主題 發帖

無條件捨去問題

無條件捨去問題

請問我要將整頁的數值無條件捨去到小數兩位

       With Temp.Range("C2")
            .Value = Format(.Value, "0.00")
        End With

可以執行,但是寫成以下就為失敗

       With Temp.Range("C2:C10")
            .Value = Format(.Value, "0.00")
        End With

原因是出在哪邊呢?

Format 參數不能是陣列

TOP

回復 1# warhead

format(.value,"0.00") 會四捨五入,不會無條件捨去

下列會得到 Range 區域 的 數值 格式 小數點以下2位
      With Temp.Range("C2:C10")
            . .NumberFormatLocal = "0.00"
        End With

TOP

我將他跟VLOOKUP一起使用就可以得到我要的結果了
       With Temp.Range("C2:C10")
            .Value = "=ROUNDDOWN(VLOOKUP(A3,Temp!A:T,3,0),2)
            .NumberFormatLocal = "0.00"
        End With

只是我單獨使用ROUNDDOWN 跟 FORMAT一樣不能使用在陣列,
但是ROUNDDOWN跟VLOOKUP一起使用卻可以?

TOP

回復 4# warhead

資料量不大,或是不考慮執行速度可以用下列
  1. Sub TEST()
  2. For Each E In Range("A1:A2")
  3.     E.Value = Application.WorksheetFunction.Round(E.Value, 2)
  4. Next
  5. End Sub
複製代碼
考量速度,建議用陣列處理完畢之後再一次性輸出
PKKO

TOP

回復 4# warhead

這是不是你要的?

Dim c
For Each c In Temp.UsedRange
    c.Value = IIf(c <> 0, Application.RoundDown(c, 2), "")
Next

TOP

如確實按無條件捨去處理, 不能用 round
  1. Sub zz()
  2. Dim a, c
  3. a = [a1].CurrentRegion
  4. For Each c In a
  5.     Debug.Print Int(c * 100) / 100
  6. Next
  7. End Sub
複製代碼

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題