Vba Excel округлить

Обновлено: 06.07.2024

Функция VBA RoundUp на самом деле вообще не является функцией VBA. Это функция рабочего листа Excel, которую вы вызываете с помощью объекта WorksheetFunction. Вызвав функцию рабочего листа RoundUp из VBA, вы сможете округлить свои числа до любого количества цифр, как в Excel.

Ранее в этом месяце я рассказал вам все, что вам нужно знать о функции VBA Round. Сегодня я покажу вам, как использовать функцию RoundUp в ваших макросах VBA.

Пример — обзор VBA

VBA RoundUp для округления чисел в большую сторону

Создавайте мощные макросы с помощью нашего бесплатного комплекта разработчика VBA

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

Это базовый макрос. Он устанавливает переменную d1 равной 1,3, а затем вызывает функцию RoundUp через объект Application.WorksheetFunction. Конечным результатом является округление 1,3 до 2.

Если вы готовы узнать больше, в следующем разделе показано, как использовать RoundUp, включая интересное обсуждение второго аргумента.

Учебное пособие — Обзор VBA

Аргументы округления

Как и функция Round в VBA, функция RoundUp принимает два аргумента.

  • Первый аргумент — это число, которое нужно округлить.
  • Второй аргумент — это количество разрядов, до которого нужно округлить.

Оба аргумента обязательны.

Обратите внимание, что при описании второго аргумента я не указал "количество знаков после запятой", до которого вы хотите округлить. Это потому, что у второго аргумента интересное поведение.

Второй аргумент округления

Если второй аргумент равен 0, число округляется до ближайшего целого числа. Это то, что я продемонстрировал в примере макроса.

Если второй аргумент больше 0, число округляется до указанного количества знаков после запятой ПОСЛЕ запятой.

Если второй аргумент меньше 0, число округляется до указанной цифры ДО десятичной точки.

Звучит необычно, правда? Давайте рассмотрим несколько примеров, чтобы все прояснить.

Больше примеров сводки новостей

Округление после запятой

Пример 1

Переменная d2 равна 2121,4

Пример 2

Переменная d2 равна 2121,33.

Пример 3

Переменная d2 равна 2121,325.

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

Округление до десятичной точки

Здесь все становится интереснее.

Пример 1

Переменная d2 равна 2130. Объясним. Представьте, что вы переместили десятичную дробь на одну позицию влево, а затем округлили число слева от этой новой десятичной точки вверх. Другими словами, первая цифра СЛЕВА от новой десятичной точки округляется в большую сторону от 2 до 3, что дает 2130.

Пример 2

Переменная d2 равна 2200. Шаблон продолжается. Представьте, что вы перемещаете десятичные разряды на два знака влево, а затем округляете до следующего целого числа. 1 становится 2, поэтому ваш окончательный ответ становится 2200.

Пример 3

Переменная d2 равна 3000.

Прикольно, правда? Поскольку функция RoundUp в VBA на самом деле является функцией рабочего листа Excel, те же правила применяются, когда вы вызываете функцию RoundUp в своей электронной таблице. Возможно, это общеизвестно, но я здесь, чтобы признать, что до недавнего времени я понятия не имел, что в Excel можно округлять числа НАЛЕВО от десятичной точки.

Идеи для приложений

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

На этом уроке все. Когда вы будете готовы вывести свой VBA на новый уровень, подпишитесь, заполнив форму ниже.

Готовы делать больше с VBA?
Мы собрали гигантский PDF-файл с более чем 300 готовыми макросами и хотим, чтобы вы получили его бесплатно. Введите свой адрес электронной почты ниже, и мы вышлем вам копию вместе с нашим комплектом разработчика VBA, полным советов, приемов и ярлыков VBA.

Прежде чем мы начнем, я хочу сообщить вам, что мы разработали набор шпаргалок по VBA, чтобы вам было проще писать лучшие макросы. Мы включили более 200 советов и 140 примеров макросов, поэтому в них есть все, что вам нужно знать, чтобы стать лучшим программистом VBA.

