如何在 Excel VBA 中将值舍入为 2dp?

  • 本文关键字:舍入 2dp Excel VBA excel vba
  • 更新时间 :
  • 英文 :


我正在尝试将值记录为 2dp,但我在使其工作时遇到问题。

我有一个包含测试用例的工作簿。宏采用这些测试用例,并通过单独的工作簿运行它们。然后,第二个工作簿中的计算值将记录回第一个工作簿中。

我可以通过精细获得所有值,但希望其中三个是 2dp。我现在可以让它们显示为 2dp,但是当我单击单元格时,实际值约为 13dp。如何使值为 2dp,而不仅仅是显示为 2dp?

Dim MPCalc as Single
MPCalc = Sheets("Calculation").Cells(45,11).Value
MPCalc = WorksheetFunction.Round(MPCalc,2)
Cells(i, MPCalc_Col).Value = MPCalc

我试过.数字格式 = "0.00", 格式(MPCalc,"0.00"(,圆形(MPCalc,2( 但它们都带来了显示为 2dp 的 13dp 值,我不知道为什么!

四舍五入后

Dim MPCalc As Single
MPCalc = Worksheets("Calculation").Cells(45,11).Value
MPCalc = Application.WorksheetFunction.Round(MPCalc, 2)

舍入值位于变量MPCalc中,但不在单元格中。因此,您需要将其写回您的单元格:

Worksheets("Calculation").Cells(45,11).Value = MPCalc

或者多合一:

With Worksheets("Calculation").Cells(45,11)
.Value = Application.WorksheetFunction.Round(.Value, 2)
End With

或者(或添加(@Peh他的答案:

Sub RoundRange()
With Worksheets("Calculation")
.Range("A1:A4").Value = .[ROUND(A1:A4,2)]
End With
End Sub

或者更动态地:

With Worksheets("Calculation")
.Range("A1:A4").Value = Application.Round(.Range("A1:A4"), 2)
End With

您可以Set另一个Range变量,而不是.Range("A1:A4")

最新更新