После числа vba excel

SoftIce, вашу мысль понял, но если

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

ТС уже знает что значат эти знаки

, то ведь понятно

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

зачем ставить их после числа.

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

Visual Basic
1
2
Const A0 As Double = 0
'равнозначно 'Const A0# = 0

Таблицу типов/символов выложил для инфо. Копипастом только знак неправильно вставился — $
Другой вопрос, что ТС не знал, что VBA автоматом целое число, если не указан тип, помечает как Integer (если оно влезает в этот тип). И при арифметики и прочих операциях нужно это иметь ввиду, как вы и отметили.
Но все это вопрос преобразования типов данных интерпретатором. Я ответил именно на «# после числа».

Не по теме:

Появилось немного времени, вон сколько букв написал… редкость :)

Добавлено через 1 час 22 минуты
Хм, старею. Для VBA (x64), cимволом объявления типаLongLong является крышка (^).

Visual Basic
1
MsgBox 2000000^ * 2000000^

сожрет. Без крышек Overflow. По аналогии с Integer.

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

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

===================================

Option Explicit
Function DigitsAfter(sInput, sPrefix, Optional MatchCase As Boolean = False) As String
    Dim re As Object
    Dim S As String
    Dim sPatPrefix As String
    Const sPat As String = "D"

'Intialize Regex engine
Set re = CreateObject("vbscript.regexp")
With re
    .Global = True
    .ignorecase = Not MatchCase
End With

'Generate the digit prefix
re.Pattern = "(.)"
sPatPrefix = ".*" & re.Replace(sPrefix, "$1")

'Remove characters up to and including the prefix
re.Pattern = sPatPrefix
    If re.test(sInput) = False Then

'Exit if prefix not in string
        DigitsAfter = "Digit Prefix not in String"
        Exit Function

'now remove all the non-digits that are left
    Else
        S = re.Replace(sInput, "")
        re.Pattern = sPat
        DigitsAfter = re.Replace(S, "")
    End If
End Function

=====================================

Вот короткая процедура, показывающая, как ее можно использовать в большем макросе:

======================================

Option Explicit
Sub TestDigitFunction()
    Const S As String = "abc12x97J*24AAA123"

    MsgBox S & vbLf & DigitsAfter(S, "J*")

End Sub

======================================

Как вывести в конкретную ячейку число с заданным форматом?

Юрий_Нд

Дата: Суббота, 25.05.2019, 14:02 |
Сообщение № 1

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Доброго дня всем.
Подскажите пожалуйста как вывести в конкретную ячейку число с заданным форматом, то есть с заданным количеством знаков после запятой.
Пытаюсь применить такой способ:
[vba]

Код

.Cells(7, 4) = Format(sl, «0.00»)

[/vba]но ничего не получается.
Выводится тот формат, который был задан «в ручном режиме» через «Формат ячеек» — «Число» — «Числовой» — «Количество десятичных знаков»
Спасибо _________ Юрий.

Сообщение отредактировал Юрий_НдСуббота, 25.05.2019, 14:08

 

Ответить

_Igor_61

Дата: Суббота, 25.05.2019, 16:31 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 504


Репутация:

90

±

Замечаний:
0% ±


Excel 2007

Наверное, так: [vba]

Код

.Cells(7, 4) =NumberFormat = «#,##0.00»

[/vba] Если разряды не нужны, уберите решетки

Сообщение отредактировал _Igor_61Суббота, 25.05.2019, 16:33

 

Ответить

Юрий_Нд

Дата: Суббота, 25.05.2019, 19:55 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

_Igor_61, простите, что-то не получается.

К сообщению приложен файл:

123-6.xlsm
(12.4 Kb)

 

Ответить

_Igor_61

Дата: Суббота, 25.05.2019, 20:29 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 504


Репутация:

90

±

Замечаний:
0% ±


Excel 2007

[vba]

Код

With Sheets(1)
.Cells(7, 4) = x
.Cells(7, 4).NumberFormat = «#,##0.00»
End With

[/vba]

 

Ответить

Юрий_Нд

Дата: Суббота, 25.05.2019, 22:51 |
Сообщение № 5

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

_Igor_61, спасибо, теперь всё нормально.
Однако:
1. Непонятно назначение решеток. Что с решетками, что без них, никакой разницы не вижу.
2. Хотелось бы цифру разместить по центру ячейки. Вот такая громоздкая конструкция
[vba]

Код

Range(7, 4).Select
    With Selection
        .HorizontalAlignment = xlCenter
    End With

[/vba] работает. Однако хотелось бы упростить, насколько это возможно.

 

Ответить

Alex2005-10

Дата: Суббота, 25.05.2019, 22:59 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

Можно так сделать:

Cells(1, 1).NumberFormat = «0.000»
Cells(1, 1).HorizontalAlignment = xlCenter

Вообще действие Select лучше не использовать, тормозит работу если данных много

Сообщение отредактировал Alex2005-10Суббота, 25.05.2019, 23:04

 

Ответить

Юрий_Нд

Дата: Суббота, 25.05.2019, 23:04 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Alex2005-10, спасибо, я так и сделал, так для чего решетки там были нужны?

Сообщение отредактировал Юрий_НдСуббота, 25.05.2019, 23:06

 

Ответить

Alex2005-10

Дата: Суббота, 25.05.2019, 23:10 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 5


Репутация:

1

±

Замечаний:
0% ±


Excel 2010

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

Range(7, 4).Select
With Selection
.HorizontalAlignment = xlCenter
End With

=

Cells(7, 4).HorizontalAlignment = xlCenter

 

Ответить

Юрий_Нд

Дата: Суббота, 25.05.2019, 23:15 |
Сообщение № 9

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Да, спасибо, я так уже сделал…

 

Ответить

Юрий_Нд

Дата: Суббота, 25.05.2019, 23:36 |
Сообщение № 10

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Кстати, Алекс, код ВБА подправьте, Борода этого не любит…
[moder]Никто из администрации этого не любит[/moder]

Сообщение отредактировал _Boroda_Понедельник, 27.05.2019, 11:45

 

Ответить

_Igor_61

Дата: Воскресенье, 26.05.2019, 07:13 |
Сообщение № 11

Группа: Проверенные

Ранг: Ветеран

Сообщений: 504


Репутация:

90

±

Замечаний:
0% ±


Excel 2007

Юрий_Нд, решетки для разделения групп разрядов — если много цифр

 

Ответить

bmv98rus

Дата: Воскресенье, 26.05.2019, 09:21 |
Сообщение № 12

Группа: Друзья

Ранг: Участник клуба

Сообщений: 4009


Репутация:

760

±

Замечаний:
0% ±


Excel 2013/2016


Замечательный Временно просто медведь , процентов на 20.

 

Ответить

Юрий_Нд

Дата: Воскресенье, 26.05.2019, 10:00 |
Сообщение № 13

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Спасибо товарищи, с решетками разобрался.
А вот можно ли как-то оптимизировать эту громоздкую конструкцию, то есть записать одной строчкой:
[vba]

Код

.Cells(10, 8) = x
.Cells(10, 8).NumberFormat = «#,##0.00»
.Cells(10, 8).HorizontalAlignment = xlCenter

[/vba]

 

Ответить

RAN

Дата: Воскресенье, 26.05.2019, 10:27 |
Сообщение № 14

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

можно ли как-то оптимизировать

Весьма странное и вольное толкование понятия.
Записать можно, но зачем?
[vba]

Код

.Cells(10, 8) = x:.Cells(10, 8).NumberFormat = «#,##0.00»:.Cells(10, 8).HorizontalAlignment = xlCenter

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

Юрий_Нд

Дата: Воскресенье, 26.05.2019, 12:16 |
Сообщение № 15

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

RAN, если только так, тогда я за первоначальный вариант.
Вообще-то, мне больше всего не нравится, что приходится три раза писать:
[vba][/vba]

 

Ответить

Pelena

Дата: Воскресенье, 26.05.2019, 12:18 |
Сообщение № 16

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Используйте With


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Юрий_Нд