Однако, когда я попытался использовать round(cells(1,1).value*cells(1,2).value),2) , результат не совпадает с cell(2,1) . Я подумал, что это связано с проблемой округления, но мне просто интересно, можно ли заставить round() работать нормально. То есть для значения > 0,5 округляйте в большую сторону. А для значения округлить вниз?

"То есть для значения > 0,5 округляйте в большую сторону. И для значения Округление ведет себя таким образом. Проблема в том, что оно делает для значения = 0,5 .

15 ответов 15

VBA использует банковское округление, чтобы компенсировать погрешность округления до 0,5 в большую или меньшую сторону; вы можете вместо этого;

Попробуйте эту функцию, можно округлить двойное число в большую сторону


Если вы хотите округлить значение, используйте половинную корректировку. Добавьте 0,5 к числу, которое нужно округлить в большую сторону, и используйте функцию INT().

ответ = INT(x + 0,5)

@Ans Нет, поскольку 41 уже округлено, ответ должен быть 41. 0,5 добавляется только для того, чтобы всегда округлять число в большую сторону.

Попробуйте функцию RoundUp:

Я представляю две пользовательские библиотечные функции для использования в vba, которые будут служить для округления двойного значения вместо использования WorkSheetFunction.RoundDown и WorkSheetFunction.RoundUp

Таким образом, функция Rdown(2878,75 * 31,1,2) вернет 899529,12, а функция RUp(2878,75 * 31,1,2) вернет 899529,13. Тогда как функция Rdown(2878,75 * 31,1,-3) вернет 89000, а функция RUp(2878,75 * 31.1,-3) вернет 90000

У меня была проблема, когда мне нужно было только округлить, и эти ответы не работали для того, как мне нужно было запустить мой код, поэтому я использовал другой метод. Функция INT округляется в сторону отрицательного значения (4,2 переходит в 4, -4,2 переходит в -5). Поэтому я изменил свою функцию на отрицательную, применил функцию INT, затем вернул ее к положительной, просто умножив ее на -1 до и после

x — это переменная, которую вы хотите округлить, а count — это результат, который вы будете использовать в дальнейшем в своем коде

Я использовал код, чтобы определить, сколько страниц в календаре необходимо, чтобы иметь одну страницу в неделю для любого заданного месяца. Уравнение основывалось на днях в месяце и на том, когда был первый день месяца.

Для ясности я назвал переменные года и месяца соответственно годами и месяцами, потому что год и месяц уже являются функциями в VBA. daysinmonth — это, конечно, количество дней в месяце, определенное с помощью предыдущего уравнения. Если кому-то интересно, вот код, который я использовал (может быть, больше круглых скобок, чем нужно, но я не стал пробовать и ошибаться, чтобы использовать меньше): count = -1 * (Int((-1 * (daysinmonth + (DateSerial(years, month) , 1) - 1))) / 7))

Подобно функции рабочего листа, где мы округляем числа до ближайших целых чисел, в VBA у нас есть функция RoundUp, которая уменьшает десятичную точку для нас, и синтаксис для использования функции округления выглядит следующим образом Round up ( Number , Количество цифр после запятой) эти два аргумента в функции являются обязательными.

Когда мы работаем с числами и вычислениями, мы получаем дробные числа после целого числа, и это довольно часто встречается в повседневной работе. Обычно мы не беспокоимся о десятичных значениях, потому что это никак не влияет на наш конечный результат. В таких ситуациях нам нужно округлить числа до ближайшего целого числа или непосредственного целого числа. С помощью функции RoundUp Функция RoundUp Функция Excel ROUNDUP вычисляет округленное значение числа в большую сторону или в большую сторону. Другими словами, он округляет число от нуля. Будучи встроенной функцией Excel, она принимает два аргумента — «число» и «количество_цифр». Например, «=ОКРУГЛВВЕРХ(0,40,1)» возвращает 0,4. читать дальше , мы действительно можем выполнить эту задачу.

VBA RoundUp Function

Перед этим вспомните синтаксис функции RoundUp.

функция округления

Примеры

Выполним задачу по округлению числа «288,5264». Мы увидим все цифры в этом примере.

Код:

В приведенном ниже коде показано, что происходит, когда мы передаем единицу в качестве второго аргумента.

Код:

В приведенном ниже коде показано, что происходит, когда мы передаем два в качестве второго аргумента.

Код:

В приведенном ниже коде показано, что происходит, когда мы передаем три в качестве второго аргумента.

Код:

В приведенном ниже коде показано, что происходит, когда мы передаем минус единицу в качестве второго аргумента.

Код:

В приведенном ниже коде показано, что происходит, когда мы передаем минус два в качестве второго аргумента.

В приведенном ниже коде показано, что происходит, когда мы передаем минус три в качестве второго аргумента.

Подобным образом мы можем использовать функцию ОКРУГЛВВЕРХ в VBA как часть класса функций рабочего листа для округления чисел на основе предоставленного второго аргумента.

Рекомендуемые статьи

Это руководство по VBA RoundUp. Здесь мы обсудим, как использовать функцию рабочего листа VBA RoundUp для округления заданного числа на основе заданного аргумента с помощью загружаемого шаблона Excel. Вы можете узнать больше о VBA из следующих статей —

VBA RoundUP

В Excel у нас есть функция округления, которая используется для округления чисел до выбранных нами десятичных знаков. Предположим, есть число, похожее на 8,5036, и мы хотим округлить его до двух чисел. На самом деле в Excel есть два метода: один — это круглая кнопка, которую мы имеем в Excel, как показано на скриншоте ниже, а другой — круглая функция. Скриншот для круглой кнопки выглядит следующим образом.

 VBA-ROUNDUP-увеличить десятичную дробь

Оценка, Hadoop, Excel, мобильные приложения, веб-разработка и многое другое.

Как объяснялось выше, мы можем округлять числа в Excel с возможностью увеличения и уменьшения десятичной или округляющей функции. Точно так же в VBA у нас также есть функция округления, которая используется для округления чисел до определенных десятичных знаков. Ранее функция округления в Excel использовала следующие аргументы.

В Excel: округление (число, количество знаков после запятой)

Число — это число, которое мы хотим округлить, а количество цифр — это количество цифр, которое мы хотим округлить. Точно так же округление Excel VBA такое же, как функция округления Excel. Взгляните на это ниже.

В VBA: Round (Число, [Количество цифр после запятой])

Выше приведена функция округления в VBA, но функция округления несколько отличается. Однако синтаксис функции округления в VBA и функции округления аналогичен. Это выглядит следующим образом,

В обзоре VBA это:

Функция RoundUp похожа на функцию округления в VBA Excel, но разница в том, что она всегда округляет число для заданных аргументов. Теперь давайте разберемся с аргументами, которые мы предоставляем функции округления.

Мы знаем, что это число — это число, которое мы указываем в качестве входных данных и которое будет округлено. Количество цифр может быть в трех сценариях следующим образом:

  • Если количество предоставленных цифр больше нуля, то число округляется до указанного десятичного разряда.
  • Если в качестве входных данных указано количество цифр, равное нулю, то число округляется до ближайшего целого числа.
  • Теперь, если количество введенных цифр меньше нуля, число округляется до левого десятичного разделителя.

Функция RoundUp работает очень похоже на функцию рабочего листа Excel. Теперь имейте в виду, что он имеет десятичные значения для вывода, который он возвращает в двойном размере. Это будет понятно на нескольких примерах. Мы изучим все три аспекта функции округления, то есть меньше 0, равно 0 и больше 0 на примерах. В наших примерах мы будем принимать данные от пользователя, собирать сводку и отображать их.

Как округлить результаты с помощью VBA?

Давайте посмотрим на примеры RoundUp в Excel VBA.

Давайте начнем с количества предоставленных цифр меньше 0 и посмотрим, как всплывают результаты.

Шаг 1. Чтобы начать работу с VBA, нам нужно работать в редакторе VB. Это можно сделать, нажав на вкладку разработчика, а затем на Visual Basic, как показано на снимке экрана ниже.

Обзор VBA (Visual Basic)

Шаг 2: Теперь вставьте модуль в редактор VB, где мы начнем с макросов VBA, дважды щелкните модуль, который откроет для нас другое окно, где мы напишем наш код,

