Vba excel знак числа

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

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

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

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

ABS(num) – Функция возвращает значение числа по модулю.

Exp(num) – Функция позволяет получить значение экспоненты, передаваемый параметр (максимальное значение ровно 709 782712893) является степенью, в которую нужно возвести экспоненту. Соответственно, если параметр равен 1, то мы получить чистое значение экспоненты.

Fix(num) – Функция возвращает целую часть от переданного дробного значения. Если переданное значение является отрицательным, то возвращается ближайшее отрицательное целое число, большее, либо равное указанному.

Int(num) – Математическая функция vba возвращает целую часть от переданного дробного значения. Если переданное значение является отрицательным, то возвращается ближайшее отрицательное целое число, меньшее, либо равное указанному.

Rnd(random) – Функция вернет число, входящее в диапазон от 0 до 1 в случайном порядке, при этом, само число 1 не входит в диапазон, а 0 – входит. Перед вызовом функции надо прописывать конструкцию Randomize, которая отвечает за включение генератора случайных чисел.

В зависимости от значения переданного параметра random, данная математическая функция vba работает следующим образом:

  • Параметр отсутствует или больше 0 — Генерация следующего случайного числа в последовательности. Повторный запуск программы генерирует аналогичную последовательность.
  • Параметр меньше 0 – Происходит генерация одного и того же числа, опираясь на переданный аргумент.
  • Параметр равен 0 — Происходит генерация одного и того же числа, опираясь на число из предыдущего вызова.

Round(num, [accr])  — Округление заданного числа (num) до заданной точности (accr).

Sgn(num) – Данная математическая функция vba позволяет узнать знак числа, переданного как аргумент. Функция vba вернет следующие значения:

  • 0 – Число равно 0
  • -1 – Число является отрицательным
  • 1 – Число является положительным.

Sql(num) – Квадратный корень из переданного числового параметра num.

Следующие математические функции vba являются тригонометрическими. В качестве параметра для большинства указывается значение угла в радианах. Для перевода градусов в радианы используется формула:

Угол (в радианах) = угол (в градусах) * pi / 180, где pi = 3.14159265358979

Atn(par) – Арктангенс переданного числа (угол в радианах), функция вернет значение в диапазоне от -pi/2 до pi/2 радиан

Cos(par)  — Косинус переданного числа (угол в радианах), функция вернет значение в диапазоне от -1 до 1.

Sin(par)  — Синус переданного числа (угол в радианах), функция вернет значение в диапазоне от -1 до 1.

Tan(par)  — Тангенс переданного числа (угол в радианах).

Log(par)  – Натуральный логарифм переданного числа.

Я не буду приводить примеры для всех приведенных выше математических функций VBA, а приведу только один пример кода для функций sin и cos. Откройте редактор VBA (комбинация клавиш Alt + F11), добавьте в проект новый модуль (меню Insert/Module). В моем случае имя модуля – module3, в редакторе кода для заданного модуля пропишите следующие строки:

Sub Module3()
 
Dim oWord As Object, oDoc As Object, oSel As Object, oFont As Object
Dim i As Integer, j As Integer
i = 0: j = 0
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents
oDoc.Add
Set oSel = oWord.Selection
oWord.Visible = True
Set oFont = oSel.Font
With oFont
    .Size = 15
    .Name = "Times New Roman"
    .Bold = True
    .ColorIndex = 2
End With
 
oSel.TypeText "Синус угла: от 0 до 360 с шагом 10"                                                                                                                          ' математические функции vba
With oFont
    .Size = 12
    .Bold = False
    .Bold = True
    .ColorIndex = 0
End With
 
oSel.TypeParagraph
oSel.TypeParagraph
 
Do While i <= 360
Dim my_var As String
my_var = Radianus(i)
    oSel.TypeText Sin(my_var) & vbTab & vbTab & "(" & i & ")"
    oSel.TypeParagraph
    i = i + 10
Loop
With oFont
    .Size = 15
    .Name = "Times New Roman"
    .Bold = True
    .ColorIndex = 2
End With
oSel.TypeParagraph
oSel.TypeParagraph
 
oSel.TypeText "Косинус угла: от 0 до 360 с шагом 10"                                                                                                                ' математические функции vba
With oFont
    .Size = 12
    .Bold = False
    .Bold = True
    .ColorIndex = 0
End With
 
oSel.TypeParagraph
oSel.TypeParagraph
 
Do While j <= 360
my_var = Radianus(j)
    oSel.TypeText Cos(my_var) & vbTab & vbTab & "(" & j & ")"
    oSel.TypeParagraph
    j = j + 10
Loop
 
End Sub
Function Radianus(c)
    Dim m_rad, m_pi
    m_pi = 3.14159265358979
    Radianus = c * m_pi / 180
End Function

В данном случае мы создаем новый документ Word, добавляем в него форматированный (объект Font) текст, содержащий параметры значений для синуса и косинуса. Я выбрал диапазон значений от 0 до 360 градусов, используя цикл vba do…loop.

Функция Sgn

Sgn(Number)

Функция Sgn (Sign) определяет знак аргумента

Возвращаемое значение

Функция возвращает величину с типом данных Variant(Integer) следующим образом:

Положительный аргумент Возвращается 1
Отрицательный аргумент Возвращается -1
0 Возвращается 0

Параметры

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

Если аргумент не может быть оценен как число, генерируется ошибка времени исполнения Type mismatch

Пример

' Определяем знак числа

Dim Znak
Znak=Sgn(77) ' возвращает 1
Znak=Sgn(-10) ' возвращает -1
Znak=Sgn(0) ' возвращает 0

Категория
Математические функции

Добавил:

Upload

Опубликованный материал нарушает ваши авторские права? Сообщите нам.

Вуз:

Предмет:

Файл:

2013_Lektsia_VBA-1.doc

Скачиваний:

25

Добавлен:

29.05.2015

Размер:

1.25 Mб

Скачать

Таблица 2

Функция

Пример

использования

Описание

Тип
возвращаемого результата

Abs

Abs(x)

Модуль числа
x

Совпадает
с типом числа x

Atn

Atn(x)

Арктангенс
числа x

Double

Cos

Cos(x)

Косинус
числа x

Double

Exp

Exp(x)

Экспоненциальная
функция
(в степени x)

Double

Fix

Fix(x)

Возвращает
целую часть числа x.
Еслиx— отрицательное,
то возвращаемое значение округляется
вбольшуюсторону (напр., еслиx=-1.5, возвращается
-1).

Integer

Int

Int(x)

Возвращает
целую часть числа x.
Еслиx— отрицательное,
то возвращаемое значение округляется
в меньшую сторону (напр., еслиx=-1.5,
возвращается -2).

Integer

Log

Log(x)

Натуральный
логарифм числа x

Double

Rnd

Rnd
илиRnd(x)

Генерируется
случайное число. Если аргумент не
указан – генерируется число в диапазоне

от 0 до 1

Single

Sgn

Sgn(x)

Знак числа
(1 0 -1)

Integer

Sin

Sin(x)

Синус числа
x

Double

Sqr

Sqr(x)

Квадратный
корень из x

Double

Tan

Tan(x)

Тангенс
числа x

Double

Дополнение к основным математическим
функциям
VBA:

  • Logn(x)
    = Log(x)
    / Log(n)

  • Для
    перевода x
    из градусов в радианы: x
    = x
    * π / 180

  • IsNumeric
    ()– встроенная функцияVBA– возвращаетTrue, если
    ее аргумент является числом (строка),
    иFalse– в противном
    случае.

  • Val
    ()встроенная функцияVBA— преобразует переданную ей строку в
    число.

  • InputBox
    ()
    – выдает запрос на ввод значения;
    возвращает строковое значение.

Примеры ввода и вывода значений

Ввод:

  • x=5.7
    (оператор присваивания);

  • x
    =
    Worksheets(1).RangeA1″).Value
    (значение считывается из ячейки А1);

  • x
    = InputBox(«Enter
    Number:
    «, «Calculate
    Factorial»)(создается окно ввода значений переменнойхи указываются соответствующие
    комментарии).

Рис.
20. Окно ввода значений

Вывод:

  • Cells(1,2).Value=5
    (присваивает
    ячейке В1 текущего рабочего листа
    активной рабочей книги значение 5);

  • Worksheets(1).Range(«A1:B2»).Value
    = 10 (присваивание
    блоку ячеек значения, равного 10);

  • Range(«D15″).Value=»Test»
    (присваивание ячейке текущего
    рабочего листа активной рабочей книги
    значения Test);

MsgBox
(x)
(создание окна сообщений, пример
результата см. рис. 21).

Рис. 21. Результат
выполнения оператора вывода MsgBox (x)

Примеры на использование обращений
к функции и процедуре

Пример
1:

Sub
Call_Function()

Dim
var1
As Integer

Dim
var2 As
Integer

Dim
var3 As
Integer

var1 = 5

var2 = 10

var3 = Multiply(var1,var2)

MsgBox (var3)

End
Sub

________________________________________________

Function
Multiply(ByVal
var1 As
Integer
,
ByVal
var2 As
Integer
)

Multiply
= var1
* var2

End
Function

Значение строк программы (пример 1)

Таблица 3

Строка
программы

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

Sub
Call_Function()

начало процедуры с указанием
имени процедуры

Dim
var1
As Integer

Dim
var2 As
Integer

Dim
var3 As
Integer

блок описания

(представляется
переменная с именем var1
и указывается тип переменной var1
как целочисленный)

var1
= 5

var2 = 10

блок ввода

(присваивается
переменной var1
значение 5)

var3
= Multiply(var1,
var2)

переменной
по имени var3
присваивается значение. Причем это
значение появляется в результате
вызова функции Multiply
и передачи ей значений переменных
var1,
var2,
равных соответственно 5 и 10

MsgBox
(var3)

оператор вывода

(вызывается
окно сообщений, где представляется
значение переменной var3)

End
Sub

конец
процедуры

___________________________

граница
между процедурой и функцией одного
модуля

Function
Multiply(ByVal
var1 As
Integer
,
ByVal
var2 As
Integer)

начало функции с

указанием
имени функции (Multiply),
в скобках указывается способ передачи
значений переменных (ByVal
– по значению, имя переменной –var1,
тип переменной – As
Integer;
подобным образом, через запятую,
указывается информацию о другой
переменной – var2)

Multiply =
var1 * var2

Результат
умножения значений переменных var1
на var2
является значением функции. Внимание:
имя функции и имя объекта, куда
записывается расчетное значение
функции – одинаковое.

End
Function

Конец
функции

Пример 2:

Sub
DDDD()

Dim
x
As Double

Dim
y As
Double

Dim
z As
Double

x
= 1.1

y
= 2.2

MsgBox (x)

MsgBox (y)

TTTT x,y

вызываем
процедуру по имени ТТТТ и передаем
значения переменных x и y

MsgBox
(y)

MsgBox
(x)

z=
FFF(x)

MsgBox
(z)

End
Sub

_______________________________

Function
FFF(ByVal
x As
Double
)

FFF = 1/x^2

End
Function

______________________________________

Sub
TTTT(ByVal
x As
Double, ByRef

y As
Double
)

процедуре
ТТТТ передаются значения х=1.1 по
значению (способные не изменяться при
выходе из процедуры), у=2.2 по ссылке
(способные изменяться при выходе из
процедуры)

MsgBox (y)

y=x+y

MsgBox (y)

x=5.5

MsgBox (x)

End
Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Математические функции (Visual Basic)

Visual Studio 2013

Методы класса Math предоставляют тригонометрические, логарифмические и других общих математические функции.

Заметки

В следующей таблице перечислены методы класса Math . Можно использовать их в программе Visual Basic.

Метод .NET Framework

Описание

Abs

Возвращает абсолютное значение числа.

Acos

Возвращает угол, косинус которого равен указанному числу.

Asin

Возвращает угол, синус которого равен указанному числу.

Atan

Возвращает угол, тангенс которого равен указанному числу.

Atan2

Возвращает угол, тангенс которого равен отношению двух указанных чисел.

BigMul

Возвращает полный продукт 2 32 разрядных чисел.

Ceiling

Возвращает наименьшее целое значение, которое меньше или равно указанному Decimal или Double.

Cos

Возвращает косинус указанного угла.

Cosh

Возвращает гиперболический косинус указанного угла.

DivRem

Возвращает частное 2 32 или 64 разрядного разрядных знаковых целых чисел, а также возвращает остаток в параметре вывода.

