Введение в VBA

advertisement
Оглавление
ГЛАВА 1 ЗАПИСЬ И СОХРАНЕНИЕ АЛГОРИТМОВ В EXCEL ................................................................. 3
§ 1. Введение ....................................................................................................................................................................... 3
1.1. Вызов редактора для написания текста алгоритма ...................................................................................................... 3
1.2. Окно немедленного выполнения ................................................................................................................................... 4
1.3. Сохранение и открытие документов с макросами ........................................................................................................ 4
1.4. Функции ............................................................................................................................................................................ 5
1.5. Процедуры ........................................................................................................................................................................ 5
1.6. Вызов функции ................................................................................................................................................................. 6
1.7. Вызов процедуры ............................................................................................................................................................. 6
1.8. Работа в редакторе .......................................................................................................................................................... 6
§ 2. Объекты и операторы ................................................................................................................................................... 7
2.1. Константы.......................................................................................................................................................................... 7
2.2. Особенности работы в русской версии Excel ................................................................................................................. 7
2.3. Переменные ..................................................................................................................................................................... 7
2.4. Символы арифметических операций ............................................................................................................................. 8
2.5. Встроенные функции ....................................................................................................................................................... 8
2.6. Арифметические выражения .......................................................................................................................................... 9
2.7. Операция объединения (конкатенации) строк.............................................................................................................. 9
2.8. Символы операций сравнения ........................................................................................................................................ 9
2.9. Символы логических операций..................................................................................................................................... 10
2.10. Логические выражения ................................................................................................................................................ 10
2.11. Приоритеты операторов .............................................................................................................................................. 11
2.12. Оператор присваивания .............................................................................................................................................. 12
2.13. Объявление переменных ............................................................................................................................................ 12
2.14. Несколько операторов в одной строке и перенос оператора .................................................................................. 14
2.15. Структура функции ....................................................................................................................................................... 14
2.16. Структура процедуры ................................................................................................................................................... 14
2.17. Ввод данных в диалоговом режиме. Функция InputBox........................................................................................... 15
2.18. Однострочный If / Then ............................................................................................................................................... 15
2.19. Многострочный If / Then / End If ................................................................................................................................. 15
2.20. Оператор If / Then / Else / End If .................................................................................................................................. 16
2.21. Оператор Select Case / Case / Case Else / End Select ................................................................................................... 16
2.22. Оператор цикла For / Next ........................................................................................................................................... 17
2.23. Оператор цикла DO While / Loop ................................................................................................................................ 18
2.24. Оператор цикла Do Until / Loop ................................................................................................................................... 19
1
2.25. Оператор выхода Exit ................................................................................................................................................... 19
2.26. Оператор объявления массива ................................................................................................................................... 19
2.27. Присваивание значений элементам массива ............................................................................................................ 20
2.28. Вложенные циклы ........................................................................................................................................................ 20
2.29. Процедуры ввода данных в ячейки. Свойства Cells и Range..................................................................................... 20
2.30. Ввод формул в ячейки. Свойства Formula и FormulaLocal......................................................................................... 22
2.31. Оператор With .............................................................................................................................................................. 22
2.32. Функции с аргументами–массивами. Свойство COUNT ............................................................................................ 23
2.33. Объект WorksheetFunction ........................................................................................................................................... 24
ГЛАВА 2 ПЕРЕМЕННЫЕ, ТИПЫ ДАННЫХ И ОБЛАСТИ ВИДИМОСТИ ......................................... 25
ГЛАВА 3 ОТЛАДКА МАКРОСОВ ................................................................................................................... 26
ГЛАВА 4 ВВОД ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ФОРМ ..................................................................... 27
ГЛАВА 5 ЗАДАЧИ ............................................................................................................................................... 28
ГЛАВА 6 ПРИЛОЖЕНИЯ ................................................................................................................................. 34
2
Приложение I
Свод основных операторов ................................................................................................................. 34
Приложение II
Функции рабочего листа и соответствующие методы объекта WorksheetFunction ...................... 35
Глава 1 Запись и сохранение алгоритмов в EXCEL
§ 1. Введение
В EXCEL реализовано средство для записи алгоритмов обработки данных.
Алгоритмы записываются по определенным правилам на языке Visual Basic for
Application (VBA) в форме функций или процедур. Тексты алгоритмов состоят из
отдельных строк. Каждая строка содержит инструкцию (или ее часть),
предписывающую процессору выполнить определенные действия. Такие
инструкции называют операторами.
1.1. Вызов редактора для написания текста алгоритма
Запустите Excel. Для работы с VBA нужно отобразить вкладку «Разработчик».
Вкладка «Разработчик» содержит средства создания макросов и форм, а также
средства для работы с XML. Для этого:
Щелкните кнопку «Office»
, затем
На странице «Основные» поставьте галочку
.
Редактор VBA вызывается кнопкой «Visual Basic»
на ленте «Разработчик»
или комбинацией Alt+F11. Тексты алгоритмов пишутся и сохраняются в модулях.
Новый модуль в окне редактора VBA создается цепочкой: Insert, Module. Модулям
автоматически присваиваются порядковые номера и все они сохраняются как части
файла EXCEL. Один модуль может содержать тексты и функций, и процедур.
На рисунке представлен модуль, содержащий тексты двух функций и одной
процедуры.
При желании, название модуля можно изменить на что-либо содержательное.
Для этого:
Выполните команду: View, Properties Window (окно Properties появится под
окном Project).
В окне Project выделите модуль (например, Module1).
3
В окне Properties щелкните справа от (Name), удалите содержимое, введите новое
имя и нажмите Enter.
Имена должны начинаться с буквы и могут быть до 40 символов в длину,
включая буквы, цифры и символы подчеркивания (_).
1.2. Окно немедленного выполнения
Окно немедленного выполнения — Immediate — можно отобразить нажав
комбинацию клавиш Ctrl+G или с помощью меню: View, Immediate Window. В этом
окне можно производить вычисления, мгновенно получая результат. Для вывода
результата используется оператор ? (синоним Print).
Например, напечатав в окне Immediate строку
? 2+2
и нажав Enter, в следующей строке получим 4.
Следующие строки также дадут в результате 4:
x = 2
? x^2
Строка
? sin(1)
выдаст число 0,841470984807897
Мы будем использовать окно Immediate для тестирования различных свойств
VBA.
1.3. Сохранение и открытие документов с макросами
Для сохранения текстов алгоритмов, файлу EXCEL надо присвоить формат
Книга Excel c поддержкой макросов (Кнопка «Office», Сохранить как, поле «Тип
файла»). Пиктограмма такого файла содержит восклицательный знак:
. Такие
файлы имеют расширение .xlsm.
При открытии книги EXCEL, содержащей макросы, происходит проверка на
надежность макросов, поскольку в рабочих книгах могут находиться потенциально
опасные макросы заражающие компьютер вирусами. Надежными считаются только
макросы, либо
удостоверенные действующей, не просроченной цифровой подписью, выданной
общепризнанным
центром
сертификации,
при
этом
разработчик,
удостоверивший макрос, должен быть надежным,
либо
открываемый документ должен находиться в надежном расположении (папка на
жестком диске или на сетевом ресурсе, зарегистрированная в Microsoft Office как
надежное расположение).
Все остальные макросы считаются ненадежными. Такими будут считаться и
макросы, которые вы будете создавать в процессе изучения VBA. Чтобы все-таки
можно было использовать такие макросы, придется временно разрешить
использование всех макросов. Для этого
Щелкните кнопку «Office»
4
, затем
.
Выберите
Центр
управления
безопасностью,
затем
щелкните
кнопку
.
Появится окно «Центр управления безопасностью»
Выбрать параметр «Включить все макросы (не рекомендуется, возможен запуск
опасной программы)».
Щелкнуть OK в этом окне, затем в окне «Параметры Excel».
Теперь можно открыть документ, содержащий макросы.
Внимание! По окончании работы со своим документом, содержащим макросы,
рекомендуется отключить этот режим!
Для редактирования написанных алгоритмов нужно вызвать редактор VBA,
выбрать (двойным щелчком) модуль, в котором находится нужный текст, и начать
редактирование.
Для редактирования написанной процедуры можно также воспользоваться
комбинаций клавиш Alt+F8 или цепочкой: вкладка ВИД, кнопка МАКРОС,
КОМАНДА МАКРОС. В списке имеющихся процедур-макросов выбирается нужная
строка и щелкается по кнопке ИЗМЕНИТЬ.
1.4. Функции
Ниже приведен пример функции, которая вычисляет сумму квадратов двух
чисел:
Function SumSq(x, y)
SumSq = x ^ 2 + y ^ 2
End Function
Здесь первая строка содержит оператор заголовка функции; вторая строка –
оператор присваивания, третья строка — оператор конца функции. Слова Function,
End – ключевые слова языка VBA. SumSq — имя функции (задается пользователем)
и одновременно переменная, x, y — аргументы (переменные).
1.5. Процедуры
Следующая процедура выдает сообщение "Пример процедуры":
5
Sub MyProc()
MsgBox "Пример процедуры"
End Sub
В первой строке расположен оператор заголовка процедуры, во второй строке –
оператор выдачи сообщения (в кавычках находится текст сообщения), в третьей
строке - оператор конца процедуры. Слова Sub, MsgBox — ключевые слова языка
VBA. MyProc — имя процедуры (задается пользователем). "Пример процедуры" –
текстовая константа (задается пользователем). Тексты процедур называют
МАКРОСАМИ.
Имена функций и процедур могут состоять из букв и цифр, но первым символом
должна быть буква. Имена не должны содержать пробелов, но могут содержать знак
подчеркивания (_). Внимание: имена функций и процедур не должны совпадать со
встроенными именами Excel, например, с именами встроенных функций (типа Sum,
Частное…), адресами ячеек (A1, Sum100…) и т. п.
1.6. Вызов функции
Вызов функции осуществляется так же, как и вызов стандартной функции Excel:
введением в ячейку имени функции с нужными аргументами. Например, формула
=SumSq(5;-3) вычисляет сумму квадратов чисел 5 и -3. При этом говорят, что
функции переданы значения аргументов 5 и -3.
Ввод имени функции в формулу в ячейку Excel можно осуществить либо
непосредственным набором имени на клавиатуре, либо с использованием мастера
функций. В последнем случае надо реализовать цепочку меню: вкладка ФОРМУЛЫ,
кнопка ВСТАВИТЬ ФУНКЦИЮ, выбрать из списка КАТЕГОРИИ строку
ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ и выбрать нужное имя (Excel автоматически
добавляет в этот список имена всех пользовательских функций, созданных
пользователем в текущей рабочей книге).
1.7. Вызов процедуры
Запуск процедуры реализуется цепочкой меню вкладка ВИД, кнопка МАКРОС,
команда МАКРОС или комбинацией клавиш Alt+F8. Из списка имен выбирается
нужное и щелкается по кнопке ВЫПОЛНИТЬ.
1.8. Работа в редакторе
В отличие от большинства текстовых процессоров, редактор VBA не только
отображает то, что вводит пользователь, но и вносит в текст изменения:
выделяет синим цветом ключевые слова;
выделяет зеленым цветом комментарии;
выделяет красным цветом синтаксические ошибки;
ключевые слова пишет с большой буквы.
Комментарии - это напоминания о том, что делает та или иная часть алгоритма.
Комментарии делаются пользователем для себя и не влияют на ход алгоритма.
Комментарии могут занимать целую строку или ее часть и отделяются от основного
текста апострофом:
6
Function Tg(x)
'функция вычисляет тангенс
Tg = sin(x)/cos(x)
'делить на нуль нельзя
End Function
Синтаксические ошибки – это нарушения правил языка VBA. Например,
синтаксической ошибкой будет отсутствие апострофа перед текстом комментария
или, скажем, неправильное написание ключевого слова.
Для удобочитаемости текстов программ помимо комментариев используются
отступы. Отступы не являются обязательными, но очень желательны. Для
получения отступа используется клавиша TAB.
§ 2. Объекты и операторы
2.1. Константы
арифметические (числовые ) 5, -123.0, 3.14, 2.4E15
текстовые (символьные)
"ABCD123F", "Mr. Brown"
логические (булевы)
True, False
даты
#08/31/97#
Число 2.4E15 записано в так называемом научном формате и равно 2,4 10 15
Текстовые константы – это любые цепочки символов, заключенные в двойные
кавычки.
Дата #08/31/97# соответствует 31.08.1997 г.
2.2. Особенности работы в русской версии Excel
Как видно из предыдущего пункта, при записи констант в VBA используются
американские региональные установки: десятичный знак — точка, а не запятая,
даты записываются в формате месяц/день/год.
Воспользуемся окном Immediate. Введем строку
? 2,3
Результат:
2
3
Запятая — разделитель списка.
? 2.3
2,3
При выводе десятичный разделитель соответствует текущим региональным
установкам, в нашем случае — запятая.
? 31.08.97
31,08 0,97
С точки зрения VBA здесь две десятичных дроби.
? #08/31/97#
31.08.1997
Вот теперь все правильно.
2.3. Переменные
Переменные – это области памяти, где программы сохраняют значения. Переменная
создается путем присвоения ей имени в любом месте программы. Имена могут
состоять из букв и цифр, но первым символом должна быть буква. Имена
7
переменных не должны содержать пробелов,
подчеркивания (_). Примеры правильных имен:
но
могут
содержать
знак
X, y1, FфGж19, ПроцСтавка, Mon_Income.
Переменные могут хранить все типы данных - арифметические, текстовые,
логические и даты. Тип переменных совпадает с типом данных, которые они
содержат. В процессе выполнения программ значения переменных могут
неоднократно меняться.
2.4. Символы арифметических операций
+
сложение
вычитание
*
умножение
/
деление
^
возведение в степень
\
целочисленное деление
Mod остаток от деления
&
конкатенация
2.5. Встроенные функции
Имена встроенных в VBA функций не всегда совпадают с соответствующими
функциями Excel:
Имя для
Описание
VBA
Abs
Абсолютное значение
Log
Натуральный логарифм
Показательная функция с
Exp
основанием e
Извлечение квадратного
Sqr
корня
Округление
Int
отбрасыванием дробной
части
Генерация
случайных
чисел,
равномерно
Rnd
распределенных
на
отрезке [0, 1]
Abs(- 4) = 4
Log(1) = 0
Имя для
Excel
ABS
LN
Exp(1) = 2.71
EXP
Sqr(9) = 3
КОРЕНЬ
Int(2,6) = 2
Int(-1,2) = -2
ЦЕЛОЕ
Rnd() (аргумент
не требуется)
СЛЧИС
Пример
Хуже того, в случае логарифма, например, Log в VBA — это натуральный
логарифм, а в рабочем листе Excel LOG — логарифм по произвольному основанию
(по умолчанию — 10). Поэтому будьте внимательны при использовании знакомых
функций и пользуйтесь справкой!
8
2.6. Арифметические выражения
Арифметические выражения строятся из арифметических констант, переменных,
функций и операций над ними. Частным случаем выражения является константа,
переменная или функция.
3.14
константа
X1
переменная
Cos(1.57)
функция
3*X^2 + z1
эквивалентно обычной записи 3 X 2 z1
a
2+a/b/c
эквивалентно 2
bc
2 a
(2+a)/b*c
эквивалентно
c
b
4 cos(x y)
(4+Cos(x+y))/(1+z) эквивалентно
1 z
Необходимо помнить, что вычисления выполняются слева направо в соответствии
со старшинством операций. Самой старшей является операция вычисления значения
функции, например Sin(X). Затем идет операция возведения в степень. Далее —
умножение и деление. Самым низким приоритетом обладают операции сложения и
вычитания и выполняются в последнюю очередь. Если выражение содержит
круглые скобки, то выражения в скобках вычисляются первыми.
2.7. Операция объединения (конкатенации) строк
Указанная операция обозначается знаком & и позволяет «склеивать» текстовые
константы и текстовые переменные.
Пример:
"Дорог" & "ой"
равно "Дорогой"
"mr. " & " Brown"
равно "mr. Brown"
2.8. Символы операций сравнения
=
равно
<>
неравно
<
меньше
>
больше
<=
меньше или равно
>=
больше или равно
Like
сравнение строк
Is
сравнение объектных переменных
Примеры использования операторов сравнения:
5 >= 4
равно True
"Миша" = "Маша"
равно False (текстовые константы не равны).
"Маша" > "Миша"
равно False («а» по алфавиту идет раньше «и»)
-1 = True
равно True (числовое значение True -1)
0 <> False
равно False (числовое значение False 0)
9
"Маша" Like "М*а"
равно True (* заменяет любое количество любых
символов)
"Маша" Like "М?[а-я]а"
равно True (? заменяет один любой символ, [а-я]
заменяет любой символ в диапазоне от «а» до «я»).
2.9. Символы логических операций
Not
логическое отрицание
And
логическое умножение (логическое «И»)
Or
логическое сложение (логическое «ИЛИ»)
Xor
исключающее «ИЛИ»
Imp
импликация (логическое следование)
Eqv
логическая эквивалентность
Пусть переменные L1 и L2 принимают логические значения. Следующая таблица
(таблица истинности) содержит результаты логических операций для всех
возможных комбинаций значений аргументов.
L1
L2
Not L1
L1 And L2
L1 Or L2
L1 Xor L2
L1 Imp L2
L1 Eqv L2
True
True
False
True
True
False
True
True
True
False
False
False
True
True
True
False
False
True
True
False
True
True
False
False
False
False
True
False
False
False
True
True
2.10. Логические выражения
False
константа;
True And 7 < 1
равно False;
True Or 8 = 9
равно True;
x1+x2 < 0
значение зависит от значений переменных x1 и x2;
X < 100 And X >= 50
значение зависит от значения X;
10
2.11. Приоритеты операторов
Арифметические
выше———————ниже
Возведение в степень (^)
Унарный минус (–)
Умножение и деление (*, /)
Целочисленное деление (\)
Остаток от деления (Mod)
Сложение и вычитание (+, –)
Конкатенация (&)
Обратите внимание, что в VBA приоритет возведения в степень (^) выше, чем
унарного минуса, а в ячейках Excel — наоборот. То есть
в VBA:
-1^2 = -1,
в Excel:
-1^2 = 1
Сравнение
выше————————ниже
Равно (=)
Неравно (<>)
Меньше (<)
Больше (>)
Меньше или равно (<=)
Больше или равно (>=)
Like
Is
Оператор Is используется для сравнения переменных, указывающих на объекты.
11
Логические
выше——————ниже
Отрицание Not
Логическое умножение And
Логическое сложение Or
Исключающее «ИЛИ» Xor
Логическая эквивалентность Eqv
Импликация Imp
2.12. Оператор присваивания
В общем виде оператор присваивания записывается следующим образом:
V = A,
где V - переменная (имя переменной), A - выражение (арифметическое, логическое
или текстовое). При выполнении оператора вначале вычисляется значение
выражения A (если выражение не является константой), а затем оно присваивается
переменной V. Следовательно, оператор присваивания не является равенством в
математическом смысле. Оператор X = X + 1 записан правильно. Здесь
производится сложение величины X с константой 1 и результат снова присваивается
переменной X.
Примеры операторов присваивания:
ПроцСтавка = 0,13
x1 = 1500 + 200
ПодНалог = ПроцСтавка * x1
В следующем примере переменной FullName присваивается конкатенация
(сумма) двух текстовых констант, в результате чего значение переменной станет
равно "Иванов И. И.":
FullName = "Иванов " & "И. И."
В результате выполнения следующих операторов значение переменной X будет
равно 9:
X = 1
X = X+2
X = 3*X
2.13. Объявление переменных
Dim имя1, имя2, …
Здесь имяn — имя переменной.
Перед использованием переменные должны быть объявлены. По умолчанию,
VBA не требует обязательного объявления переменных, однако опыт показывает,
12
что написание программ без объявления переменных часто приводит к
трудноуловимым ошибкам. Рассмотрим, например, следующий фрагмент:
Alpha = 2
Beta = 3
Gamma = Alfa + Beta
Чему будет равно значение Gamma? Нет, не 5, а 3. Нашли ошибку? Если мы в
первый раз используем переменную, ее значение равно 0. В приведенном фрагменте
ошибку найти несложно, а как с программой длиной хотя бы в 100 строк?
Чтобы VBA требовал обязательного объявления переменных, достаточно в
самом начале модуля вписать строчку
Option Explicit
Если выполнить команду Tools, Options, в диалоговом окне Options, во вкладке
Editor поставить флажок Require Variable Declaration:
то VBA будет вставлять оператор Option Explicit автоматически в начале каждого
нового модуля. Этот флажок нужно обязательно включить!
Если в нашем примере мы включим обязательное объявление переменных, и
опишем их таким образом:
Dim Alpha, Beta, Gamma
то при попытке выполнения этой программы VBA выдаст сообщение об ошибке
Таким образом, мы, по крайней мере, будем знать, что в коде есть ошибка, и не
будем гадать, почему у нас 2 + 3 = 3!
Уже объявленными считаются переменные:
совпадающие с именем функции,
перечисленные внутри скобок при объявлении функции.
Поэтому, не пытайтесь внутри функции или процедуры объявлять такие
переменные — вы получите сообщение об ошибке.
13
2.14. Несколько операторов в одной строке и перенос оператора
В одной строке через двоеточие можно записать несколько операторов.
Например,
T = "a1" : X1 = 0.13 * Y : X2 = X1 / 3.14
Для переноса оператора
подчеркивания ( _ ), например,
на
следующую
строку
используется
символ
Expenses = Price*2000 + _
Tax*2500 + 500
2.15. Структура функции
Текст функции должен содержать как минимум три строки.
Function Z(x, y)
Z = 2*x*y
End Function
Первая строка (строка заголовка) содержит имя функции, после которого
обязательны скобки. В скобках указываются имена аргументов (переменных).
Третья строка содержит оператор конца функции. Группа операторов, находящихся
между первой и последней строками, называется телом функции. Тело функции
должно содержать по крайней мере один оператор присваивания, в левой части
которого находится переменная, имя которой совпадает с именем функции. В
приведенном примере тело функции состоит из одного такого оператора.
2.16. Структура процедуры
Текст процедуры состоит из строки заголовка, тела и заключительной строки.
После имени процедуры идут пустые скобки. Например,
Sub Пример()
End Sub
У процедуры не должно быть аргументов, иначе Excel не выведет имя процедуры в
списке макросов. В рассмотренной процедуре отсутствует тело, поэтому она ничего
не делает.
Бывают ли процедуры с аргументами? Разумеется, бывают. Однако такие
процедуры могут быть вызваны только из другой процедуры или функции.
Например:
Sub Hello(s,t)
MsgBox s,,t
End Sub
Sub myProc()
Call Hello("Всем привет", "Приветствие")
End Sub
Здесь процедура Hello вызывается с использованием оператора Call. В этом
сдучае аргументы должны быть в скобках.
Процедуру можно вызвать и так:
Sub myProc()
Hello "Всем привет", "Приветствие"
End Sub
без использования Call. В этом случае скобки не обязательны.
14
2.17. Ввод данных в диалоговом режиме. Функция InputBox
Рассмотрим пример процедуры:
Sub Приветствие ()
Dim user
' Объявляем переменные
user = InputBox ("Ваше имя? ")
MsgBox "Привет, " + user
End Sub
Данная процедура создает переменную с именем user и присваивает ей значение,
вводимое пользователем в диалоговое окно, содержащее текст "Ваше имя? ". Затем
процедура выводит конкатенацию текстовой константы "Привет, " и значения
переменной user.
В следующем примере функции InputBox передаются три аргумента, смысл
которых пояснен в комментариях:
Sub Ввод()
Dim Message, Title, Default,MyValue ' Объявляем переменные
Message = "Введите число между 1 и 3"
' Сообщение
Title = "Окно ввода"
' Заголовок
Default = "1"
' Начальное значение переменой
MyValue = InputBox(Message, Title, Default)
End Sub
2.18. Однострочный If / Then
Общий вид оператора:
If L Then P,
где L - логическое выражение, P - оператор.
Действие: если L истинно (равно True), то выполняется оператор P, если L
ложно (равно False), то происходит переход к следующей строке без выполнения
оператора P.
Пример. Следующая функция вычисляет частное от деления двух чисел, если
делитель не равен нулю:
Function Частн(x,y)
If y <> 0 Then Частн = x/y
End Function
Пример. Следующая функция находит максимум из двух чисел:
Function Максимум(x,y)
Максимум = y
If x > y Then Максимум = x
End Function
2.19. Многострочный If / Then / End If
If L Then
P1
P2
...
Pn
End If
Здесь L - логическое выражение,
15
P1, P2, ..., Pn – операторы.
Действие:
если L истинно (равно True), то цепочка операторов P1,..., Pn выполняется, если L
ложно (равно False), то не выполняется.
Пример. Следующая функция вычисляет корень четвертой степени из
неотрицательного числа с помощью квадратного корня:
Function Корень4(x)
Dim Кор2
If x >= 0
Then
Кор2=sqr(x)
„ Кор2 - промежуточная переменная
Корень4=sqr(Кор2)
End If
End Function
2.20. Оператор If / Then / Else / End If
If L Then
P1
...
Pn
Else
Q1
...
Qm
End If
Здесь L - логическое выражение,
P1,..., Pn, Q1,..., Qm - операторы.
Действие: если L истинно (равно True), то выполняется цепочка операторов P1,...,
Pn, если L ложно (равно False), то выполняется цепочка операторов Q1,..., Qm.
Пример. Функция y
x 1, x 0
2 x,
x 0
реализуется следующим текстом:
Function MyFun(x)
If x < 0 Then
MyFun = x + 1
Else
MyFun = 2 * x
End If
End Function
2.21. Оператор Select Case / Case / Case Else / End Select
Select Case A
Case A1
P1
16
....
Case An
Pn
Case Else
Ps
End Select
Здесь A – выражение,
A1,A2,...,An – подмножества множества значений А.
Действие:
отличается от предыдущего тем, что, если текущее значение выражения A не вошло
ни в какое из подмножеств A1,A2,...,An, то выполняется оператор Ps.
0, x
Пример. Написать на VBA функцию y
0,2,
1
1 x 3
0,7, 3 x 5
1, x 5
Function FunInt(X)
Select Case X
Case Is <= -1 ' Is заменяет текущее значение
' переменной X. Не путать с оператором сравнения Is!
FunInt = 0
Case -1 To 3
FunInt = 0,2
Case 3 To 5
FunInt = 0,7
Case Else
' эквивалентная запись
' Case Is > 5
FunInt = 1
End Select
End Function
2.22. Оператор цикла For / Next
For I = start To end
P1
...
Pn
Next I
Здесь I – переменная (счетчик), start – начальное значение счетчика, end – конечное
значение счетчика, P1, ..., Pn – операторы.
Действие:
17
цепочка P1, ..., Pn повторяется до тех пор, пока значение счетчика не станет больше
end; после каждого выполнения цепочки P1, ..., Pn значение счетчика увеличивается
на 1; начальное значение счетчика равно start.
Пример. Следующая функция возвращает сумму последовательных чисел от N1 до
N2:
Function Сумм1(N1,N2)
Dim k
Сумм1 = 0
For k =N1 To N2
Сумм1 = Сумм1 + k
Next k
End Function
Например, Сумм1(3, 5) возвращает 12.
2.23. Оператор цикла DO While / Loop
Do While L
P1
...
Pn
Loop
Здесь L - логическое выражение,
P1, ..., Pn - операторы.
Действие:
если L истинно (True), то цепочка P1, ..., Pn повторяется до тех пор, пока L не станет
False; если L ложно, управление передается за пределы группы.
Пример. Следующая функция находит сумму всех чисел от заданного до 100
включительно:
Function Сумм100(Nstart)
Dim n
Сумм100 = 0
' начальное значение суммы
n = Nstart
Do While n < =100
Сумм100 = Сумм100 + n
n = n + 1
Loop
End Function
Например, Сумм100(99) возвращает 199, а, например, Сумм100(101) возвращает 0,
так как оператор цикла не будет выполняться ни разу.
18
2.24. Оператор цикла Do Until / Loop
Do Until L
P1
...
Pn
Loop
Здесь L – логическое выражение,
P1, ..., Pn – операторы.
Действие:
если L ложно (False), то цепочка P1, ..., Pn повторяется до тех пор, пока L не станет
True; если L истинно, управление передается за пределы группы.
Пример. Следующая процедура все время делает запрос на ввод пароля, пока
последний введенный пароль не будет равен "Stud123" :
Sub PassWord()
Dim PW
PW = " "
' начальное значение пароля - пробел
Do Until PW = "Stud123"
PW = InputBox( "Пароль?" )
Loop
End Sub
2.25. Оператор выхода Exit
Для немедленного выхода из процедуры, функции или оператора цикла
используются следующие операторы:
Exit Sub
Exit Function
Exit For
Exit Do
2.26. Оператор объявления массива
Пример объявления одномерного массива (каждый элемент массива имеет свой
номер – индекс):
Dim Arr (1 To 3).
Этот оператор создает массив с именем Arr, содержащий 3 элемента: Arr(1), Arr(2),
Arr(3).
Пример объявления двумерного массива (каждый элемент массива имеет два номера
– индекса по аналогии с элементами матрицы):
Dim М(1 To 2, 1 To 3).
19
Этот оператор создает массив с именем М размерности 2 х 3 (2 строки и 3 столбца).
Всего массив содержит 6 элементов:
М(1,1), М(1,2), М(1,3), М(2,1), М(2,2), М(2,3)
2.27. Присваивание значений элементам массива
После того, как массив объявлен, каждый его элемент становится независимой
позицией для любого значения, которое нужно хранить.
Следующая процедура создает массив и присваивает значения каждому его
элементу:
Sub Sample()
Dim Ms(1 To 3)
Ms(2) = 124
Ms(1) = "Январь"
Ms(3) = True
End Sub
Обратим внимание, что значения присваиваются элементам не по порядку и даже не
являются данными одного и того же типа.
Следующая процедура создает массив, содержащий квадраты натуральных чисел от
1 до 100:
Sub Квадраты()
Dim Sq(1 To 100)
Dim n
For n = 1 To 100
Sq(n) = n ^ 2
Next n
End Sub
2.28. Вложенные циклы
Данная процедура создает массив Mat размерности 3x4, каждый элемент которого
равен сумме номера строки и удвоенного номера столбца, т.е. Mat(i, j ) i 2 * j
Sub CreateArray()
Dim Mat(1 To 3, 1 To 4)
Dim Строка, Столбец
For Строка = 1 To 3
For Столбец = 1 To 4
Mat(Строка, Столбец) = Строка + 2*Столбец
Next Столбец
Next Строка
End Sub
Здесь внутри цикла по переменной Строка расположен цикл по переменной
Столбец.
2.29. Процедуры ввода данных в ячейки. Свойства Cells и Range
Согласно правилам VBA , запись Cells(2,3) означает обращение к ячейке,
расположенной во 2-й строке и 3-м столбце (т.е. к C2) активного рабочего листа.
20
Примеры:
Cells(3,1) = 100
ячейке А3 из активного рабочего листа присваивается числовое значение 100;
ddd = Cells(2, 4)
переменной ddd присваивается значение ячейки D2 активного рабочего листа.
При запуске процедуры, заполняющей ячейки активного рабочего листа, надо
следить за тем, чтобы активным был именно нужный рабочий лист, а не какой–то
другой лист или даже объект, например, диаграмма. В последнем случае будет
выдано сообщение об ошибке.
Для заполнения одним и тем же значением диапазона ячеек можно
воспользоваться записью Range().
Пример:
Range("A1:C5") = "Hello!"
всем ячейкам в диапазоне A1:C5 активного рабочего листа будет присвоено
текстовое значение "Hello!". Альтернативный вариант:
Range(Cells(1,1),Cells(5,3)) = "Hello!"
Пример
Написать на VBA процедуру, формирующую на активном рабочем листе матрицу
размерности 7 9 по общей формуле элемента:
8 * sin(10i ) * cos(20 j ) .
ij
Расположить матрицу, начиная с ячейки A1.
a
Sub MakeMatr()
Dim i, j
For i = 1 To 7
For j = 1 To 9
Cells(i, j) = 8 * Sin(10 * i) * Cos(20 * j)
Next j
Next i
End Sub
При необходимости работать с ячейками определенного
используется префикс Worksheets() с указанием имени листа.
Примеры:
рабочего
листа
Worksheets("Баланс").Cells(3,1) = 13.5
ячейке А3 из рабочего листа с именем «Баланс» присваивается числовое значение
13.5;
Worksheets("Лист1").Range("A1:C5").Font.Bold = True
ячейки A1:C5 листа «Лист 1» форматируется жирным шрифтом.
21
2.30. Ввод формул в ячейки. Свойства Formula и FormulaLocal
Свойствами Cells() и Range() можно воспользоваться и для ввода формул в
ячейки рабочего листа. Для это применяются свойства Formula и FormulaLocal.
Пример:
Range("A10").Formula = "=sin(b2)^2+1"
В ячейку A10 активного рабочего листа будет введена формула =SIN(B2)^2+1.
Теперь попробуем ввести функцию СУММ():
Range("C1").Formula = "=сумм(A1:A5)"
Мы точно знаем, что функция СУММ существует. В чем же дело?
Проблема заключается в том, что VBA не понимает переведенные на русский
язык имена функций. Если использовать английское имя функции — SUM, то все
будет нормально:
Range("C2").Formula = "=sum(A1:A5)"
Обратите внимание, что имя функции Excel «перевел» на русский.
Соответствие русских и английских имен функций можно посмотреть в файле
FUNC.XLS, для версии MS Office 2007 обычно находящемся в папке
«C:\Program Files\Microsoft Office\Office12\1049».
Если вы все-таки предпочитаете русские имена функций, то можно
воспользоваться свойством FormulaLocal:
Range("C3").FormulaLocal = "=сумм(A1:A5)"
В этом случае имя функции будет распознано правильно, и в ячейке C3 вы получите
число 15.
Вы можете использовать тот или другой метод по своему вкусу. Следует однако
учесть, что если ваш макрос попадет на компьютер, на котором установлена,
например, немецкая версия Office, то вариант с использованием FormulaLocal
работать не будет (по-немецки функция суммирования называется SUMME).
2.31. Оператор With
Если надо интенсивно поработать с ячейками определенного рабочего листа, то
каждый раз перед Cells() вводить префикс Worksheets() довольно утомительно.
22
Облегчить нам жизнь призван оператор With, с помощью которого мы дадим VBA
знать, с каким объектом мы собираемся сейчас работать.
With O
P1
…
Pn
End With
Здесь O — переменная, указывающая на объект, например, Worksheets("Лист2").
Пример:
With Worksheets("Лист3")
.Cells(1,1) = "Фамилия"
.Cells(1,2) = "Имя"
.Range("A1:B1").Font.Bold = True
.Cells(2,1) = "Пупкин"
.Cells(2,2) = "Вася"
Cells(3,3) = "Oops…"
' Ячейка C3 активного листа
End With
Обратите внимание на точку перед Cells(). Если ее не поставить, то Cells() (и
Range()) будет относится к активному рабочему листу.
2.32. Функции с аргументами–массивами. Свойство COUNT
Слово Count, добавленное через точку к имени массива–аргумента, позволяет
определить количество элементов в этом массиве. В качестве аргумента–массива
может выступать любой диапазон ячеек.
Пример.
Пусть Mat имя аргумента некоторой функции. Если в качестве этого аргумента
ввести диапазон A1:B4, то в результате выполнения оператора
KOL = Mat.Count
переменной KOL будет присвоено значение 8 (количество ячеек в диапазоне
A1:B4).
Пример.
Написать функцию, возвращающую количество отрицательных элементов
диапазона (массива, матрицы) произвольной размерности.
Function КолОтриц(arr)
Dim КолЭлем, i
КолЭлем = Arr.Count
'кол–во элементов в массиве
КолОтриц = 0
For i = 1 To КолЭлем
If arr(i) < 0 Then КолОтриц = КолОтриц + 1
Next i
End Function
23
Напомним, что вводить массив-аргумент можно методом указания, маркируя с
помощью мыши бегущей пунктирной линией нужный диапазон ячеек. Пример
обращения к рассмотренной функции:
= КолОтриц(A1:D5).
Пример.
Написать функцию, подсчитывающую число случаев, когда элементы,
расположенные на одинаковых местах в двух массивах одинаковой размерности,
совпадают по величине.
Function КолСовп(Arr1, Arr2)
Dim КолЭл1, КолЭл2, i
КолЭл1 = Arr1.Count
КолЭл2 = Arr2.Count
If КолЭл1<> КолЭл2 Then
КолСовп ="ОШИБКА"
' несовпадение _
количеств элементов
Exit Function
Else
КолСовп = 0
For i = 1 To КолЭл1
If arr1(i) = arr2(i) Then КолСовп = КолСовп + 1
Next i
End If
End Function
2.33. Объект WorksheetFunction
Для использования некоторых функций, обычно используемых на рабочем листе
Excel, в VBA надо использовать префикс WorksheetFunction.
Например:
U = WorksheetFunction.Min(3, 7, 1);
S1 = WorksheetFunction.Max(8, 7);
Дисперсия = WorksheetFunction.Var(8, 7, 9);
Среднее = WorksheetFunction.Average(8, 7).
Полный список функций рабочего листа русской версии Excel, имеющих
соответствующие методы в WorksheetFunction, приведен в приложении II.
24
Глава 2 ПЕРЕМЕННЫЕ, ТИПЫ ДАННЫХ И ОБЛАСТИ
ВИДИМОСТИ
25
Глава 3 ОТЛАДКА МАКРОСОВ
26
Глава 4 ВВОД ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ФОРМ
27
Глава 5 ЗАДАЧИ
1. Аргументы: x, y, z. Функция вычисляет среднее арифметическое аргументов по
x y z
формуле СрАрифм
. Имя функции СрАрифм.
3
Function СрАрифм(x,y,z)
СрАрифм = ( x + y + z ) / 3
End Function
2. Аргументы: x, y, z. Функция вычисляет среднее геометрическое аргументов по
формуле СредГеом 3 xyz .
Function СредГеом(x,y,z)
СредГеом = ( x * y * z ) ^ ( 1 / 3 )
End Function
3. Аргументы: S – исходная сумма, p – годовая процентная ставка, t – количество
лет. Функция вычисляет наращенную сумму по формуле простых процентов
p
ПросПроц S (1
t) .
100
Function ПросПроц(S, p, t)
ПросПроц = S * ( 1 + p / 100 * t )
End Function
3.1. Протабулировать функцию ПросПроц для t = 1, 2, …, 10 при значениях: S = 10,
p = 5. Построить график.
4. Аргументы: S – исходная сумма, p – годовая процентная ставка, t – количество
лет. Функция вычисляет наращенную сумму по формуле сложных процентов
p t
СложПроц S (1
) .
100
Function СложПроц(S, p, t)
СложПроц = S * ( 1 + p / 100 ) ^ t
End Function
4.1. Протабулировать функцию СложПроц для t = 1, 2, …, 10 при значениях: S = 10,
p = 5. Построить график.
5. Аргументы x, y, z. Функция вычисляет разность межу наибольшим и наименьшим
значениями из трех. Имя функции Размах.
28
Function Размах(x, y, z)
Dim Макс, Мин
Макс = x
If y > Макс then Макс
If z > Макс then Макс
Мин = x
If y < Мин then Мин =
If z < Мин then Мин =
Размах = Макс - Мин
End Function
= y
= z
y
z
6. Параметры: P – договорная цена исполнения, i – премия. Аргумент X – реальная
цена актива в момент исполнения опциона
6.1. Написать алгоритм, вычисляющий прибыль покупателя опциона колл по
i,
X P
формуле ПокупКолл
X P i, X P
Решение 1.
Function ПокупКолл(P, i, X)
Dim S
If X <= P Then
S = -i
Else
S = X – P – i
End If
ПокупКолл = S
End Function
Решение 2.
Function ПокупКолл(P, i, X)
Dim S
S = Iif(X <= P, -i, X – P – i)
ПокупКолл = S
End Function
6.2. Функция вычисляет прибыль продавца опциона колл по формуле
i,
X P
ПродКолл
X P i, X P
6.3. Функция вычисляет прибыль покупателя опциона пут по формуле
P X i, X P
ПокупПут
i,
X P
7. Известно, что график линейной функции y kx b проходит через точки A(x1,y1)
и B(x2,y2). Константы определяются по формулам
29
k
y1 y 2
, b
x1 x 2
y1 kx1
7.1. Написать алгоритм, вычисляющий значение функции для произвольного
значения x.
Решение.
Function lin(x1, y1, x2, y2, x)
Dim k, b
k = (y1 - y2) / (x1 - x2)
b = y1 - k * x1
lin = k * x + b
End Function
7.2. Учесть область допустимых значений параметров x1,x2,y1,y2.
Решение.
Так как делить на нуль нельзя, добавляется условный оператор:
Function lin(x1, y1, x2, y2, x)
Dim k, b
If x1 = x2 Then
lin = "Недопустимые параметры"
Exit Function
End If
k = (y1 - y2) / (x1 - x2)
b = y1 - k * x1
lin = k * x + b
End Function
8. Известно, что график степенной функции y kx a проходит через точки A(x1,y1)
и B(x2,y2). Константы определяются по формулам
ln y1 ln y 2
y1
а
,k
ln x 2 ln x1
x1a
8.1. Написать алгоритм, вычисляющий значение функции для произвольного
значения x.
Решение.
Function степ(x1, y1, x2, y2, x)
Dim a, k
a = (Log(y1) - Log(y2)) / (Log(x2) - Log(x1))
k = y1 / x1 ^ a
степ = k * x ^ a
End Function
8.2. Учесть область допустимых значений параметров x1,x2,y1,y2.
Решение.
Логарифмы определены только для положительных значений. Делить на нуль
нельзя. Добавляется условный оператор:
30
Function степ(x1, y1, x2, y2, x)
Dim a, k
If x1 <= 0 Or y1 <= 0 Or x2 <= 0 Or y2 <= 0 Or x1 = x2 Then
степ = "Недопустимые параметры"
Exit Function
End If
a = (Log(y1) - Log(y2)) / (Log(x2) - Log(x1))
k = y1 / x1 ^ a
степ = k * x ^ a
End Function
8.3. Учесть область допустимых значений аргумента x
Решение.
Возведение в произвольную степень определено для положительных чисел,
поэтому добавляется еще один условный оператор:
Function степ(x1, y1, x2, y2, x)
Dim a, k
If x1 <= 0 Or y1 <= 0 Or x2 <= 0 Or y2 <= 0 Or x1 = x2 Then
степ = "Недопустимые параметры"
Exit Function
End If
a = (Log(y1) - Log(y2)) / (Log(x2) - Log(x1))
k = y1 / x1 ^ a
If x<= 0 Then
степ = “X – недопустим”
Exit Function
End If
степ = k * x ^ a
End Function
8.4. Построить график функции step на отрезке [1; 6] c шагом 0,5 для следующих
значений параметров x1=1, y1=5, x2=6, y2=2.
9. Написать функцию, вычисляющую в зависимости от x сумму
20
xm m2
т 1
Решение
Function mySum(x)
Dim s, m
s = 0
For m = 1 To 20
s = s + x^m*m^2
Next m
mySum = s
End Function
31
10. Написать функцию, вычисляющую в зависимости от x произведение
10
x
1
n 2
n 1
Решение
Function myProd(x)
Dim p, n
p = 1
For n = 1 To 10
p = p * ( 1 – x / (n+2) )
Next n
myProd = p
End Function
Задача. Написать функцию, которая возвращает значение максимального корня
приведенного квадратного уравнения x 2 px q 0 . Аргументами функции
являются коэффициенты уравнения. Если уравнение не имеет корней, вывести
соответствующее сообщение и возвратить текстовое значение "пусто".
Решение
Function xMAX(p, q)
Dim D
D = p ^ 2 - 4 * q
'дискриминант
If D >= 0 Then
xMAX = (-p + Sqr(D)) / 2
Else
MsgBox "Нет корней"
xMAX = "пусто"
End If
End Function
Задача. Написать процедуру, которая запрашивает число, и если введенное число
положительно, выдает соответствующее сообщение.
Sub Положит()
Dim number
number = InputBox("Введите число")
If number > 0 Then MsgBox "Число "+number+" положительно"
End Sub
Задача. Написать функцию
32
Function myfun(x)
Select Case x
Case Is < 0, 1, 1.9, 2 To 3
myfun = 2 * x
Case 3 To 4, 10 To 20
myfun = 3 * x
Case 50 To 70, Is >= 100
myfun = 4 * x
Case Else
myfun = 5 * x
End Select
End Function
33
Глава 6 Приложения
Приложение I Свод основных операторов
Структура функции
Function Z(x, y)
Z = 2*x*y
End Function
Структура процедуры
Sub Пример()
End Sub
Структура процедуры с аргументами
Sub Пример(x, y)
End Sub
Вызов процедуры
[Call] Пример[(]x, y[)]
End Sub
При использовании Call скобки
обязательны
Объявление переменных
Dim x, y, z
Функция MsgBox
MsgBox "Сообщение"
Оператор присваивания
V=A
Однострочный If
If L Then P
Многострочный If
If L Then
P1
...
Pn
End If
Оператор If / Then / Else
34
If L Then
P1
...
Pn
Else
Q1
...
Qm
End If
Оператор For / Next
For i = start To end
P1
...
Pn
Next i
Оператор Do While / Loop
Do While L
P1
...
Pn
Loop
Оператор Do Until / Loop
Do Until L
P1
...
Pn
Loop
Оператор Select Case
Select Case A
Case A1
P1
Case A2
P2
....
Case An
Pn
[ Case Else
Ps ]
End Select
Оператор объявления массива
Dim Arr (1 To 3)
Dim МATR(1 To 3, 1 To 5)
Оператор With
With Worksheets("Лист3")
.Cells(1,1) = "Данные"
.Range("A1:B1").Font.Bold = True
End With
Несколько операторов в одной строке.
Символ “:”
T = "a1" : X1 = 45.3 : Н = 0.1* Y
Оператор выхода Exit
Exit Sub
Exit Function
Exit For
Exit Do
Знак переноса оператора на другую
строку “_”
Функция InputBox
Sub Hi()
user = InputBox ("Ваше имя?")
MsgBox "Привет, " + user
Метод Cells
Cells(3, 2)= 1.12
D = Worksheets("Лист1").Cells(2, 4)
Метод Range
Range("B3")= 1.12
D = Worksheets("Лист1").Range("B3")
Expenses = Price*2000 + _
Tax*2500 + 55.6
Свойство Count
Function S( Mas )
S = Mas.Count
End function
Объект WorksheetFunction
U = WorksheetFunction.Min(3, 7, 1);
S1 = WorksheetFunction.Max(8, 7).
Приложение II Функции рабочего листа и соответствующие методы
объекта WorksheetFunction
ACOS
ACOSH
ASC
ASIN
ASINH
ATAN2
ATANH
COSH
CTABKA
DBSC
FРАСП
FРАСПОБР
Acos
Acosh
Asc
Asin
Asinh
Atan2
Atanh
Cosh
Rate
Dbcs
FDist
FInv
LN
LOG
LOG10
SINH
TANH
ZТЕСТ
АМОРУВ
АМОРУМ
АПЛ
АСЧ
БДДИСП
БДДИСПП
Ln
Log
Log10
Sinh
Tanh
ZTest
AmorLinc
AmorDegrc
Sln
Syd
DVar
DVarP
35
БДПРОИЗВЕД
БДСУММ
БЕССЕЛЬ.I
БЕССЕЛЬ.J
БЕССЕЛЬ.K
БЕССЕЛЬ.Y
БЕТАОБР
БЕТАРАСП
БЗРАСПИС
БИЗВЛЕЧЬ
БИНОМРАСП
БС
БСЧЁТ
БСЧЁТА
ВЕЙБУЛЛ
ВЕРОЯТНОСТЬ
ВОСЬМ.В.ДВ
ВОСЬМ.В.ДЕС
ВОСЬМ.В.ШЕСТН
ВПР
ВСД
ВЫБОР
ГАММАНЛОГ
ГАММАОБР
ГАММАРАСП
ГИПЕРГЕОМЕТ
ГПР
ГРАДУСЫ
ДАТАКУПОНДО
ДАТАКУПОНПОСЛЕ
ДАТАМЕС
ДВ.В.ВОСЬМ
ДВ.В.ДЕС
ДВ.В.ШЕСТН
ДВФАКТР
ДДОБ
ДЕЛЬТА
ДЕНЬНЕД
ДЕС.В.ВОСЬМ
ДЕС.В.ДВ
ДЕС.В.ШЕСТН
ДИСП
ДИСПР
ДЛИТ
ДМАКС
36
DProduct
DSum
BesselI
BesselJ
BesselK
BesselY
BetaInv
BetaDist
FVSchedule
DGet
BinomDist
Fv
DCount
DCountA
Weibull
Prob
Oct2Bin
Oct2Dec
Oct2Hex
VLookup
Irr
Choose
GammaLn
GammaInv
GammaDist
HypGeomDist
HLookup
Degrees
CoupPcd
CoupNcd
EDate
Bin2Oct
Bin2Dec
Bin2Hex
FactDouble
Ddb
Delta
Weekday
Dec2Oct
Dec2Bin
Dec2Hex
Var
VarP
Duration
DMax
ДМИН
ДНЕЙ360
ДНЕЙКУПОН
ДНЕЙКУПОНДО
ДНЕЙКУПОНПОСЛЕ
ДОВЕРИТ
ДОЛЛСША
ДОЛЯГОДА
ДОХОДКЧЕК
ДОХОДПЕРВНЕРЕГ
ДОХОДПОГАШ
ДОХОДПОСЛНЕРЕГ
ДОХОДСКИДКА
ДСРЗНАЧ
ДСТАНДОТКЛ
ДСТАНДОТКЛП
ДФОШ
ЕЛОГИЧ
ЕНД
ЕНЕТЕКСТ
ЕНЕЧЁТ
ЕОШ
ЕОШИБКА
ЕСЛИ
ЕТЕКСТ
ЕЧЁТН
ЕЧИСЛО
ЗАМЕНИТЬ
ЗАМЕНИТЬБ
И
ИЛИ
ИНДЕКС
ИНОРМА
КВАДРОТКЛ
КВАРТИЛЬ
КВПИРСОН
КВПИРСОН
КОВАР
КОМПЛЕКСН
КОНМЕСЯЦА
КОРЕНЬПИ
КОРРЕЛ
КПЕР
КРИТБИНОМ
ЛГРФПРИБЛ
DMin
Days360
CoupDays
CoupDayBs
CoupDaysNc
Confidence
USDollar
YearFrac
TBillYield
OddFYield
YieldMat
OddLYield
YieldDisc
DAverage
DStDev
DStDevP
ErfC
IsLogical
IsNA
IsNonText
IsOdd
IsErr
IsError
IfError
IsText
IsEven
IsNumber
Replace
ReplaceB
And
Or
Index
IntRate
DevSq
Quartile
RSq
RTD
Covar
Complex
EoMonth
SqrtPi
Correl
NPer
CritBinom
LogEst
ЛИНЕЙН
ЛОГНОРМОБР
ЛОГНОРМРАСП
МАКС
МВСД
МДЛИТ
МЕДИАНА
МИН
МНИМ.ABS
МНИМ.COS
МНИМ.EXP
МНИМ.LN
МНИМ.LOG10
МНИМ.LOG2
МНИМ.SIN
МНИМ.АРГУМЕНТ
МНИМ.ВЕЩ
МНИМ.ДЕЛ
МНИМ.КОРЕНЬ
МНИМ.ПРОИЗВЕД
МНИМ.РАЗН
МНИМ.СОПРЯЖ
МНИМ.СТЕПЕНЬ
МНИМ.СУММ
МНИМ.ЧАСТЬ
МОБР
МОДА
МОПРЕД
МУЛЬТИНОМ
МУМНОЖ
НАИБОЛЬШИЙ
НАИМЕНЬШИЙ
НАЙТИ
НАЙТИБ
НАКЛОН
НАКОПДОХОД
НАКОПДОХОДПОГАШ
НЕЧЁТ
НОД
НОК
НОМИНАЛ
НОМНЕДЕЛИ
НОРМАЛИЗАЦИЯ
НОРМОБР
НОРМРАСП
LinEst
LogInv
LogNormDist
Max
MIrr
MDuration
Median
Min
ImAbs
ImCos
ImExp
ImLn
ImLog10
ImLog2
ImSin
ImArgument
ImReal
ImDiv
ImSqrt
ImProduct
ImSub
ImConjugate
ImPower
ImSum
Imaginary
MInverse
Mode
MDeterm
MultiNomial
MMult
Large
Small
Find
FindB
Slope
AccrInt
AccrIntM
Odd
Gcd
Lcm
Nominal
WeekNum
Standardize
NormInv
NormDist
НОРМСТОБР
НОРМСТРАСП
ОБЩДОХОД
ОБЩПЛАТ
ОКРВВЕРХ
ОКРВНИЗ
ОКРУГЛ
ОКРУГЛВВЕРХ
ОКРУГЛВНИЗ
ОКРУГЛТ
ОСИ
ОСПЛТ
ОТРБИНОМРАСП
ОТРЕЗОК
ПЕРЕСТ
ПЕРЕСТ
ПЕРСЕНТИЛЬ
ПЕЧСИМВ
ПИ
ПИРСОН
ПЛТ
ПОВТОР
ПОДСТАВИТЬ
ПОИСК
ПОИСКБ
ПОИСКПОЗ
ПОЛУЧЕНО
ПОРОГ
ПРЕДСКАЗ
ПРЕОБР
ПРОИЗВЕД
ПРОМЕЖУТОЧНЫЕ.ИТОГИ
ПРОПНАЧ
ПРОСМОТР
ПРОЦЕНТРАНГ
ПРОЦПЛАТ
ПРПЛТ
ПС
ПУАССОН
ПУО
РАБДЕНЬ
РАВНОКЧЕК
РАДИАНЫ
РАНГ
РИМСКОЕ
NormSInv
NormSDist
CumPrinc
CumIPmt
Ceiling
Floor
Round
RoundUp
RoundDown
MRound
BahtText
Ppmt
NegBinomDist
Intercept
Permut
Phonetic
Percentile
Clean
Pi
Pearson
Pmt
Rept
Substitute
Search
SearchB
Match
Received
GeStep
Forecast
Convert
Product
Subtotal
Proper
Lookup
PercentRank
Ispmt
Ipmt
Pv
Poisson
Vdb
WorkDay
TBillEq
Radians
Rank
Roman
37
РОСТ
РУБЛЬ
РУБЛЬ.ДЕС
РУБЛЬ.ДРОБЬ
РЯД.СУММ
СЖПРОБЕЛЫ
СКИДКА
СКОС
СЛУЧМЕЖДУ
СРГАРМ
СРГЕОМ
СРЗНАЧ
СРЗНАЧА
СРЗНАЧА
СРОТКЛ
СТАНДОТКЛОН
СТАНДОТКЛОНП
СТЕПЕНЬ
СТОШYX
СТЬЮДРАСП
СТЬЮДРАСПОБР
СУММ
СУММЕСЛИ
СУММЕСЛИ
СУММКВ
СУММКВРАЗН
СУММПРОИЗВ
СУММРАЗНКВ
СУММСУММКВ
СЧЁТ
СЧЁТЕСЛИ
СЧЁТЕСЛИ
СЧЁТЗ
СЧИТАТЬПУСТОТЫ
ТЕКСТ
38
Growth
Dollar
DollarDe
DollarFr
SeriesSum
Trim
Disc
Skew
RandBetween
HarMean
GeoMean
Average
AverageIf
AverageIfs
AveDev
StDev
StDevP
Power
StEyx
TDist
TInv
Sum
SumIf
SumIfs
SumSq
SumXMY2
SumProduct
SumX2MY2
SumX2PY2
Count
CountIf
CountIfs
CountA
CountBlank
Text
ТЕНДЕНЦИЯ
ТРАНСП
ТТЕСТ
УРЕЗСРЕДНЕЕ
ФАКТР
ФИКСИРОВАННЫЙ
ФИШЕР
ФИШЕРОБР
ФОШ
ФТЕСТ
ФУО
ХИ2ОБР
ХИ2РАСП
ХИ2ТЕСТ
ЦЕНА
ЦЕНАКЧЕК
ЦЕНАПЕРВНЕРЕГ
ЦЕНАПОГАШ
ЦЕНАПОСЛНЕРЕГ
ЦЕНАСКИДКА
ЧАСТНОЕ
ЧАСТОТА
ЧЁТН
ЧИСЛКОМБ
ЧИСЛКУПОН
ЧИСТВНДОХ
ЧИСТНЗ
ЧИСТРАБДНИ
ЧПС
ШЕСТН.В.ВОСЬМ
ШЕСТН.В.ДВ
ШЕСТН.В.ДЕС
ЭКСПРАСП
ЭКСЦЕСС
ЭФФЕКТ
Trend
Transpose
TTest
TrimMean
Fact
Fixed
Fisher
FisherInv
Erf
FTest
Db
ChiInv
ChiDist
ChiTest
Price
TBillPrice
OddFPrice
PriceMat
OddLPrice
PriceDisc
Quotient
Frequency
Even
Combin
CoupNum
Xirr
Xnpv
NetworkDays
Npv
Hex2Oct
Hex2Bin
Hex2Dec
ExponDist
Kurt
Effect
Download