Как в excel создать функцию
Создаем свою первую функцию в Excel
Что такое функция в VBA?
Функция написанная на VBA — это код, который выполняет вычисления и возвращает значение (или массив значений). Создав функцию вы можете использовать ее тремя способами:
- В качестве формулы на листе, где она может принимать аргументы и возвращать значения.
- Как часть вашей подпрограммы VBA. В процедуре Sub или внутри других функций.
- В правилах условного форматирования.
Хотя Excel уже содержит более 450 встроенных функций, но их тоже периодически не хватает. Иногда встроенные функции не могут выполнить то, что вы хотите сделать. Иногда для достижения результата необходимо создать огромную и сложную формулу, которая не понятна окружающим. В этом случае вы можете создать пользовательскую функцию, которую легко читать и использовать.
Обратите внимание, что пользовательские функции, созданные с помощью VBA, как правило значительно медленнее, чем встроенные функции. Следовательно, они лучше всего подходят для ситуаций, когда вы не можете получить результат, используя встроенные функции или вычислений не много и снижение производительности не критично.
В чем отличие процедуры (Sub) от функции (Function)?
Основное отличие в том, что процедура (sub) используется для выполнения набора команд, и не призвана в отличие от функции (function) возвращать значение (или массив значений).
Для демонстрации приведем пример. Например есть ряд чисел от 1 до 100 и необходимо отделить четные от нечетных.
С помощью процедуры (sub) вы можете, к примеру, пройтись по ячейкам и выделить нечетные с помощью заливки. А функцию можно использовать в соседнем столбце и она вернет ИСТИНА или ЛОЖЬ в зависимости от того четное значение или нет. Т.е. вы не сможете изменить цвет заливки с помощью функции на листе.
Создание простой пользовательской функции в VBA
Давайте создадим простую пользовательскую функцию на VBA и посмотрим как там все работает.
Ниже представлен код функции, которая из текста оставляет только цифры, отбрасывая буквенные значения.
Чтобы у вас все заработало, необходимо вставить данный код в модуль книги. Если вы не знаете как это сделать, то начните со статьи Как записать макрос в Excel.
Теперь посмотрим как функция работает, попробуем использовать ее на листе:
Прежде чем разбирать саму функцию отметим 2 приятных момента, которые появились после создания:
- Она стала доступна, как и любая другая встроенная функция (как создать скрытую функцию, расскажем далее).
- Когда вы ввели знак «=» и начинаете вводить имя функции, то Excel выводит все совпадения и показывает не только встроенные функции, но и пользовательские.
Разбираем функцию пошагово
Теперь давайте глубоко погрузимся и посмотрим, как эта функция создавалась. Начинается функция со строки
Слово Function говорит о начале функции, далее идет ее название, в нашем случае Цифры.
- Имя функции не может содержать пробелов. Кроме того, вы не можете назвать функцию, если она сталкивается с именем ссылки на ячейку. Например, вы не можете назвать функцию ABC123, так как это имя также относится к ячейке в листе Excel.
- Вы не должны указывать на свою функцию то же имя, что и у существующей функции. Если вы это сделаете, Excel будет отдавать предпочтение встроенной функции.
- Вы можете использовать символ подчеркивания, если хотите разделить слова. Например, Сумма_Прописью является допустимым именем.
После названия в круглых скобках описываются аргументы функции. По аналогии со встроенными функциями Excel. В нашем случае используется единственный аргумент Текст. После названия аргумента мы указали As String, это означает, что наш аргумент — текстовое значение или ссылка на ячейку, содержащее текстовое значение. Если вы не укажете тип данных, VBA рассмотрит его как Variant (что означает, что вы можете использовать любой тип данных, VBA его определит самостоятельно).
Последняя часть первой строки As Long задает тип данных, которая возвращает функция. В нашем случае функция будет возвращать целые значения. Это также не обязательно.
Вторая и третья строка функции объявляет дополнительные внутренние переменные, которые мы будем использовать.
Переменную i мы буем использовать для перебора символов. А переменную result для хранения промежуточного результата функции.
Задача функции — пройти по всем символам переменной Текст и сохранить только те, что являются цифрами. Поэтому начнем цикл с 1 и до последнего символа.
Len — функция, которая определяет количество символов.
Основная строка функции — это проверка является ли очередной символ текста цифрой и если да — то сохранение его в переменной result
Для этого нам потребуется функция IsNumeric — она возвращает True если текст — число и False в противном случае.
Функция Mid берет из аргумента Текст i-ый символ (значение 1, указывает что функция Mid берет только 1 символ)/
Функция Next — закрывает цикл For тут все понятно.
Этой строкой мы преобразовываем текстовую переменную result, которая содержит все цифры аргумента Текст, в числовое значение. И говорим какой результат должна вывести наша функция Цифры.
Последняя строка кода — End Function. Это обязательная строка кода, которая сообщает VBA, что код функции заканчивается здесь.
В приведенном выше коде описаны различные части типичной пользовательской функции, созданной в VBA. В следующих статьях мы более подробно разберем эти элементы, а также рассмотрим различные способы выполнения функции VBA в Excel.
Создать функцию в Excel (простая надстройка)
Один из посетителей нашего сайта оставил идею сделать в Excel кнопку, по которой можно было бы переходить в Контакт, просто и удобно. Идею поддержали еще 4 человека и мы решили привести простой пример реализации этой задумки.
Сегодня мы рассмотрим как написать собственный макрос, функцию, произвести установку надстройки и попробуем создать собственную вкладку в ленте Excel.
Итак, задача: добавить в Excel, возможность выхода вКонтакт.
Для этого нам потребуется объявить обозреватель, открыть его и перейти по ссылке ресурса.
Создадим функцию VK для выхода в Контакт:
Function vk ()
Dim ie As Object
Set ie = CreateObject («InternetExplorer.Application»)
ie.Visible = True
ie.Navigate «http://vkontaktui.ru/»
End Function
где http://vkontaktui.ru/ — анонимайзер Контакта (если на работе Контакт закрыт), можно подставить привычный http://vk.com/ или любой другой сайт.
Копируем в наш документ:
функция перехода в Контакт
Теперь переходим на любой лист Excel и пишем формулу =vk () после ввода формулы в любую ячейку и нажатия кнопки Enter будет открываться IE с указанным адресом.
Для удобства использования пропишем функцию в Макрос:
Sub vkcom ()
Function vk ()
Dim ie As Object
Set ie = CreateObject («InternetExplorer.Application»)
ie.Visible = True
ie.Navigate «http://vkontaktui.ru/»
End Sub
функция в макросе
Теперь у нас есть несколько больше возможностей по использованию функции вызова EI. Например, мы можем назначить макрос на кнопку:
Теперь сделаем из этого файла надстройку и разместим кнопки быстрого запуска в Ленте и На панели быстрого доступа.
Делается это очень просто. Сохраним makros.xlsm как mkrs.xlа (скачать mkrs.xla)
Откроем новый документ Excel. Перейдем в меню Файл >> Параметры >>Надстройки
появится новое окно:
В управлении выбираем «Надстройки Excel» и кликаем кнопку перейти. Появится новое окно «Надстройки», через Обзор выбираем созданный файл mkrs.xlа:
Установка надстройки
Теперь выведем макрос на Панель быстрого доступа, сделаем это через меню Параметры :
И добавим новую вкладку на Ленту:
(Создаем вкладку, группу, называем как нам нравится и добавляем наш макрос).
теперь любой Excel на нашем компьютере будет иметь слегка измененный вид, в котором работает новая функция =VK () и две кнопки:
Excel с включенной надстройкой
Надеемся статья была вам полезна. Будем благодарны, если Вы нажмете +1 и/или Мне нравится или поделитесь с друзьями с помощью кнопок ниже. Если у Вас остались вопросы — задавайте!
Создание пользовательских функций в Excel
Хотя в Excel предлагается большое число встроенных функций, в нем может не быть той функции, которая нужна для ваших вычислений. К сожалению, разработчики Excel не могли предугадать все потребности пользователей. Однако в Excel можно создавать собственные функции, и ниже вы найдете все нужные для этого инструкции.
Вы ищете сведения о том, как создать пользовательскую функцию JavaScript, которую можно использовать в Excel для Windows, Excel для Mac или Excel Online ? В этом случае ознакомьтесь со статьей Общие сведения о функциях Excel.
Пользовательские функции (как и макросы) записываются на языке программирования Visual Basic для приложений (VBA). Они отличаются от макросов двумя вещами. Во-первых, в них используются процедуры Function, а не Sub. Это значит, что они начинаются с оператора Function, а не Sub, и заканчиваются оператором End Function, а не End Sub. Во-вторых, они выполняют различные вычисления, а не действия. Некоторые операторы (например, предназначенные для выбора и форматирования диапазонов) исключаются из пользовательских функций. Из этой статьи вы узнаете, как создавать и применять пользовательские функции. Для создания функций и макросов используется редактор Visual Basic (VBE), который открывается в отдельном окне.
Предположим, что ваша компания предоставляет скидку в размере 10 % клиентам, заказавшим более 100 единиц товара. Ниже мы объясним, как создать функцию для расчета такой скидки.
В примере ниже показана форма заказа, в которой перечислены товары, их количество и цена, скидка (если она предоставляется) и итоговая стоимость.
Чтобы создать пользовательскую функцию DISCOUNT в этой книге, сделайте следующее:
Нажмите клавиши ALT+F11 (или FN+ALT+F11 на Mac), чтобы открыть редактор Visual Basic, а затем щелкните Insert (Вставка) > Module (Модуль). В правой части редактора Visual Basic появится окно нового модуля.
Скопируйте указанный ниже код и вставьте его в новый модуль.
Примечание: Чтобы код было более удобно читать, можно добавлять отступы строк с помощью клавиши TAB. Отступы необязательны и не влияют на выполнение кода. Если добавить отступ, редактор Visual Basic автоматически вставит его и для следующей строки. Чтобы сдвинуть строку на один знак табуляции влево, нажмите SHIFT+TAB.
Теперь вы готовы использовать новую функцию DISCOUNT. Закройте редактор Visual Basic, выделите ячейку G7 и введите следующий код:
Excel вычислит 10%-ю скидку для 200 единиц по цене 47,50 ₽ и вернет 950,00 ₽.
В первой строке кода VBA функция DISCOUNT(quantity, price) указывает, что функции DISCOUNT требуется два аргумента: quantity (количество) и price (цена). При вызове функции в ячейке листа необходимо указать эти два аргумента. В формуле =DISCOUNT(D7;E7) аргумент quantity имеет значение D7, а аргумент price — значение E7. Если скопировать формулу в ячейки G8:G13, вы получите указанные ниже результаты.
Рассмотрим, как Excel обрабатывает эту функцию. При нажатии клавиши ВВОД Excel ищет имя DISCOUNT в текущей книге и определяет, что это пользовательская функция в модуле VBA. Имена аргументов, заключенные в скобки (quantity и price), представляют собой заполнители для значений, на основе которых вычисляется скидка.
Оператор If в следующем блоке кода проверяет аргумент quantity и сравнивает количество проданных товаров со значением 100:
Если количество проданных товаров не меньше 100, VBA выполняет следующую инструкцию, которая перемножает значения quantity и price, а затем умножает результат на 0,1:
Discount = quantity * price * 0.1
Результат хранится в виде переменной Discount. Оператор VBA, который хранит значение в переменной, называется оператором назначения, так как он вычисляет выражение справа от знака равенства и назначает результат имени переменной слева от него. Так как переменная Discount называется так же, как и процедура функции, значение, хранящееся в переменной, возвращается в формулу листа, из которой была вызвана функция DISCOUNT.
Если значение quantity меньше 100, VBA выполняет следующий оператор:
Наконец, следующий оператор округляет значение, назначенное переменной Discount, до двух дробных разрядов:
Discount = Application.Round(Discount, 2)
В VBA нет функции округления, но она есть в Excel. Чтобы использовать округление в этом операторе, необходимо указать VBA, что метод (функцию) Round следует искать в объекте Application (Excel). Для этого добавьте слово Application перед словом Round. Используйте этот синтаксис каждый раз, когда нужно получить доступ к функции Excel из модуля VBA.
Пользовательские функции должны начинаться с оператора Function и заканчиваться оператором End Function. Помимо названия функции, оператор Function обычно включает один или несколько аргументов. Однако вы можете создать функцию без аргументов. В Excel доступно несколько встроенных функций (например, СЛЧИС и ТДАТА), в которых нет аргументов.
После оператора Function указывается один или несколько операторов VBA, которые проверят соответствия условиям и выполняют вычисления с использованием аргументов, переданных функции. Наконец, в процедуру функции следует включить оператор, назначающий значение переменной с тем же именем, что у функции. Это значение возвращается в формулу, которая вызывает функцию.
Количество ключевых слов VBA, которые можно использовать в настраиваемых функциях, меньше числа, которое можно использовать в макросах. Пользовательские функции не разрешены для выполнения каких-либо действий, кроме возвращения значения в формулу на листе или в выражение, используемое в другом макросе или функции VBA. Например, пользовательские функции не могут изменять размер окон, редактировать формулы в ячейках, а также изменять шрифт, цвет и параметры узора для текста в ячейке. Если вы включаете код «Action» этого типа в процедуру Function, функция возвращает #VALUE! ошибка #ЧИСЛО!.
Единственное действие, которое может выполнять процедура функции (кроме вычислений), — это отображение диалогового окна. Чтобы получить значение от пользователя, выполняющего функцию, можно использовать в ней оператор InputBox. Кроме того, с помощью оператора MsgBox можно выводить сведения для пользователей. Вы также можете использовать настраиваемые диалоговые окна (UserForms), но эта тема выходит за рамки данной статьи.
Даже простые макросы и пользовательские функции может быть сложно понять. Чтобы сделать эту задачу проще, добавьте комментарии с пояснениями. Для этого нужно ввести перед текстом апостроф. Например, ниже показана функция DISCOUNT с комментариями. Благодаря подобным комментариями и вам, и другим будет впоследствии проще работать с кодом VBA. Так, код будет легче понять, если потребуется внести в него изменения.
Апостроф указывает приложению Excel на то, что следует игнорировать всю строку справа от него, поэтому вы можете добавлять комментарии в отдельных строках или в правой части строк, содержащих код VBA. Советуем начинать длинный блок кода с комментария, в котором объясняется его назначение, а затем использовать встроенные комментарии для документирования отдельных операторов.
Кроме того, рекомендуется присваивать макросам и пользовательским функциям описательные имена. Например, присвойте макросу название MonthLabels вместо Labels, чтобы более точно указать его назначение. Описательные имена макросов и пользовательских функций особенно полезны, если существует множество процедур с похожим назначением.
Способы документирования макросов и пользовательских функций зависят от личных настроек. Важно, чтобы вы использовали какой-либо способ документирования и постоянно использовать его.
Для использования настраиваемой функции необходимо открыть книгу, содержащую модуль, в котором она была создана. Если эта книга не открыта, вы получаете #NAME? Ошибка при попытке использовать функцию. Если вы ссылались на функцию в другой книге, перед именем функции необходимо указать имя книги, в которой она находится. Например, если вы создаете функцию с именем «скидка» в книге с именем «личное. xlsb» и назовите ее из другой книги, необходимо ввести = личное. xlsb! скидка (), а не просто = Скидка ().
Чтобы вставить пользовательскую функцию быстрее (и избежать ошибок), ее можно выбрать в диалоговом окне «Вставка функции». Пользовательские функции доступны в категории «Определенные пользователем»:
Проще всего сделать пользовательские функции доступными для хранения в отдельной книге, а затем сохранить ее в виде надстройки. После этого вы сможете сделать надстройку доступной при запуске Excel. Вот как это сделать:
Создав нужные функции, выберите Файл > Сохранить как.
В Excel 2007 нажмите кнопку Microsoft Office, а затем щелкните Сохранить как.
В диалоговом окне Сохранить как откройте раскрывающийся список Тип файла и выберите значение Надстройка Excel. Сохраните книгу с запоминающимся именем, таким как MyFunctions, в папке AddIns. Она будет автоматически предложена в диалоговом окне Сохранить как, поэтому вам потребуется только принять расположение, используемое по умолчанию.
Сохранив книгу, выберите Файл > Параметры Excel.
В Excel 2007 нажмите кнопку Microsoft Office и щелкните Параметры Excel.
В диалоговом окне Параметры Excel выберите категорию Надстройки.
В раскрывающемся списке Управление выберите Надстройки Excel. Затем нажмите кнопку Перейти.
В диалоговом окне Надстройки установите флажок рядом с именем книги, как показано ниже.
Создав нужные функции, выберите Файл > Сохранить как.
В диалоговом окне Сохранить как откройте раскрывающийся список Тип файла и выберите значение Надстройка Excel. Сохраните книгу с запоминающимся именем, таким как MyFunctions.
Сохранив книгу, выберите Сервис > Надстройки Excel.
В диалоговом окне Надстройки нажмите кнопку «Обзор», найдите свою надстройку, нажмите кнопку Открыть, а затем установите флажок рядом с надстройкой в поле Доступные надстройки.
После выполнения этих действий ваши пользовательские функции будут доступны при каждом запуске Excel. Если вы хотите добавить в библиотеку функций, вернитесь в редактор Visual Basic. Если вы видите в окне редактора проектов Visual Basic под заголовком Вбапрожект, появится модуль под именем файла надстройки. У надстройки появится расширение. xlam.
Дважды щелкните модуль в Project Explorer, чтобы вывести код функций. Чтобы добавить новую функцию, установите точку вставки после оператора End Function, который завершает последнюю функцию в окне кода, и начните ввод. Вы можете создать любое количество функций, и они будут всегда доступны в категории «Определенные пользователем» диалогового окна Вставка функции.
Эта статья основана на главе книги Microsoft Office Excel 2007 Inside Out, написанной Марком Доджем (Mark Dodge) и Крейгом Стинсоном (Craig Stinson). В нее были добавлены сведения, относящиеся к более поздним версиям Excel.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.
Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).
Примеры как создать пользовательскую функцию в Excel
В Excel содержится множество встроенных функций, которые могут быть использованы для инженерных, статистических, финансовых, аналитических и прочих расчетов. Иногда условия поставленных задач требуют более гибкого инструмента для поиска решения, тогда на помощь приходят макросы и пользовательские функции.
Пример создания своей пользовательской функции в Excel
Подобно макросам, пользовательские функции могут быть созданы с использованием языка VBA. Для реализации данной задачи необходимо выполнить следующие действия:
- Открыть редактор языка VBA с помощью комбинации клавиш ALT+F11.
- В открывшемся окне выбрать пункт Insert и подпункт Module, как показано на рисунке:
- Новый модуль будет создан автоматически, при этом в основной части окна редактора появится окно для ввода кода:
- При необходимости можно изменить название модуля.
- В отличие от макросов, код которых должен находиться между операторами Sub и End Sub, пользовательские функции обозначают операторами Function и End Function соответственно. В состав пользовательской функции входят название (произвольное имя, отражающее ее суть), список параметров (аргументов) с объявлением их типов, если они требуются (некоторые могут не принимать аргументов), тип возвращаемого значения, тело функции (код, отражающий логику ее работы), а также оператор End Function. Пример простой пользовательской функции, возвращающей названия дня недели в зависимости от указанного номера, представлен на рисунке ниже:
- После ввода представленного выше кода необходимо нажать комбинацию клавиш Ctrl+S или специальный значок в левом верхнем углу редактора кода для сохранения.
- Чтобы воспользоваться созданной функцией, необходимо вернуться к табличному редактору Excel, установить курсор в любую ячейку и ввести название пользовательской функции после символа «=»:
Встроенные функции Excel содержат пояснения как возвращаемого результата, так и аргументов, которые они принимают. Это можно увидеть на примере любой функции нажав комбинацию горячих клавиш SHIFT+F3. Но наша функция пока еще не имеет формы.
Чтобы задокументировать пользовательскую функцию, необходимо выполнить следующие действия:
- Создайте новый макрос (нажмите комбинацию клавиш Alt+F8), в появившемся окне введите произвольное название нового макроса, нажмите кнопку Создать:
- В результате будет создан новый модуль с заготовкой, ограниченной операторами Sub и End Sub.
- Введите код, как показано на рисунке ниже, указав требуемое количество переменных (в зависимости от числа аргументов пользовательской функции):
- В качестве «Macro» должна быть передана текстовая строка с названием пользовательской функции, в качестве «Description» — переменная типа String с текстом описания возвращаемого значения, в качестве «ArgumentDescriptions» — массив переменных типа String с текстами описаний аргументов пользовательской функции.
- Для создания описания пользовательской функции достаточно один раз выполнить созданный выше модуль. Теперь при вызове пользовательской функции (или SHIFT+F3) отображается описание возвращаемого результата и переменной:
Описания функций создавать не обязательно. Они необходимы в случаях, если пользовательские функции будут часто использоваться другими пользователями.
Примеры использования пользовательских функций, которых нет в Excel
Пример 1. Рассчитать сумму отпускных для каждого работника, проработавшего на предприятии не менее 12 месяцев, на основе суммы общей заработной платы и числа выходных дней в году.
Вид исходной таблицы данных:
Каждому работнику полагается 24 выходных дня с выплатой S=N*24/(365-n), где:
- N – суммарная зарплата за год;
- n – число праздничных дней в году.
Создадим пользовательскую функцию для расчета на основе данной формулы:
Public Function Otpusknye(summZp As Long , holidays As Long ) As Long
If IsNumeric(holidays) = False Or IsNumeric(summZp) = False Then
Otpusknye = «Введены нечисловые данные»
Exit Function
ElseIf holidays
Сохраним функцию и выполним расчет с ее использованием:
Растянем формулу на остальные ячейки с целью получения результатов для остальных работников:
Калькулятор расчета калорий в Excel
Пример 2. Рассчитать суточную норму калорий для участников программы похудения, среди которых есть как женщины, так и мужчины определенного возраста с известными показателями роста и веса.
Вид исходной таблицы данных:
Для расчета используем формулу Миффлина — Сан Жеора, которую запишем в коде пользовательской функции с учетом пола участника. Код примера:
Public Function CaloriesPerDay(sex As String , age As Integer , weight As Integer , height As Integer ) As Integer
If sex = «женский» Then
CaloriesPerDay = 10 * weight + 6.25 * height — 5 * age — 161
ElseIf sex = «мужской» Then
CaloriesPerDay = 10 * weight + 6.25 * height — 5 * age + 5
Else : CaloriesPerDay = 0
End If
End Function
Проверки корректности введенных данных упущены для упрощения кода. Если пол не определен, функция вернет результат 0 (нуль).
Пример расчета для первого участника:
В результате использования автозаполнения получим следующие результаты:
Пользовательская функция для решения квадратных уравнений в Excel
Пример 3. Создать функцию, которая возвращает результаты решения квадратных уравнений для указанных в ячейках коэффициентах a, b и c уравнения типа ax2+bx+c=0.
Вид исходной таблицы:
Для решения создадим следующую пользовательскую функцию:
Public Function SquareEquation(a As Integer , b As Integer , c As Integer ) As String
Dim answer1 As String
Dim answer2 As String
If a = 0 Then
answer1 = «Единственный корень — »
SquareEquation = answer1 & «(» & -c / b & «)»
ElseIf c = 0 Then
answer1 = «Единственный корень — »
SquareEquation = answer1 & «(» & -b / a & «)»
ElseIf b = 0 And c = 0 Then
answer1 = «Первый корень — »
answer2 = «Второй корень — »
SquareEquation = answer1 & «(» & (-b + Sqr(b ^ 2 — 4 * a * c)) / (2 * a) & «)» & «; » & _
answer2 & «(» & (-b — Sqr(b ^ 2 — 4 * a * c)) / (2 * a) & «)»
Else :
SquareEquation = «Решений нет»
End If
End Function
Найдем корни первого уравнения:
Выполним расчеты для остальных уравнений. Полученные результаты:
Мы создали свою пользовательскую функцию для расчета квадратных уравнений, которой раньше не было в Excel по умолчанию.
Как создать пользовательскую функцию в Microsoft Excel
Хотя в Excel множество (возможно, сотни) встроенных функций, таких как SUM (СУММ), VLOOKUP (ВПР), LEFT (ЛЕВСИМВ) и других, как только вы начинаете использовать Excel для более сложных задач, вы можете обнаружить, что вам нужна такая функция, которой еще не существует. Не отчаивайтесь, вы всегда можете создать функцию сами.
Создайте «заголовок» или «прототип» вашей функции. Он должен иметь следующую структуру:
public function TheNameOfYourFunction (param1 As type1, param2 As type2 ) As returnType У нее может быть сколько угодно параметров, а их тип должен соответствовать любому базовому типу данных Excel или типу объектов, например Range. Параметры в данном случае выступают в качестве «операндов», с которыми работает функция. Например, если вы пишете SIN(45), чтобы вычислить синус 45 градусов, 45 выступает в качестве параметра. Код вашей функции будет использовать это значение для вычислений и представления результата.
Добавьте код нужной функции, убедившись, что вы 1) используете значения, передаваемые в качестве параметров; 2) присваиваете результат имени функции; 3) заканчиваете код функции выражением «end function». Изучение программирования на VBA или на любом другом языке может занять некоторое время и требовать подробного изучения руководства. Однако функции обычно имеют небольшие блоки кода и используют очень мало возможностей языка. Наиболее используемые элементы языка VBA:
-
Блок If, который позволяет выполнять какую-то часть кода только в случае выполнения условия. Например:
Public Function Course Result(grade As Integer) As String
If grade >= 5 Then
CourseResult = «Approved»
Else
CourseResult = «Rejected»
End If
End Function
Обратите внимание на элементы внутри блока If: IF условие THEN код_1 ELSE код_2 END IF . Ключевое слово Else и вторая часть кода необязательны.
Блок Do, который выполняет часть кода, пока выполняется условие (While) или до тех пор (Until), пока оно не выполнится. Например:
Public Function IsPrime(value As Integer) As Boolean
Dim i As Integer
i = 2
IsPrime = True
Do
If value / i = Int(value / i) Then
IsPrime = False
End If
i = i + 1
Loop While i
Обратите внимание на элементы: DO код LOOP WHILE/UNTIL условие . Обратите также внимание на вторую строку, где «объявлена» переменная. В своем коде вы можете добавлять переменные и позже их использовать. Переменные служат для хранения временных значений внутри кода. И наконец, обратите внимание, что функция объявлена как BOOLEAN, что является типом данных, в котором допустимы только значения TRUE и FALSE. Этот способ определения, является ли число простым, далеко не самый оптимальный, но мы оставили его таким, чтобы сделать код более читабельным.
Блок For, который выполняет часть кода указанное число раз. Например:
Public Function Factorial(value As Integer) As Long
Dim result As Long
Dim i As Integer
If value = 0 Then
result = 1
ElseIf value = 1 Then
result = 1
Else
result = 1
For i = 1 To value
result = result * i
Next
End If
Factorial = result
End Function
Обратите внимание на элементы: FOR переменная = начальное_значение TO конечное_значение код NEXT . Также обратите внимание на элемент ElseIf в выражении If, который позволяет добавить больше условий к коду, который нужно выполнить. И наконец, обратите внимание на объявление функции и переменной «result» как Long. Тип данных Long позволяет хранить значения, намного превышающие Integer.
Ниже показан код функции, преобразующей небольшие числа в слова.
Перейдите обратно в рабочую книгу Excel и используйте свою функцию, набрав в какой-либо ячейке знак равно, а затем имя функции. Добавьте к имени функции открывающую скобку, параметры, разделенные запятыми, и закрывающую скобку. Например:
Вы также можете использовать свою пользовательскую функцию, найдя ее в категории Пользовательские в мастере вставки формулы. Просто нажмите на кнопку Fx, расположенную слева от поля формул. Параметры могут быть трех типов:
- Константные значения, непосредственно вводимые в формуле в ячейке. Текстовые строки в таком случае должны быть заключены в кавычки.
- Ссылки на ячейки вроде B6 или ссылки на диапазоны вроде A1:C3 (параметр должен иметь тип Range).
- Другие вложенные функции (ваша функция тоже может быть вложенной по отношению к другим функциям). Например: =Factorial(MAX(D6:D8))