Как округлить значение до 2dp в Excel VBA? - PullRequest
2 голосов
/ 22 января 2020

Я пытаюсь записать значение как 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

Я пробовал .NumberFormat = "0,00", формат (MPCal c, "0,00"), Round (MPCal c, 2), но все они имеют значение 13dp, показанное как 2dp, и я не уверен почему!

Ответы [ 2 ]

3 голосов
/ 22 января 2020

Альтернативно (или добавление) к @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

Вместо .Range("A1:A4") вы можете Set другой Range переменная.

3 голосов
/ 22 января 2020

После округления

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...