Модуль Excel VBA RoundUP

Шаг 3: Начните с подфункции следующим образом.

Код:

Шаг 4. Объявите две переменные как двойные, а одну как целое число, в одной из которых будет храниться значение для ввода, в другой — значение для вывода, а в третьей — значение количества цифр, которые мы хотим округлить,< /p>

Код:

Шаг 5: В переменной A сохраните значение числа, которое будет округлено в большую сторону, а в переменной C сохраните значение числа цифр, которое будет округлено в большую сторону. Оба значения мы будем принимать в качестве входных данных от пользователя следующим образом:

Код:

 Пример VBA RoundUp 1.3

Шаг 6. В переменной B сохраните округленное значение A следующим образом:

Код:

 Пример VBA RoundUp 1.4

Шаг 7. Теперь используйте функцию msgbox для отображения округленного значения A следующим образом:

Код:

Пример VBA RoundUp 1.5

Шаг 8. Запустите приведенный выше код и введите A следующим образом,

 Пример вывода VBA

Шаг 9. Нажмите "ОК", после чего откроется другое поле ввода, в котором будет указано количество цифр для округления в большую сторону, введите -1 в качестве ввода,

Шаг 10. Когда мы нажимаем "ОК", мы получаем окончательный округленный результат,

В этом примере мы будем принимать данные от пользователя, чтобы число цифр было округлено до 0.

Шаг 1. Добавьте новый модуль в VBA, в модуле напишите еще одну подфункцию для другого макроса следующим образом,

Код:

Шаг 2. Снова объявите три переменные, две из них как двойные, а одну как целое, следующим образом

Код:

Шаг 3. Мы знаем, что A сохранит входные данные для округляемого числа, а B сохранит количество цифр, которые нужно округлить, следующим образом

Код:

Пример 2.4

Шаг 4. В переменной C мы округлим введенное значение, полученное от пользователя, и отобразим его с помощью функции msgbox следующим образом:

Код:

 Пример 2.5 (MSGBox)

Шаг 5. Теперь запустите приведенный выше код, нажав F5, и введите число, которое нужно округлить в большую сторону, как показано ниже.

Пример VBA 2 (ввод 1)

Шаг 6. Нажмите "ОК" и укажите количество цифр, которое нужно округлить до 0 следующим образом:

Пример 2 VBA (ввод 2)

Шаг 7. Когда мы нажимаем "ОК", мы видим следующий результат,

Теперь мы воспользуемся последней и последней опцией, чтобы число цифр было больше нуля, и посмотрим на результат.

Шаг 1. Добавьте новый модуль и добавьте в него новую подфункцию следующим образом:

Код:

Шаг 2: Теперь мы снова объявим три переменные, две из них как двойные, а одну как целое число. Один будет хранить значение для ввода, если число будет округлено, а другой будет хранить ввод количества цифр,

Код:

 Пример 3.1

Шаг 3. В переменной B сохраните округленное значение A с функцией округления следующим образом и используйте функцию msgbox для отображения результата,

Код:

Пример обзора VBA 3.2

Шаг 4. Теперь мы запускаем код и вводим число, которое нужно округлить в большую сторону,

 Пример VBA

Шаг 5. Нажмите "ОК" и укажите число цифр, округленное до 2,

 Пример VBA 3.5

Шаг 6. Нажмите "ОК", чтобы увидеть окончательный результат.

Что нужно помнить

Есть несколько вещей, которые нам нужно помнить о VBA RoundUp.

  • Это похоже на сводку новостей в VBA и Excel.
  • В качестве входных данных принимается число цифр меньше 0, больше 0 или равно 0.
  • На самом деле это функция рабочего листа, которую мы используем в VBA.
  • Эта функция возвращает двойной результат.

Рекомендуемые статьи

Это руководство по VBA Roundup. Здесь мы обсуждаем, как использовать Excel VBA Roundup вместе с несколькими практическими примерами и загружаемым шаблоном Excel. Вы также можете ознакомиться с другими нашими рекомендуемыми статьями –

Читайте также: