Как возвести в степень в 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

Содержание

  1. Оператор ^ (Visual Basic)
  2. Синтаксис
  3. Компоненты
  4. Результат
  5. Поддерживаемые типы
  6. Комментарии
  7. Пример
  8. Арифметические операторы VBA
  9. Оператор присваивания (=)
  10. Оператор сложения (+)
  11. Оператор вычитания (-)
  12. Оператор умножения (*)
  13. Оператор деления (/)
  14. Целочисленное деление ()
  15. Деление по модулю (Mod)
  16. Возведение в степень (^)
  17. Арифметические операторы VBA
  18. Операторы VBA: арифметические, логические, сравнения, присвоения
  19. Vba excel возведение степень

Оператор ^ (Visual Basic)

Возводит число в степень другого числа.

Синтаксис

Компоненты

number
Обязательный. Произвольное числовое выражение.

exponent
Обязательный. Произвольное числовое выражение.

Результат

Результат возвысится number до значения exponent , всегда в Double виде значения.

Поддерживаемые типы

Double . Операнды любого другого типа преобразуются в Double .

Комментарии

Visual Basic всегда выполняет экспоненциацию в типе данных Double.

Значение exponent может быть дробным, отрицательным или обоим.

Если в одном выражении выполняется несколько экспоненциаций, ^ оператор вычисляется при обнаружении слева направо.

Оператор ^ может быть перегружен, что означает, что класс или структура могут переопределить свое поведение, если операнд имеет тип этого класса или структуры. Если код использует этот оператор для такого класса или структуры, убедитесь, что вы понимаете его переопределенное поведение. Для получения дополнительной информации см. Operator Procedures.

Пример

В следующем примере оператор используется для ^ повышения числа до величины экспоненты. Результатом является первый операнд, воздвигнутый в степень второго.

В предыдущем примере приведены следующие результаты:

exp1 имеет значение 4 (2 в квадрате).

exp2 Для параметра задано значение 19683 (3 в кубе, затем это значение в кубе).

exp3 имеет значение -125 (-5 куб).

exp4 имеет значение 625 (-5 — четвертое питание).

exp5 имеет значение 2 (корень куба 8).

exp6 имеет значение 0,5 (1,0 делится на корень куба 8).

Обратите внимание на важность круглых скобок в выражениях в предыдущем примере. Из-за приоритета операторов Visual Basic обычно выполняет ^ оператор раньше любого другого, даже унарного – оператора. Если exp4 бы и exp6 вычислялись без круглых скобок, они дали бы следующие результаты:

exp4 = -5 ^ 4 будет вычисляться как –(5 до четвертой мощности), что приведет к -625.

exp6 = 8 ^ -1.0 / 3.0 будет вычисляться как (от 8 до –1 питания или 0,125), разделенного на 3,0, что приведет к 0,041666666666666666666666666666666666666666666666666666666666666666666.

Источник

Арифметические операторы VBA

Оператор присваивания (=)

Оператор присваивания используется для присваивания результата выражения переменной.

Операция присваивания имеет две синтаксические формы:

1 Let varname = expression
2 varname = expression

varname — любая переменная VBA

expression — любое выражение VBA

Первый вариант операции присваивания использовался в ранних языках программирования Basic. Второй вариант используется в современной версии VBA.

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

X = 5 + 7; Y = X + 5 ; Z = X — Y; A = B; I = I + 1

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

Например, если в операторе присваивания А = А +5, переменная А до операции присваивания содержала значение 7, то после операции она будет содержать значение 12 (7+5).

  • Можно присваивать любую численную переменную (или выражение) любой другой переменной численного типа (или переменной типа Variant);
  • Если присваивается численное выражение типизированной переменной с меньшей точностью (например, Double — Long), VBA округляет значение выражения для совпадения с точностью переменной, принимающей новое значение;
  • Если переменной типа String присваивается переменная типа Variant, содержащая число, VBA автоматически преобразует это число в строку.

Оператор сложения (+)

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

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

  • Результатом сложения типа Single и Long будет Double;
  • Результатом сложения типа Date с любым другим типом данных всегда будет Date;
  • Если результат превышает диапазон типа Integer, то VBA преобразует его в Long;
  • Если результат превышает типы Long, Single, Date, то VBA преобразует его в Double;
  • Если любой операнд в выражении сложения является Null, то результатом выражения сложения также будет Null.

