Excel vba целое от деления

Арифметические (математические) операторы, использующиеся в VBA Excel. Их предназначение, особенности вычислений, приоритет в выражениях.

Обзор арифметических операторов

Операторы Описание
Оператор «+» Сложение двух чисел или объединение двух строк (для объединения строк предпочтительнее использовать оператор «&»)
Оператор «-» Вычитание (определение разности двух чисел) или отрицание (отражение отрицательного значения числового выражения: -15, -a)
Оператор «*» Умножение двух чисел
Оператор «/» Деление двух чисел (деление на 0 приводит к ошибке)
Оператор «^» Возведение числа в степень
Оператор «» Целочисленное деление
Оператор «Mod» Возвращает остаток от деления двух чисел

Особенности операторов «» и «Mod»

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

  • -3.5 => -4
  • -2.5 => -2
  • -1.5 => -2
  • -0.5 => 0
  • 0.5 => 0
  • 1.5 => 2
  • 2.5 => 2
  • 3.5 => 4

Следующие строки вызовут ошибку «Division by zero» («Деление на ноль»):

a = 3 Mod 0.5

a = 3 (2 2.5)

Чтобы избежать ошибок, когда требуется общепринятое математическое округление, округляйте делитель и делимое с помощью оператора WorksheetFunction.Round.

Приоритет арифметических операторов

Приоритет определяет очередность выполнения математических операторов в одном выражении. Очередность выполнения арифметических операторов в VBA Excel следующая:

  1. «^» – возведение в степень;
  2. «» – отрицание;
  3. «*» и «/» – умножение и деление;1
  4. «» – целочисленное деление;
  5. «Mod» – остаток от деления двух чисел;
  6. «+» и «» – сложение и вычитание.2

1 Если умножение и деление выполняются в одном выражении, то каждая такая операция выполняется слева направо в порядке их следования.
2 Если сложение и вычитание выполняются в одном выражении, то каждая такая операция выполняется слева направо в порядке их следования.

Для переопределения приоритета выполнения математических операторов в VBA Excel используются круглые скобки. Сначала выполняются арифметические операторы внутри скобок, затем — операторы вне скобок. Внутри скобок приоритет операторов сохраняется.

a = 3 ^ 2 + 1 ‘a = 10

a = 3 ^ (2 + 1) ‘a = 27

a = 3 ^ (2 + 1 * 2) ‘a = 1

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

Арифметические операции в VBA: сложение, вычитание, умножение, деление и возведение в степеньВыражение — это значение либо группа значений, выражающая отдельное значение. Результат выражения — одно значение определенного типа данных. Знаки (обозначения) операций используются для действий над определенными значениями в выражениях. Для присваивания результата выражения переменной используется оператор присваивания (=), который сохраняет любое значение, представленное выражением справа от оператора присваивания в ячейке памяти, на которую ссылается переменная слева от этого оператора.

Во всех операциях приведенных ниже, оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число.

Сложение

Знак (+) используется для выполнения операции сложения. Слагаемые должны быть численными выражениями, строками, которые VBA может преобразовать в числа либо датами, с которыми также возможны арифметические действия.

Sub Slozhenie()
'Пример арифметического выражения со знаком "+"
    Dim A1, A2, A3 As Integer     'объявление переменных
    A1=1                          'присваивание значения 1 переменной А1  
    A2=2                          'присваивание значения 2 переменной А2  
    A3=A1+A2                      'присваивание результата сложения переменной А3
    MsgBox A3                     'вывод А3 в диалоговом окне   
End Sub

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

Вычитание

Знак (-) используется для выполнения операции вычитания, а также для обозначения отрицательных чисел (когда ставится перед переменной или выражением и означает тоже самое, что и умножение на -1). Знак минуса, который помещают перед числом для обозначения того, что число отрицательное, называют унарным минусом.

Для определения типа данных результата выражения вычитания VBA следует тем же правилам, что и для выражений, использующих знак операции сложения, но имеются два дополнительные правила.

Правило 1. Если в выражении вычитания один из операндов является типом Date, то и результат выражения будет иметь тип Date.

Правило 2. Если в выражении вычитания оба операнда являются типом Date, то результат выражения будет иметь тип Double.