Дата: Воскресенье, 26.05.2019, 12:22 |
Сообщение № 17

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Pelena, а этот With, позволяет в качестве номеров строк и столбцов использовать переменные?

 

Ответить

Pelena

Дата: Воскресенье, 26.05.2019, 12:28 |
Сообщение № 18

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

With позволяет не , а один
[vba]

Код

With .Cells(10, 8)
.Value = x
.NumberFormat = «#,##0.00»
.HorizontalAlignment = xlCenter
End With

[/vba]


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Юрий_Нд

Дата: Воскресенье, 26.05.2019, 12:44 |
Сообщение № 19

Группа: Проверенные

Ранг: Обитатель

Сообщений: 441


Репутация:

19

±

Замечаний:
0% ±


Excel 2013

Pelena, отлично, пока мне больше всего нравится такая запись:
[vba]

Код

s = 12: c = 3
With .Cells(s, c): .Value = x: .NumberFormat = «#,##0.00»: .HorizontalAlignment = xlCenter: End With

[/vba]Но как я думаю, нет предела совершенству, если будет что-то поинтереснее пишите, буду очень признателен.

 

Ответить

_Igor_61

Дата: Воскресенье, 26.05.2019, 13:11 |
Сообщение № 20

Группа: Проверенные

Ранг: Ветеран

Сообщений: 504


Репутация:

90

±

Замечаний:
0% ±


Excel 2007

bmv98rus, спасибо за ссылку, очень хорошее объяснение

 

Ответить

Преобразование чисел, дат и строк в настраиваемый текстовый формат из кода VBA Excel с помощью функции Format. Синтаксис, параметры, символы, примеры.

Format – это функция, которая преобразует число, дату или строку в текст, отформатированный в соответствии с именованным выражением формата или инструкциями, составленными из специальных символов.

Синтаксис и параметры

Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear])

  • Expression – любое допустимое выражение (переменная), возвращающее числовое значение или строку (обязательный параметр).
  • FormatExpression – выражение формата, именованное или содержащее инструкции из специальных символов (необязательный параметр).
  • FirstDayOfWeek – константа, задающая первый день недели (необязательный параметр).
  • FirstWeekOfYear – константа, задающая первую неделю года (необязательный параметр).

Именованные выражения форматов

Именные форматы даты и времени

Имя формата Описание
General Date Стандартное отображение даты и времени в соответствии с параметрами системы.
Long Date Длинный формат даты.
Medium Date Средний формат даты.
Short Date Краткий формат даты.
Long Time Длинный формат времени.
Medium Time Средний формат времени.
Short Time Краткий формат времени.

Проверьте отображение даты и времени с использованием именованных форматов на вашем компьютере при помощи следующего кода VBA Excel:

Sub FormatDateTime()

MsgBox «General Date:  « & Format(Now, «General Date») & vbNewLine _

& vbNewLine & «Long Date:  « & Format(Now, «Long Date») & vbNewLine _

& vbNewLine & «Medium Date:  « & Format(Now, «Medium Date») & vbNewLine _

& vbNewLine & «Short Date:  « & Format(Now, «Short Date») & vbNewLine _

& vbNewLine & «Long Time:  « & Format(Now, «Long Time») & vbNewLine _

& vbNewLine & «Medium Time:  « & Format(Now, «Medium Time») & vbNewLine _

& vbNewLine & «Short Time:  « & Format(Now, «Short Time»)

End Sub

Скорее всего, результат будет таким:

Отображение даты и времени в соответствии с именованными форматами

Именованные форматы чисел

Имя формата Описание
General Number Стандартное отображение числа без знака разделителя групп разрядов.
Currency Денежный формат.
Fixed Отображение числа без знака разделителя групп разрядов с двумя цифрами после разделителя целой и дробной части.
Standard Отображение числа со знаком разделителя групп разрядов и с двумя цифрами после разделителя целой и дробной части.
Percent Процентный формат: отображение числа, умноженного на 100, со знаком процента (%), добавленного справа.
Scientific Отображение числа в экспоненциальном виде.
Yes/No Возвращается «Нет», если число равно 0, иначе отображается «Да».
True/False Возвращается «Ложь», если число равно 0, иначе отображается «Истина».
On/Off Возвращается «Выкл», если число равно 0, иначе отображается «Вкл».

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