Напомним порядок увеличения точности для численных типов данных: Byte, Integer, Long, Single, Double, Currency.

Следует сказать, что надо четко понимать как VBA преобразует типы данных в результате арифметических операций. Это поможет в дальнейшем избежать многих «ненужных» ошибок при написании кода.

Оператор вычитания (-)

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

Оба операнда в выражении вычитания должны быть численными переменными (выражениями) или строковыми выражениями, которое VBA может преобразовать в число. Можно использовать оператор вычитания для работы с датами.

VBA использует те же правила для определения типа данных результата выражения вычитания, что и для выражений, использующих оператор сложения. Но, есть дополнение:
Если оба операнда в выражении являются типом Date, то результат выражения будет иметь тип Double.

Оператор умножения (*)

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

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

Оператор деления (/)

Оператор деления с плавающей точкой выполняет обычное арифметическое деление своих операндов.

В выражениях деления первый операнд делится на второй операнд — результатом деления является частное.

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

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

Типом данных операции деления с плавающей точкой является Double, за исключением:

  • Оба операнда в выражении деления имеют тип Integer или Single — результат Single;
  • Если результат выражения не переполняет диапазон значений для типа Single.

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

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

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

Перед выполнением операции целочисленного деления VBA округляет каждый операнд до числа типа Integer или Long (такой же тип имеет и результат целочисленного деления).

VBA отбрасывает (но не округляет!) любой дробный остаток результата выражения целочисленного деления. Например, выражения 225 и 245 будут иметь один и тот же результат = 4.

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

Деление по модулю (Mod)

Деление по модулю как бы дополняет целочисленное деление. В делении по модулю выражение возвращает только остаток операции деления как целое.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0

Остальные свойства деления по модулю идентичны целочисленному делению.

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

Оператор возведения в степень возводит число в степень.

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

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

Результат выражения имеет тип Double.

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

Подведем итог вышеизложенному:

Арифметические операторы VBA

Оператор Синтаксис Описание
+ A + B Сложение: складывает А и В.
A — B Вычитание: вычитает из А В.
* A * B Умножение: перемножает А на В.
/ A / B Деление: делит А на В.
A B Целочисленное деление: делит А на В, отбрасывая дробную часть. Результат — целое число.
Mod A Mod B Деление по модулю: делит А на В, возвращая только остаток операции деления как целое число.
^ A ^ B Возведение в степень: возводит А в степень В.

В начало страницы

В начало страницы

Источник

Операторы VBA: арифметические, логические, сравнения, присвоения

Операторы VBA: арифметические, логические, сравнения, присвоения

Оператор — это наименьшая способная выполняться единица кода VBA. Оператор может объявлять или определять переменную, устанавливать параметр компилятора VBA или выполнять какое-либо действие в программе.

Арифметических операторов в VBA всего 7. Четыре стандартных: сложение (+), вычитание (-), умножение (*), деление (/) и еще три:

  • возведение в степень (^), например 2^3 = 8;
  • целочисленное деление (). Делит первое число на второе, отбрасывая (не округляя) дробную часть. Например, 52 = 2;
  • деление по модулю (Mod). Делит первое число на второе, возвращая только остаток от деления. Например, 5 Mod 2 = 1.

Оператор присвоения в VBA — знак равенства. Можно записывать так: Let nVar = 10

а можно еще проще: nVar = 10

Во втором случае не путайте знак равенства с оператором равенства.

Выражение nVar = 10 значит «присвоить переменной nVar значение 10», а если строка выглядит так:

If (nVar = 10) то это значит «если значение переменной nVar равно 10».

Если переменной нужно назначить объект, то делается это другими способами.

Операторов сравнения в VBA всего 8:

  • равенство (=), например, If (nVar = 10);
  • больше, чем и меньше, чем (> и 10) ;
  • больше или равно и меньше или равно (>= и ≤), например, If (nVar >= 10) ;
  • не равно (<>), например, If (nVar<>10) ;
  • сравнение объектов (Is). Определяет, ссылаются объектные переменные на тот же объект или на разные, например, If (obj1 is obj2) ;
  • подобие (Like). Сравнивает строковый объект с шаблоном и определяет, подходит ли шаблон.