Sub Vychitanie()
'Пример арифметического выражения со знаком "-"
    Dim D1, D2 As Date              'объявление переменных
    D1=Now                          'присваивание значения текущей даты переменной D1
    D2=Now-5                        'присваивание значения даты переменной D2
    MsgBox TypeName(D2), vbOKOnly, "Now-5"
    MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2"         
End Sub

Умножение

Знак (*) используется для выполнения операции умножения, результатом этой операции является произведение операндов. Для определения типа данных результата выражения умножения VBA использует те же правила, что и для выражений, использующих сложение. В выражениях умножения все переменные Variant, содержащие значения типа Date, преобразуются в численные значения.

'Пример арифметических выражений со знаком "*"
4*10                              'умножение 4 на 10
MyVar*2                           'умножение MyVar на 2
MyVar*OtherVar                    'умножение MyVar на OtherVar

Деление

Знак (/) используется для выполнения операции деления, этот знак называют знаком деления действительных чисел. В выражениях деления один операнд делится на другой, а результатом деления является частное.

'Пример арифметических выражений со знаком "/"
10/4                              'деление 10 на 4
MyVar/2                           'деление MyVar на 2
MyVar/OtherVar                    'деление MyVar на OtherVar

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

Если в выражении деления оба операнда имеют тип Integer или Single, то результат выражения деления имеет тип Single. Если результат переполняет диапазон для типа Single, то VBA преобразует его в тип Double.

Целочисленное деление 

Знак () используется для выполнения операции целочисленного деления, при котором результатом деления всегда является целое число без дробной части. VBA не округляет частное целочисленного деления, а просто укорачивает его до целого числа, отбрасывая дробную часть.

Тип данных результата выражения целочисленного деления — либо Integer, либо Long. VBA использует наименьший тип данных, который соответствует результату выражения.

'Пример арифметических выражений со знаком ""
104                              'деление 10 на 4; возвращает значение 2
MyVar2                           'деление MyVar на 2
MyVarOtherVar                    'деление MyVar на OtherVar

Деление по модулю

Знак (Mod) используется для выполнения операции деления по модулю. При делении по модулю выражение возвращает только остаток от деления как целое.

'Пример арифметических выражений со знаком "Mod"
8 Mod 2                             'возвращает значение 0;
5.1 Mod 3                           'возвращает значение 2;
6 Mod MyVar                         'если MyVar содержит 3, возвращает 0

Доступное для понимания объяснение этой математической операции приведено на одном из форумов программистов. Приведу цитату оттуда: «представь, что есть полная 50л канистра и 3л банка. И ты начинаешь вычерпывать из канистры банкой воду (набирать можно только полную банку). 48л вычерпал, осталось 2 литра. Это и есть остаток от деления 50 на 3 по модулю.» Другими словами 50 Mod 3 возвращает 2.

Тип данных результата выражения деления по модулю — это Integer или Long. VBA использует наименьший тип, который подходит для результата выражения.

Возведение в степень

Знак (^) используется для выполнения операции возведения в степень числа или выражения. Показатель степени показывает, сколько раз число или выражение должно быть умножено на само себя.

'Пример арифметического выражения со знаком "^"
3 ^ 3                   'это то же, что и 3*3*3, возвращает значение 27

Главная » Функции VBA »