Sub FormatNumber()

Dim n As Double

n = 2641387.7381962

‘n = 0

MsgBox «Форматируемое число = « & n & vbNewLine _

& vbNewLine & «General Number:  « & Format(n, «General Number») & vbNewLine _

& vbNewLine & «Currency:  « & Format(n, «Currency») & vbNewLine _

& vbNewLine & «Fixed:  « & Format(n, «Fixed») & vbNewLine _

& vbNewLine & «Standard:  « & Format(n, «Standard») & vbNewLine _

& vbNewLine & «Percent:  « & Format(n, «Percent») & vbNewLine _

& vbNewLine & «Scientific:  « & Format(n, «Scientific») & vbNewLine _

& vbNewLine & «Yes/No:  « & Format(n, «Yes/No») & vbNewLine _

& vbNewLine & «True/False:  « & Format(n, «True/False») & vbNewLine _

& vbNewLine & «On/Off:  « & Format(n, «On/Off»)

End Sub

Получаем следующий результат:

Отображение числа в соответствии с именованными форматамиОтображение нуля в соответствии с именованными форматами числа

Вместо вопросительного знака в отображении числа в формате Currency, по идее, должен быть знак валюты (₽ или руб.).

Специальные символы для выражений форматов

Символы для форматов даты и времени

Символ Описание
Точка (.) Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца в виде числа.
Пробел Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца прописью.
Двоеточие (:) Разделитель компонентов времени (часы, минуты, секунды).
d День в виде числа без нуля в начале (1–31).
dd День в виде числа с нулем в начале (01–31).
m Месяц в виде числа без нуля в начале (1–12). Если (m) следует после (h) или (hh), отображаются минуты (0–59).
mm Месяц в виде числа с нулем в начале (01–12). Если (mm) следует после (h) или (hh), отображаются минуты (00–59).
mmm Месяц прописью в сокращенном виде (янв–дек).
mmmm Полное название месяца (январь–декабрь).
y День года в виде числа (1–366).
yy Год в виде 2-значного числа (00–99).
yyyy Год в виде 4-значного числа (1900–9999).
h Часы в виде числа без нуля в начале (0–23).
hh Часы в виде числа с нулем в начале (00–23).
n (m) Минуты в виде числа без нуля в начале (0–59).
nn (mm) Минуты в виде числа с нулем в начале (00–59).
s Секунды в виде числа без нуля в начале (0–59).
ss Секунды в виде числа с нулем в начале (00–59).

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

Примеры отображения даты с помощью разных по количеству наборов символа d:

Sub DataIsD()

MsgBox «d:  « & Format(Now, «d») & vbNewLine _

& vbNewLine & «dd:  « & Format(Now, «dd») & vbNewLine _

& vbNewLine & «ddd:  « & Format(Now, «ddd») & vbNewLine _

& vbNewLine & «dddd:  « & Format(Now, «dddd») & vbNewLine _

& vbNewLine & «ddddd:  « & Format(Now, «ddddd») & vbNewLine _

& vbNewLine & «dddddd:  « & Format(Now, «dddddd»)

End Sub

Форматы даты, полученные с помощью разных по количеству наборов символа d

Символы для числовых форматов

Символ Описание
Точка (.) Десятичный разделитель.
Запятая (,) Разделитель групп разрядов. В отображаемых числах заполняется пробелом.
(0) Заполнитель, который отображает цифру или ноль. Используется, когда нужны ведущие нули или нули в конце числа.
(#) Заполнитель, который отображает цифру или ничего не отображает. Используется, когда не нужны ведущие нули или нули в конце числа.
(%) Заполнитель процента. Выражение умножается на 100, а знак процента (%) вставляется на той позиции, где он указан в строке формата.
(E- E+ e- e+) Экспоненциальный формат.

Примеры использования символов в выражениях числовых форматов VBA Excel:

Sub FormatNumber2()

Dim n As Double

n = 2641387.7381962

‘n = 0.2397842

MsgBox «Форматируемое число = « & n & vbNewLine _

& vbNewLine & «0.##:  « & Format(n, «0.##») & vbNewLine _

& vbNewLine & «000.###:  « & Format(n, «000.###») & vbNewLine _

& vbNewLine & «#,###.###:  « & Format(n, «#,###.###») & vbNewLine _

& vbNewLine & «0 %:  « & Format(n, «0 %») & vbNewLine _

& vbNewLine & «0.### E-:  « & Format(n, «0.### E-«) & vbNewLine _

& vbNewLine & «0.### E+:  « & Format(n, «0.### E+»)

End Sub

Символы для текстовых форматов

Символ Описание
At-символ (@) Заполнитель для символов, отображающий знак или пробел.
Амперсанд (&) Заполнитель для символов, отображающий знак или ничего (пустая строка).
Меньше (<) Принудительный перевод всех буквенных символов в нижний регистр.
Больше (>) Принудительный перевод всех буквенных символов в верхний регистр.

Примеры использования символов в выражениях строковых форматов VBA Excel:

Sub FormatString()

MsgBox «Номер телефона:  « & Format(«1234567890», «+7 (@@@) @@@-@@-@@») & vbNewLine _

& vbNewLine & «Серия и номер паспорта:  « & Format(«1234567890», «&& && &&&&») & vbNewLine _

& vbNewLine & «Нижний регистр:  « & Format(«Нижний регистр», «<«) & vbNewLine _

& vbNewLine & «Верхний регистр: « & Format(«Верхний регистр», «>»)

End Sub

Результаты форматирования строк с помощью специальных символов для функции Format

Форматы для различных значений одного выражения

Различные форматы для разных числовых значений

В выражении формата для чисел предусмотрено от одного до четырех разделов, отделяемых друг от друга точкой с запятой. Отображаемая строка зависит от значения, возвращенного параметром Expression функции Format.

Количество разделов Результат форматирования
Один раздел Выражение формата применяется ко всем значениям.
Два раздела Первый раздел применяется к положительным значениям и нулям, второй – к отрицательным значениям.
Три раздела Первый раздел применяется к положительным значениям, второй – к отрицательным значениям, третий – к нулям.
Четыре раздела Первый раздел применяется к положительным значениям, второй – к отрицательным значениям, третий – к нулям, четвертый – к значениям Null.

Пример использования четырех разделов в выражении формата числовых значений:

Sub FormatDifferentValues()

MsgBox «Число 1234,5678:  « & _

Format(1234.5678, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _

& vbNewLine & vbNewLine & «Число -25:  « & _

Format(25, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _

& vbNewLine & vbNewLine & «Число 0:  « & _

Format(0, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _

& vbNewLine & vbNewLine & «Null:  « & _

Format(Null, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null»)

End Sub

Различные форматы для разных строковых значений

В выражении формата для строк предусмотрено до двух разделов, отделяемых друг от друга точкой с запятой. Отображаемая строка зависит от текста, возвращенного параметром Expression функции Format.

Количество разделов Результат форматирования
Один раздел Выражение формата применяется ко всем строковым данным.
Два раздела Первый раздел применяется к строковым данным, второй – к значениям Null и пустым строкам («»).

Пример использования двух разделов в выражении формата строк:

Sub FormatString2()

MsgBox «Строка «Белка»:  « & _

Format(«Белка», «@;Пустая строка или Null») _

& vbNewLine & vbNewLine & «Пустая строка:  « & _

Format(«», «@;Пустая строка или Null») _

& vbNewLine & vbNewLine & «Строка «Null»:  « & _

Format(«Null», «@;Пустая строка или Null») _

& vbNewLine & vbNewLine & «Значение Null:  « & _

Format(Null, «@;Пустая строка или Null»)

End Sub

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

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

  • 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.

Понравилась статья? Поделить с друзьями:
  • После тебя скачать word
  • После сохранения таблиц excel
  • После сохранения word она не открывается
  • После создания диаграммы в microsoft excel для работы с ней появляются вкладки
  • После распознавания текста в word появляется рамка