Операторы сравнения всегда возвращают true или false — true, если утверждение истинно, и false, если ложно.

Немного про сравнение строковых значений:

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

Option Compare Text

Чуть подробнее про оператор Like. Общий его синтаксис выглядит как

Выражение1 Like Выражение2

При этом Выражение1 — любое текстовое выражение VBA, а Выражение2 — шаблон, который передается оператору Like. В этом шаблоне можно использовать специальные подстановочные символы

Источник

Vba excel возведение степень

Арифметические операции в 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 в диалоговом окне

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

Знак (-) используется для выполнения операции вычитания, а также для обозначения отрицательных чисел (когда ставится перед переменной или выражением и означает тоже самое, что и умножение на -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»

Знак (*) используется для выполнения операции умножения, результатом этой операции является произведение операндов. Для определения типа данных результата выражения умножения 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

Источник

Арифметические операции в 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

AndreA SN

1014 / 118 / 2

Регистрация: 26.08.2011

Сообщений: 1,113

Записей в блоге: 2

1

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

06.11.2014, 22:10. Показов 31622. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Ребята. Не математик я. Как возвести в степень число в VBA?
Степень — целочисленная переменная. Возводим в степень двойку.
Как, например возвести 2 в степень 8, не прибегая к For-циклу?
Покопал справку VBA — там нет такой функции. А лепить цикл — как-то нетехнично выглядит… Или может я не прав?
А математику забыл

Добавлено через 3 минуты
))) попытаться сформировать вопрос — всегда оказаться ближе к ответу)))

Visual Basic
1
2
3
4
5
6
7
Sub Степень()
' возводит любое число в любую степень.
' но почему-то этого нет в справке VBA
d = 2
f = 4
df = 2 ^ 4
End Sub



0



Апострофф

Заблокирован

06.11.2014, 22:19

2

Вопрос решен?

Добавлено через 7 минут

Цитата
Сообщение от AndreA SN
Посмотреть сообщение

лепить цикл — как-то нетехнично выглядит…

Смотря по ситуации, чаще всего умножить число само на себя n раз гораздо быстрее, чем возводить его в степень…



1



AndreA SN

1014 / 118 / 2

Регистрация: 26.08.2011

Сообщений: 1,113

Записей в блоге: 2

06.11.2014, 22:36

 [ТС]

3

Апострофф, спасибо))) развеял нубские сомнения)))

Добавлено через 1 минуту
задушила жаба — прям не могу. нашел еще один способ — вполне легальный)))

Visual Basic
1
2
3
4
5
6
Sub Степень()
' второй способ возведения в степень через логарифм
d = 2
f = 4
df = Exp(Log(d) * f)
End Sub

Добавлено через 1 минуту
Чем он отличается от предыдущего?



0



Апострофф

Заблокирован

06.11.2014, 22:56

4

И степень, и логарифм проиграют в

реальных

случаях возведения в конечную целую степень (конечность определяется опытным путем).



0



1014 / 118 / 2

Регистрация: 26.08.2011

Сообщений: 1,113

Записей в блоге: 2

06.11.2014, 22:59

 [ТС]

5

в чем именно проиграют? во времени?

Добавлено через 12 секунд
или в точности?



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

07.11.2014, 06:01

6

Цитата
Сообщение от AndreA SN
Посмотреть сообщение

но почему-то этого нет в справке VBA

Кто Вам сказал такую ерунду?

Миниатюры

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



1



1014 / 118 / 2

Регистрация: 26.08.2011

Сообщений: 1,113

Записей в блоге: 2

28.09.2015, 09:01

 [ТС]

7

русскоязычная справка)))



0



Модератор

Эксперт функциональных языков программированияЭксперт Python

34707 / 19228 / 4039

Регистрация: 12.02.2012

Сообщений: 32,195

Записей в блоге: 13

28.09.2015, 10:09

8

Цитата
Сообщение от AndreA SN
Посмотреть сообщение

Чем он отличается от предыдущего?

— самое существенное отличие: не будет работать при d<= 0



2



Понравилась статья? Поделить с друзьями:
  • Как внести изменения в ячейку в excel на защищенном листе
  • Как вносить исправления в excel
  • Как внести изменения в шаблон word
  • Как внести изменения в файл word
  • Как внести изменения в файл excel