28 Апрель 2011              129103 просмотров

  • ABS() — эта функция возвращает абсолютное значение переданного ей числа (то же число, но без знака). Например, ABS(3) и ABS(-3) вернут одно и то же значение 3.
  • Int(), Fix() и Round()позволяют по разному округлять числа:
    • Int() возвращает ближайшее меньшее целое;
    • Fix() отбрасывает дробную часть;
    • Round() округляет до указанного количества знаков после запятой.

    Однако Round может вернуть не совсем ожидаемый результат, т.к. функция применяет финансовое округление. По правилам данного округления если за последней к округлению цифрой стоит 5, то округляемую цифру увеличивают в том случае, если она нечетная и уменьшают, если четная.
    Математическое же округление всегда округляет цифру в большую сторону, если за ней идет цифра 5 и выше, и отбрасывает остаток если 4 и меньше.
    Т.е. если мы выполним такую строку кода

    то результатом будет 2,5, хотя предполагалось получить 2,51. Поэтому порой для округления лучше использовать Format:

        MsgBox Format(2.505, "#,##0.00")

    но в этом случае мы получим не число в чистом виде, а текст. И если нужно именно число, то придется производить дополнительные преобразования:

        MsgBox CDbl(Format(2.505, "#,##0.00"))

    Так же, для математического округления, можно использовать и такой вариант:

        MsgBox Application.Round(2.505, 2)

    Но здесь стоит учитывать, что это не чистый VB и этот метод сработает только в Excel, т.к. по сути мы обращаемся к встроенной в Excel функции округления ОКРУГЛ(ROUND), которая применяет именно математическое округление.

  • Rnd и команда Randomize используются для получения случайных значений (очень удобно для генерации имен файлов и в других ситуациях). Перед вызовом функции Rnd() необходимо выполнить команду Randomize для инициализации генератора случайных чисел.
        Dim lRundNum As Long, lMinNum As Long, lMaxNum As Long
        lMinNum = 1: lMaxNum = 100
        Randomize
        lRundNum = Int(lMinNum + (Rnd() * lMaxNum))
        MsgBox lRundNum
  • Sgn() — позволяет вернуть информацию о знаке числа. Возвращает 1, если число положительное, -1, если отрицательное и 0, если проверяемое число равно 0.
  • Mod() — Делит два числа и возвращает только остаток. Например, выражение 8 Mod 3 вернет число 2, т.к. без остатка(в виде дроби у результата деления) 8 делится на 3 только до 2-х(8 / 3 = 2,66666666666667).
    При этом функция Mod учитывает и знак числа — если первое число или оба числа отрицательные, то результатом будет отрицательное число. Если же отрицательное только второе число — то результат будет положительным числом.
    При попытке получить остаток при делении чисел с плавающей запятой результат может быть не тем, который ожидается, потому что перед выполнением деления оба числа округляются по математическим законам(5 и выше до большего, 4 и ниже — до меньшего). Например, выражение 8 Mod 3.5 вернет 0, а выражение 8 Mod 3.4 — 2.

Арифметические операции в VBA: сложение, вычитание, умножение, деление и возведение в степень

Подробности

Категория: Основы VBA

 Опубликовано: 08 октября 2012

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

Выражение — это значение либо группа значений, выражающая отдельное значение. Результат выражения — одно значение определенного типа данных. Знаки (обозначения) операций используются для действий над определенными значениями в выражениях. Для присваивания результата выражения переменной используется оператор присваивания (=), который сохраняет любое значение, представленное выражением справа от оператора присваивания в ячейке памяти, на которую ссылается переменная слева от этого оператора.

Во всех операциях приведенных ниже, оба операнда должны быть численными выражениями или строками, которые VBA может преобразовать в число.

Сложение

Знак (+) используется для выполнения операции сложения. Слагаемые должны быть численными выражениями, строками, которые VBA может преобразовать в числа либо датами, с которыми также возможны арифметические действия.

1.Sub Slozhenie()

2.‘Пример арифметического выражения со знаком «+»

3.Dim A1, A2, A3 As Integer     ‘объявление переменных

4.A1=1                          ‘присваивание значения 1 переменной А1 

5.A2=2                          ‘присваивание значения 2 переменной А2 

6.A3=A1+A2                      ‘присваивание результата сложения переменной А3

7.MsgBox A3                     ‘вывод А3 в диалоговом окне  

8.End Sub

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

Вычитание

Знак (-) используется для выполнения операции вычитания, а также для обозначения отрицательных чисел (когда ставится перед переменной или выражением и означает тоже самое, что и умножение на -1). Знак минуса, который помещают перед числом для обозначения того, что число отрицательное, называют унарным минусом.

Для определения типа данных результата выражения вычитания VBA следует тем же правилам, что и для выражений, использующих знак операции сложения, но имеются два дополнительные правила.

Правило 1. Если в выражении вычитания один из операндов является типом Date, то и результат выражения будет иметь тип Date.

Правило 2. Если в выражении вычитания оба операнда являются типом Date, то результат выражения будет иметь тип Double.

1.Sub Vychitanie()

2.‘Пример арифметического выражения со знаком «-«

3.Dim D1, D2 As Date              ‘объявление переменных

4.D1=Now                          ‘присваивание значения текущей даты переменной D1

5.D2=Now-5                        ‘присваивание значения даты переменной D2

6.MsgBox TypeName(D2), vbOKOnly, «Now-5»

7.MsgBox TypeName(D1-D2), vbOKOnly, «D1-D2»        

8.End Sub

Умножение

