Содержание
Несмотря на то, что Excel имеет много, возможно, сотни встроенных функций, таких как СУММ, ВПР, ВЛЕВО и т. Д., Когда вы начинаете использовать Excel для более сложных задач, вы часто обнаруживаете, что вам нужна функция, которой не существует. Не волнуйтесь, еще не все потеряно; все, что вам нужно, это создать желаемую функцию.
Шаги
- Создайте новую книгу или откройте книгу, в которой вы хотите использовать недавно созданную функцию, определяемую пользователем (FDU).
-
Откройте редактор Visual Basic который встроен в Microsoft Excel, перейдя в Инструменты-> Макро-> Редактор Visual Basic (или нажав Alt + F11). -
Добавить новый модуль в свою книгу, нажав указанную кнопку. Вы можете создать пользовательскую функцию на самом листе, не добавляя новый модуль, но это не позволит вам использовать ее на других листах в той же книге. -
Создайте «заголовок» или «прототип» вашей функции. У вас должна быть следующая структура: публичная функция TheNameOfYourFunction (param1 As type1, param2 As type2) As returnType Параметров может быть сколько угодно, и их тип может быть любым из основных типов данных или типов объектов Excel, таких как Range. Вы можете думать о параметрах как о «операндах», с которыми будет действовать ваша функция. Например, когда вы говорите SIN (45) для вычисления синуса 45 градусов, 45 будет принято в качестве параметра. Затем код вашей функции будет использовать это значение для выполнения некоторых вычислений и представления результата. - Добавьте код функции, убедившись: 1) использовать значения, указанные в параметрах; 2) присвоить результат имени функции; и 3) закройте функцию с помощью «end function». Изучение программирования на VBA или любом другом языке может занять некоторое время и потребовать подробного руководства. Однако функции часто имеют небольшие блоки кода и используют мало языковых ресурсов. Наиболее полезными элементами языка VBA являются:
- Блок Если, что позволяет запускать часть кода только при выполнении условия. Например:
Открытая функция CourseResult (сетка как целое число) как строка
Если оценка> = 5 Тогда
CourseResult = "Утверждено"
Еще
CourseResult = "Отклонено"
Конец, если
Конечная функция
Обратите внимание на элементы в блоке кода Если:IF условие THEN код ELSE код END IF. Ключевое слово Еще вместе со второй частью кода являются необязательными.
- Блок Из, который выполняет фрагмент кода Пока (пока) или До того как (пока) не будет выполнено условие. Например:
Открытая функция IsPrime (значение как целое число) как логическое
Dim i как целое число
я = 2
IsPrime = True
Из
Если value / i = Int (value / i) Тогда
IsPrime = False
Конец, если
я = я + 1
Цикл, пока я <значение и IsPrime = True
Конечная функция
Снова посмотрите на элементы:Код DO LOOP WHILE / UNTIL условие. Также обратите внимание на вторую строку, где «объявлена» переменная. Вы можете добавлять переменные в свой код, чтобы использовать их позже. Переменные действуют как временные значения в коде. Наконец, посмотрите на объявление функции как BOOLEAN, который является типом данных, который допускает только значения TRUE и FALSE. Этот метод определения того, является ли число простым, не идеален, но я предпочитаю оставить его как есть, чтобы код было легче читать.
- Блок За, который выполняет часть кода указанное количество раз. Например:
Факториал публичной функции (значение как целое число) до тех пор, пока
Тусклый результат Как долго
Dim i как целое число
Если значение = 0 Тогда
результат = 1
ElseIf value = 1 Тогда
результат = 1
Еще
результат = 1
Для i = 1 По значению
результат = результат * я
Следующий
Конец, если
Факториал = результат
Конечная функция
Посмотрите еще раз на элементы:FOR переменная = нижний предел TO верхний предел кода NEXT. Также обратите внимание на элемент ElseIf добавлено в заявлении Если, что позволяет добавлять дополнительные параметры для кода, который будет выполняться. Наконец, посмотрите на объявление функции и переменную "результат" как Длинный. Тип данных Длинный допускает гораздо более высокие значения, чем 'Integer'.
Ниже приведен код функции, преобразующей числа в слова.
- Блок Если, что позволяет запускать часть кода только при выполнении условия. Например:
- Вернитесь к своей книге и используйте функцию, начав содержимое ячейки с равный за которым следует название вашей роли. Добавьте открывающую скобку к имени функции, параметры разделите запятая и последняя закрывающая скобка. Например:= NumberToLetters (A4) Вы также можете использовать определенную пользователем формулу, выполнив поиск в категории Определяемые пользователем в мастере ввода формулы. Просто нажмите кнопку Fx расположен слева от строки формул. Параметры могут быть трех типов:
- Постоянные значения вводятся непосредственно в формулу ячейки. В этом случае строки должны быть заключены в кавычки.
- Ссылки на ячейки вроде B6 или интервалы вроде A1: C3 (параметр должен иметь тип Перемена"")
- Другие функции, расположенные внутри вашей функции (ваша функция также может быть сгруппирована внутри других функций). То есть: = Факториал (МАКС (D6: D8))
- Проверьте, в порядке ли результат после использования функции несколько раз убедитесь, что она правильно обрабатывает различные значения параметров:
подсказки
- Каждый раз, когда вы пишете блок кода в структуре управления, такой как If, For, Do и т. Д., Не забывайте делать отступ для блока, используя некоторые пробелы или табуляции (стиль отступа зависит от вас).Таким образом, ваш код будет легче понять, и будет намного легче обнаруживать ошибки и улучшать код.
- В Excel есть множество встроенных функций, и большинство вычислений можно выполнять, используя их по отдельности или в комбинации. Перед запуском собственного кода выполните поиск в списке доступных функций. Выполнение может быть быстрее, если вы используете встроенные функции.
- Иногда функции могут не потребоваться все параметры для вычисления результата. В этом случае вы можете использовать ключевое слово Необязательный перед именем параметра в заголовке функции. Вы можете использовать IsMissing (имя_параметра) в коде, чтобы определить, присвоено ли значение параметру.
- Если вы не знаете, как написать код для функции, прочтите Как написать простой макрос в Microsoft Excel.
- Используйте имя, которое еще не определено в качестве имени функции в Excel, иначе вы сможете использовать только одну из функций.
Предупреждения
- Из-за мер безопасности некоторые люди могут отключать макросы. Сообщите коллегам, что в отправляемой вами книге есть макросы, и им можно доверять, поскольку они не повредят ваши компьютеры.
- Функции, использованные в этой статье, не являются лучшим способом решения упомянутых проблем. Они использовались только для объяснения использования структур управления языком.
- VBA, как и любой другой язык, имеет несколько других управляющих структур, помимо Do, If и For. Они были объяснены здесь только для того, чтобы прояснить, что можно сделать в исходном коде функции. Существует множество онлайн-руководств, в которых вы можете изучить VBA.