Функция VBA Round - PullRequest
       7

Функция VBA Round

8 голосов
/ 19 марта 2011

В одной из моих программ мне нужно вычислить среднее значение по диапазону чисел. Проблема в том, что иногда ответ получается с огромным десятичным знаком, и мне нужно попытаться уменьшить его до двух десятичных знаков максимум.

Я видел что-то под названием Excel.WorksheetFunction.Round(...), но, насколько я знаю, оно работает только с определенным номером или конкретной ячейкой. Мне было интересно, знает ли кто-нибудь, как реализовать это так, чтобы оно округляло все десятичные дроби в диапазоне ячеек.

Excel.WorksheetFunction.Round(ActiveSheet.Range(g_first_Function_Col & "2:" & g_first_Function & g_totalRow).Select, 2)

Приведенный выше код пытается использовать функцию округления для диапазона ячеек. G_first_Function_Col - это некоторый столбец (например, столбец «H»), а g_totalRow - последняя строка, в которой есть какие-либо значения. Когда я пытаюсь запустить этот бит кода, он говорит мне "=" ожидаемый. По сути, я пытаюсь выделить весь столбец и округлить его.

Спасибо,

Джесси Смотермон

1 Ответ

8 голосов
/ 19 марта 2011

Есть два способа сделать это.

-Выберите свой диапазон и измените числовой формат:

Range("myrange").Select
Selection.NumberFormat = "0.00"

-Поискать все ячейки в вашем диапазоне и применять функцию Round для каждой из них. В VBA вы не сможете одновременно использовать функцию Round для всего диапазона.

For Each currentcell In myRange
    currentcell.Value = Math.Round(currentcell.Value, 2)
Next

(псевдокод выше; вам понадобится лучший цикл For..Next для циклического прохождения всех ячеек в вашем диапазоне.)

...