Знак (*) используется для выполнения операции умножения, результатом этой операции является произведение операндов. Для определения типа данных результата выражения умножения VBA использует те же правила, что и для выражений, использующих сложение. В выражениях умножения все переменные Variant, содержащие значения типа Date, преобразуются в численные значения.

1.‘Пример арифметических выражений со знаком «*»

2.4*10                              ‘умножение 4 на 10

3.MyVar*2                           ‘умножение MyVar на 2

4.MyVar*OtherVar                    ‘умножение MyVar на OtherVar

Деление

Знак (/) используется для выполнения операции деления, этот знак называют знаком деления действительных чисел. В выражениях деления один операнд делится на другой, а результатом деления является частное.

1.‘Пример арифметических выражений со знаком «/»

2.10/4                              ‘деление 10 на 4

3.MyVar/2                           ‘деление MyVar на 2

4.MyVar/OtherVar                    ‘деление MyVar на OtherVar

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

Если в выражении деления оба операнда имеют тип Integer или Single, то результат выражения деления имеет тип Single. Если результат переполняет диапазон для типа Single, то VBA преобразует его в тип Double.

Целочисленное деление 

Знак () используется для выполнения операции целочисленного деления, при котором результатом деления всегда является целое число без дробной части. VBA не округляет частное целочисленного деления, а просто укорачивает его до целого числа, отбрасывая дробную часть.

Тип данных результата выражения целочисленного деления — либо Integer, либо Long. VBA использует наименьший тип данных, который соответствует результату выражения.

1.‘Пример арифметических выражений со знаком «»

2.104                              ‘деление 10 на 4; возвращает значение 2

3.MyVar2                           ‘деление MyVar на 2

4.MyVarOtherVar                    ‘деление MyVar на OtherVar

Деление по модулю

Знак (Mod) используется для выполнения операции деления по модулю. При делении по модулю выражение возвращает только остаток от деления как целое.

1.‘Пример арифметических выражений со знаком «Mod»

2.8 Mod 2                             ‘возвращает значение 0;

3.5.1 Mod 3                           ‘возвращает значение 2;

4.6 Mod MyVar                         ‘если MyVar содержит 3, возвращает 0

Доступное для понимания объяснение этой математической операции приведено на одном из форумов программистов. Приведу цитату оттуда: «представь, что есть полная 50л канистра и 3л банка. И ты начинаешь вычерпывать из канистры банкой воду (набирать можно только полную банку). 48л вычерпал, осталось 2 литра. Это и есть остаток от деления 50 на 3 по модулю.» Другими словами 50 Mod 3 возвращает 2.

Тип данных результата выражения деления по модулю — это Integer или Long. VBA использует наименьший тип, который подходит для результата выражения.

Возведение в степень

Знак (^) используется для выполнения операции возведения в степень числа или выражения. Показатель степени показывает, сколько раз число или выражение должно быть умножено на само себя.

1.‘Пример арифметического выражения со знаком «^»

2.3 ^ 3                   ‘это то же, что и 3*3*3, возвращает значение 27

Home / VBA / How to use MOD in VBA

In VBA, MOD is an operator, not a function and this operator helps you to divide two numbers and returns the remainder value in the result.

It’s equivalent to the mod function in Excel.

You can use the mod in so many ways and, in this tutorial, we will see some examples. Use the below steps to use the mod operator in VBA:

Range("A1") = 10 Mod 3
  1. Specify the first number which you want to get divided.
  2. After that, enter the “mod” operator.
  3. Now, enter a number that you want to divide by.
  4. In the end, use a message box or a cell to get the remainder from the division.
mod-in-vba

In the same way, you can also get the remainder using a message box.

And in the following code, we have used a message box and then used the mod operator to get the remainder after dividing.

MsgBox 9 Mod 3

And when you run this code, it returns zero in the result in the message box as when you divide 9 by 3 there’s no remainder left, so as in the result of this code.

message-box

Note: As I said, there’s also a function in Excel to get the remainder from the division of two numbers and there are a few situations where you will find that the result you get from Excel will be different from the result you got in VBA.

Error in MOD

If you try to divide a number with zero it always returns a division by zero error.

Debug.Print 10 Mod 0

And the above code returns that error.

Понравилась статья? Поделить с друзьями:
  • Excel vba цвет ячейки диапазон
  • Excel vba цвет ячеек строки
  • Excel vba цвет ярлыка листа
  • Excel vba установить автофильтр
  • Excel vba условные операторы