Exp

Возвращает e (основание натуральных логарифмов), возведенное в заданную степень.

Floor

Возвращает наибольшее целое число, которое меньше или равно числу указанного типа Decimal или Double.

IEEERemainder

Возвращает остаток от деления, результаты из указанного числа другим указанным количеством.

Log

Возвращает естественный ( e) базового логарифм заданного числа или логарифм заданного числа в определенной базе.

Log10

Возвращает логарифм с основанием 10 указанного числа.

Max

Возвращает большее 2 чисел.

Min

Возвращает меньшее из двух чисел.

Pow

Возвращает указанное число, возведенное в указанную степень.

Round

Возвращает значение Decimal или значение Double, округленное до разным значений или с указанным количеством цифр.

Sign

Возвращает значение типа Integer, показывающее знак числа.

Sin

Возвращает синус указанного угла.

Sinh

Возвращает гиперболический синус указанного угла.

Sqrt

Возвращает квадратный корень из указанного числа.

Tan

Возвращает тангенс указанного угла.

Tanh

Возвращает гиперболический тангенс указанного угла.

Truncate

Вычисляет неотъемлемую часть номера, определенных в Decimal или Double.

Для использования этих функций без уточнения импортировать пространство имен Math в проект, добавив следующий код в начало файла источника:

Imports System.Math

Пример

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

‘ Returns 50.3.

Dim MyNumber1 As Double = Math.Abs(50.3)

‘ Returns 50.3.

Dim MyNumber2 As Double = Math.Abs(-50.3)

В этом примере метод Atan класса Math используется для вычисления значения числа пи.

Public Function GetPi() As Double

‘ Calculate the value of pi.

Return 4.0 * Math.Atan(1.0)

End Function

В этом примере метод Cos класса Math используется для возврата косинуса угла.

Public Function Sec(ByVal angle As Double) As Double

‘ Calculate the secant of angle, in radians.

Return 1.0 / Math.Cos(angle)

End Function

В этом примере метод Exp класса Math используется для возврата числа e, возведенного в степень.

Public Function Sinh(ByVal angle As Double) As Double

‘ Calculate hyperbolic sine of an angle, in radians.

Return (Math.Exp(angle) — Math.Exp(-angle)) / 2.0

End Function

В этом примере метод Log класса Math используется для возврата натурального логарифма числа.

Public Function Asinh(ByVal value As Double) As Double

‘ Calculate inverse hyperbolic sine, in radians.

Return Math.Log(value + Math.Sqrt(value * value + 1.0))

End Function

В этом примере метод Round класса Math используется для округления числа до ближайшего целого числа.

‘ Returns 3.

Dim MyVar2 As Double = Math.Round(2.8)

В этом примере метод Sign класса Math используется для определения знака числа.

‘ Returns 1.

Dim MySign1 As Integer = Math.Sign(12)

‘ Returns -1.

Dim MySign2 As Integer = Math.Sign(-2.4)

‘ Returns 0.

Dim MySign3 As Integer = Math.Sign(0)

В этом примере метод Sin класса Math используется для возврата синуса угла.

Public Function Csc(ByVal angle As Double) As Double

‘ Calculate cosecant of an angle, in radians.

Return 1.0 / Math.Sin(angle)

End Function

В этом примере метод Sqrt класса Math используется для вычисления квадратного корня числа.

‘ Returns 2.

Dim MySqr1 As Double = Math.Sqrt(4)

‘ Returns 4.79583152331272.

Dim MySqr2 As Double = Math.Sqrt(23)

‘ Returns 0.

Dim MySqr3 As Double = Math.Sqrt(0)

‘ Returns NaN (not a number).

Dim MySqr4 As Double = Math.Sqrt(-4)

В этом примере метод Tan класса Math используется для возврата тангенса угла.

Public Function Ctan(ByVal angle As Double) As Double

‘ Calculate cotangent of an angle, in radians.

Return 1.0 / Math.Tan(angle)

End Function

Требования

Класс: Math

Пространство имен: System

Понравилась статья? Поделить с друзьями:
  • Vba excel знак табуляции
  • Vba excel знак переноса строки
  • Vba excel знак неравенства
  • Vba excel знак не равно
  • Vba excel звуковой сигнал