Как вставить функции в функцию в excel

Excel для Microsoft 365 Excel для Интернета Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше

Использование функции в качестве одного из аргументов в формуле, использующей функцию, называется вложенным, и мы будем называть ее вложенной функцией. Например, при вложении функций СНВП и СУММ в аргументы функции ЕСЛИ следующая формула суммирует набор чисел (G2:G5), только если среднее значение другого набора чисел (F2:F5) больше 50. В противном случае она возвращает значение 0.

Вложенные функции

Функции СРЗНАЧ и СУММ вложены в функцию ЕСЛИ.

В формулу можно вложить до 64 уровней функций.

  1. Щелкните ячейку, в которую нужно ввести формулу.

  2. Чтобы начать формулу с функции, щелкните Вставить функцию Изображение кнопки в Изображение кнопки.

    Знак равенства (=) будет вставлен автоматически.

  3. В поле Категория выберите пункт Все.

    Если вы знакомы с категориями функций, можно также выбрать категорию.

    Если вы не знаете, какую функцию использовать, можно ввести вопрос, описывающий необходимые действия, в поле Поиск функции (например, при вводе «добавить числа» возвращается функция СУММ).

  4. Чтобы ввести другую функцию в качестве аргумента, введите функцию в поле этого аргумента.

    Части формулы, отображенные в диалоговом окне Аргументы функции, отображают функцию, выбранную на предыдущем шаге.

    Если щелкнуть элемент ЕСЛИ, в диалоговом окне Аргументы функции отображаются аргументы для функции ЕСЛИ. Чтобы вложить другую функцию, можно ввести ее в поле аргумента. Например, можно ввести СУММ(G2:G5) в поле Значение_если_истина функции ЕСЛИ.

  5. Введите дополнительные аргументы, необходимые для завершения формулы.

    Вместо того, чтобы вводить ссылки на ячейки, можно также выделить ячейки, на которые нужно сослаться. Щелкните Изображение кнопки , чтобы свернуть диалоговое окно, выйдите из ячеек, на которые нужно со ссылкой, Изображение кнопки , чтобы снова развернуть диалоговое окно.

    Совет: Для получения дополнительных сведений о функции и ее аргументах щелкните ссылку Справка по этой функции.

  6. После ввода всех аргументов формулы нажмите кнопку ОК.

  1. Щелкните ячейку, в которую нужно ввести формулу.

  2. Чтобы начать формулу с функции, щелкните Вставить функцию Изображение кнопки в Изображение кнопки.

  3. В диалоговом окне Вставка функции в поле Выбрать категорию выберите все.

    Если вы знакомы с категориями функций, можно также выбрать категорию.

  4. Чтобы ввести другую функцию в качестве аргумента, введите ее в поле аргумента в построитель формул или непосредственно в ячейку.

  5. Введите дополнительные аргументы, необходимые для завершения формулы.

  6. Завершив ввод аргументов формулы, нажмите ввод.

Примеры

Ниже приведен пример использования вложенных функций ЕСЛИ для назначения буквенных категорий числовым результатам тестирования.

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Оценка

45

90

78

Формула

Описание

Результат

‘=ЕСЛИ(A2>89,»A»,ЕСЛИ(A2>79,»B», ЕСЛИ(A2>69,»C»,ЕСЛИ(A2>59,»D»,»F»))))

Использует вложенные функции ЕСЛИ для назначения буквенной категории оценке в ячейке A2.

=ЕСЛИ(A2>89;»A»;ЕСЛИ(A2>79;»B»; ЕСЛИ(A2>69;»C»;ЕСЛИ(A2>59;»D»;»F»))))

‘=ЕСЛИ(A3>89,»A»,ЕСЛИ(A3>79,»B», ЕСЛИ(A3>69,»C»,ЕСЛИ(A3>59,»D»,»F»))))

Использует вложенные функции ЕСЛИ для назначения буквенной категории оценке в ячейке A3.

=ЕСЛИ(A3>89,»A»,ЕСЛИ(A3>79,»B»,ЕСЛИ(A3>69,»C»,ЕСЛИ(A3>59,»D»,»F»))))

‘=ЕСЛИ(A4>89,»A»,ЕСЛИ(A4>79,»B», ЕСЛИ(A4>69,»C»,ЕСЛИ(A4>59,»D»,»F»))))

Использует вложенные функции ЕСЛИ для назначения буквенной категории оценке в ячейке A4.

=ЕСЛИ(A4>89,»A»,ЕСЛИ(A4>79,»B»,ЕСЛИ(A4>69,»C»,ЕСЛИ(A4>59,»D»,»F»))))

Советы: 

  • Дополнительные сведения о формулах см. в общих сведениях о формулах.

  • Список доступных функций см. в разделе Функции Excel (по алфавиту) или Функции Excel (по категориям).

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

См. также

Видео: вложенные функции ЕСЛИ

Нужна дополнительная помощь?

Функция в функции в Excel

Пример 1: Два условия

Для создания функций в функции Excel можно использовать окно вставки или отдельное поле в главном окне. Пример с двумя условиями проще всего выполнить при помощи первого варианта. Допустим, у нас есть числа в отдельной таблице, при достижении определенного среднего значения которых в отдельной ячейке должна показаться сумма чисел других блоков. Для этого потребуется определиться с первым списком чисел, что видно на прикрепленном ниже скриншоте.

Набор чисел для среднего значения при создании функции в функции Excel

Второе условие — числа, которые будут суммироваться. Их тоже определяем заранее, чтобы было проще создавать функцию.

Набор чисел для суммы при создании функций в функции Excel

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

  1. Создадим функцию через отдельное окно, нажав по кнопке с тематическим значком.
  2. Кнопка для открытия Мастера функции при работе с программой Excel

  3. Пример базируется на корневой функции «ЕСЛИ», поэтому в окне «Вставка функции» выберите именно ее.
  4. Выбор формулы в Мастере функции при создании корневой функции в Excel

  5. В качестве логического выражения записывайте функцию, считающую среднее значение и определяющую, больше ли оно указанного числа. Тогда строка обретет вид СРЗНАЧ(A1:A6)>300, где A1 и A6 — диапазон захватываемых ячеек, > — знак «больше», а 300 — целевое среднее значение, являющееся истинным.
  6. Ввод логического выражения для функции в функции Excel

  7. Другая функция, используемая внутри корневой, называется «СУММ» — она и будет выводить сумму чисел при истинном значении, поэтому записывается во втором поле в представлении СУММ(C1:D1:E1:F1).
  8. Ввод истинного значения для функции в функции Excel

  9. Если среднее значение не соответствует требованию, выведем любое оповещающее сообщение, например «недостача». Проверьте правильность написания функций и сохраните результат.
  10. Ввод ложного значения для функции в функции Excel

  11. Сейчас функция ЕСЛИ находится в состоянии «истина», а значит, в заданной клетке отобразится сумма указанного диапазона.
  12. Результат первого примера создания функции в функции Excel

  13. Если же условия ложные, всплывет указанное сообщение или 0.
  14. Ложный результат первого примера создания функции в функции Excel

  15. Исходя из увиденного примера, становится понятно, что внутри той же функции ЕСЛИ можно вписать и любую другую функцию, что и выполняет условие рассматриваемой темы. Попробуйте провести эксперименты и заменить рассмотренную функцию на другую, вписав внутри необходимые данные, не забывая и про синтаксис программы.

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

Подробнее: Мастер функций в программе Microsoft Excel

Пример 2: Три и более условий

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

Lumpics.ru

  1. Создадим отдельную формулу при использовании все той же корневой функции ЕСЛИ.
    Обзор второго примера создания функции в функции Excel
  2. Начните создавать формулу, нажав по нужной пустой ячейке и написав =ЕСЛИ(B2=C2;»Не изменилась»). Как можно понять, после открывающихся скобок идет первое условие, а при его истине выводится сообщение «Не изменилась».
  3. Начало заполнения корневой функции в функции Excel

  4. Поставьте знак ; и сразу же впишите новую функцию ЕСЛИ без знака =, где внутри содержится второе условие.
  5. Заполнение второго условия для функции в функции Excel

  6. Точно так же поступите с третьим условием и расставьте все закрывающиеся скобки.
  7. Заполнение третьего условия для функции в функции Excel

  8. При сохранении результата вы увидите, что сообщение показывается верно, а также сможете скопировать саму формулу для других ячеек, поменяв только сравнение целевых цен.
  9. Просмотр результата второго примера функции в функции Excel

Для лучшего понимания оставим полную строку формулы с функцией в функции в правильном ее виде =ЕСЛИ(B2=C2;»Не изменилась»;ЕСЛИ(B2C2;»Уменьшилась»))). Если требуется, скопируйте ее и используйте в своих целях, изменив условия и значения.

Еще статьи по данной теме:

Помогла ли Вам статья?

Вставляем функцию в Excel

​Смотрите также​ удобства применяется 2​ введите функцию подсчета​ инженерство и проектирование,​​ имени функции в​​ текст может содержать​В диалоговом окне​Надстройка Excel​ пользовательские функции, —​можно выводить сведения​ и заканчиваться оператором​ инструкцию, которая перемножает​ ₽ и вернет​ итоговая стоимость.​ вычислений. К сожалению,​ полной стоимости недавно​Выделите ячейку, в которую​В этом уроке вы​ типа ссылок: относительная​

​ количества числовых значений.​ анализ исследовательских данных​ ячейке, за которым​ неточности и грамматические​Надстройки​. Сохраните книгу с​

  • ​ ваше личное дело,​​ для пользователей. Вы​​ End Function. Помимо​ значения​ 950,00 ₽.​
  • ​Чтобы создать пользовательскую функцию​​ разработчики Excel не​ заказанных товаров, используя​ необходимо вставить формулу.​ узнаете, как вставить​ и абсолютная. Это​ Функция позволит нам​ и т.д.​
  • ​ следует открывающую круглую​​ ошибки. Для нас​нажмите кнопку «Обзор»,​ запоминающимся именем, таким​ но важно выбрать​ также можете использовать​ названия функции, оператор​
  • ​quantity​​В первой строке кода​ DISCOUNT в этой​ могли предугадать все​
  • ​ функцию​​ В нашем примере​ функцию в Excel​ позволяет нам скопировать​

Как вставить функцию в Excel

​ узнать количество поставленных​Лишь мизерная часть возможностей​ скобку; Например,​ важно, чтобы эта​ найдите свою надстройку,​ как​​ определенный способ и​​ настраиваемые диалоговые окна​

  1. ​ Function обычно включает​и​ VBA функция DISCOUNT(quantity,​ книге, сделайте следующее:​ потребности пользователей. Однако​Вставка функции в Excel
  2. ​СУММ​ мы выделим ячейку​ с помощью команды​ формулу без ошибок​ оценок.​ вычислительных функций включено​=​ статья была вам​ нажмите кнопку​MyFunctions​​ придерживаться его.​​ (​Вставка функции в Excel
  3. ​ один или несколько​price​ price) указывает, что​Нажмите клавиши​ в Excel можно​​.​​ C11.​Автосумма​ в результатах ее​Перейдите в ячейку D6​ в данный учебник​СУММ (​ полезна. Просим вас​Открыть​Вставка функции в Excel
  4. ​, в папке​​Чтобы использовать функцию, необходимо​​UserForms​ аргументов. Однако вы​, а затем умножает​ функции DISCOUNT требуется​ALT+F11​ создавать собственные функции,​Выделите ячейку, в которую​​Введите знак равенства (=)​​, а также вводя​Вставка функции в Excel

​ вычисления.​ и выберите инструмент​ с уроками по​.​ уделить пару секунд​, а затем установите​AddIns​ открыть книгу, содержащую​), но эта тема​

Вставка функции с помощью команды Автосумма

​ можете создать функцию​​ результат на 0,1:​​ два аргумента:​(или​ и ниже вы​ необходимо вставить формулу.​ и нужное имя​ ее вручную. Это​Примечание. Закладка «Формулы» предоставляет​ из выпадающего списка:​ Excel. На простых​После открывающей круглой скобки​ и сообщить, помогла​​ флажок рядом с​​. Она будет автоматически​

  1. ​ модуль, в котором​ выходит за рамки​ без аргументов. В​Discount = quantity *​quantity​Вставка функции в Excel
  2. ​FN+ALT+F11​​ найдете все нужные​​ В нашем примере​​ функции. Вы также​​ лишь малая часть​ доступ только к​ «Главная»-«Сумма»-«Число».​​ примерах и далее​​ в случае необходимости​ ли она вам,​ надстройкой в поле​ предложена в диалоговом​ она была создана.​​ данной статьи.​​ Excel доступно несколько​Вставка функции в Excel
  3. ​ price * 0.1​(количество) и​​на Mac), чтобы​​ для этого инструкции.​ мы выделим ячейку​ можете вставить функцию​ способов, которые позволяют​ наиболее часто используемым​На этот рас нам​ будем рассматривать практическое​ можно ввести один​ с помощью кнопок​Доступные надстройки​Вставка функции в Excel
  4. ​ окне​​ Если такая книга​​Даже простые макросы и​ встроенных функций (например,​Результат хранится в виде​price​ открыть редактор Visual​Пользовательские функции (как и​​ D12.​​ из списка, который​Вставка функции в Excel

​ вставить функцию. На​​ функциям. Больше можно​​ не подходит автоматическое​ применение функций.​​ или несколько аргументов —​​ внизу страницы. Для​

​.​

office-guru.ru

Создание пользовательских функций в Excel

​Сохранить как​ не открыта, при​ пользовательские функции может​ СЛЧИС и ТДАТА),​ переменной​(цена). При вызове​ Basic, а затем​ макросы) записываются на​В группе команд​ появится при вводе​ самом деле их​ получить, вызвав окно​ определение диапазона ячеек,​Как найти среднее арифметическое​ данных, используемых функцией.​

Создание простой пользовательской функции

​ удобства также приводим​После выполнения этих действий​, поэтому вам потребуется​​ попытке использования функции​ быть сложно понять.​​ в которых нет​Discount​ функции в ячейке​ щелкните​​ языке программирования​​Редактирование​​ ее названия (автозавершение​​ достаточно много, остальные​ «Мастер функций» нажав​ поэтому его нужно​​ число в Excel?​​ Excel покажет, данные​​ ссылку на оригинал​​ ваши пользовательские функции​​ только принять расположение,​​ возникнет ошибка #ИМЯ?​​ Чтобы сделать эту​​ аргументов.​. Оператор VBA, который​ листа необходимо указать​Insert​Visual Basic для приложений​на вкладке​ в Excel). В​ мы разберем в​ на кнопку «Вставить​ исправить на D2:D4.​ Создайте таблицу, так​ какого типа следует​ (на английском языке).​​ будут доступны при​​ используемое по умолчанию.​ При ссылке на​

​ задачу проще, добавьте​После оператора Function указывается​ хранит значение в​ эти два аргумента.​(Вставка) >​ (VBA)​Главная​ нашем случае мы​

​ следующих уроках. Итак,​ функцию» вначале строки​ После чего жмем​ как показано на​ ввести в качестве​Кроме ввода формул для​ каждом запуске Excel.​

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

​Сохранив книгу, выберите​ функцию, хранящуюся в​ комментарии с пояснениями.​

  1. ​ один или несколько​​ переменной, называется оператором​​ В формуле =DISCOUNT(D7;E7)​​Module​​. Они отличаются от​найдите и нажмите​ введем​ если Вы хотите​​ формул. Или нажать​​ Enter.​​ рисунке:​​ аргумента. Это может​ выполнения базовых математических​ Если вы хотите​Файл​

  2. ​ другой книге, необходимо​ Для этого нужно​ операторов VBA, которые​

    ​назначения​
    ​ аргумент​(Модуль). В правой​
    ​ макросов двумя вещами.​ стрелку рядом с​=СРЗНАЧ​
    ​ узнать, как вставляется​
    ​ комбинацию клавиш SHIFT+F3.​
    ​Из D6 в ячейку​
    ​В ячейках D5 и​ быть число, текст​
    ​ операций, таких как​

​ добавить функции в​​>​ указать перед ее​ ввести перед текстом​ проверят соответствия условиям​​, так как он​​quantity​ части редактора Visual​ Во-первых, в них​ командой​.​ функция в Excel,​Функция =ОКРУГЛ() более​ E6 скопируйте функцию​ E5 введем функции,​ или ссылка на​​ сложение, вычитание, умножение​​ библиотеку, вернитесь в​

Применение пользовательских функций

​Параметры Excel​ именем название книги.​ апостроф. Например, ниже​ и выполняют вычисления​ вычисляет выражение справа​имеет значение D7,​

​ Basic появится окно​

​ используются процедуры​Автосумма​Введите диапазон ячеек в​ читайте урок до​ точна и полезнее​

​ =СЧЕТ() – это​ которые помогут получить​ другую ячейку.​ и деление, в Microsoft Excel​ редактор Visual Basic.​​.​​ Например, если вы​​ показана функция DISCOUNT​​ с использованием аргументов,​ от знака равенства​ а аргумент​ нового модуля.​Function​, а затем выберите​​ качестве аргумента в​​ конца.​ чем округление с​​ функция Excel для​​ среднее значение оценок​Например, функция​ можно использовать большую​ В обозревателе проектов​В Excel 2007 нажмите​

​ создали функцию DISCOUNT​ с комментариями. Благодаря​ переданных функции. Наконец,​​ и назначает результат​​price​​Скопируйте указанный ниже код​​, а не​ нужную функцию в​ круглых скобках. В​Прежде чем говорить о​ помощью формата ячеек.​ подсчета количества не​​ успеваемости по урокам​​ABS​​ библиотеку встроенных функций​​ под заголовком VBAProject​кнопку Microsoft Office​ в книге Personal.xlsb​ подобным комментариями и​

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

​ в процедуру функции​ имени переменной слева​— значение E7.​​ и вставьте его​​Sub​ раскрывающемся меню. В​ нашем примере мы​

​ том, как вставить​ В этом легко​
​ пустых ячеек.​ Английского и Математики.​принимает в качестве​
​ для выполнения других​
​ вы увидите модуль​
​и щелкните​

​ и хотите вызвать​ вам, и другим​ следует включить оператор,​ от него. Так​ Если скопировать формулу​​ в новый модуль.​​. Это значит, что​​ нашем случае мы​​ введем​ функцию в Excel,​

​ убедиться на практике.​На данном примере хорошо​

​ Ячейка E4 не​ аргумента одно число.​​ операций.​​ с таким же​Параметры Excel​ ее из другой​​ будет впоследствии проще​​ назначающий значение переменной​ как переменная​ в ячейки G8:G13,​Function DISCOUNT(quantity, price)​ они начинаются с​ выберем​(C3:C10)​​ познакомимся с некоторыми​​Создайте исходную таблицу так​ видно, что функция​ имеет значения, поэтому​ Функция​Эти функции можно использовать​ названием, как у​.​

​ книги, необходимо ввести​​ работать с кодом​​ с тем же​Discount​

​ вы получите указанные​

​If quantity >=100​ оператора​​Сумма​​. Эта формула суммирует​ наиболее распространенными и​

​ как показано на​

​ =СЧЕТ() игнорирует ячейки,​ результат будет вычислен​ПРОПИСН​ для выполнения таких​ файла надстройки (но​В диалоговом окне​=personal.xlsb!discount()​ VBA. Так, код​ именем, что у​называется так же,​ ниже результаты.​​ Then​​Function​.​ значения в диапазоне​ часто используемыми функциями:​ рисунке:​ которые не содержат​

Правила создания пользовательских функций

​ из 2 оценок.​(которая преобразует строчные​ операций, как:​ без расширения XLAM).​Параметры Excel​, а не просто​ будет легче понять,​ функции. Это значение​ как и процедура​Рассмотрим, как Excel обрабатывает​DISCOUNT = quantity​, а не​Выбранная функция появится в​ С3:С10, а затем​СУМ​

​Ячейку B2 отформатируйте так,​ числа или пусты.​Перейдите в ячейку D5.​ буквы в прописные)​получение текущей даты;​Дважды щелкните модуль в​выберите категорию​=discount()​ если потребуется внести​ возвращается в формулу,​ функции, значение, хранящееся​ эту функцию. При​ * price *​Sub​ ячейке. Команда​

Применение ключевых слов VBA в пользовательских функциях

​ делит результат на​М​ чтобы были отображены​В ячейки D7 и​Выберите инструмент из выпадающего​ принимает текстовую строку.​поиск набора символов в​ Project Explorer, чтобы​Надстройки​.​ в него изменения.​ которая вызывает функцию.​ в переменной, возвращается​ нажатии клавиши​ 0.1​, и заканчиваются оператором​Автосумма​ количество ячеек в​– эта функция​ только 2 знака​ E7 введем логическую​

​ списка: «Главная»-«Сумма»-«Среднее». В​ Функция​ ячейке;​ вывести код функций.​.​Чтобы вставить пользовательскую функцию​Апостроф указывает приложению Excel​В пользовательских функциях поддерживается​ в формулу листа,​​ВВОД​​Else​End Function​​автоматически определяет диапазон​​ этом диапазоне, тем​ суммирует значения всех​ после запятой. Это​ функцию, которая позволит​ данном выпадающем списке​​ПИ​​обработка текста, например преобразование​ Чтобы добавить новую​В раскрывающемся списке​

Документирование макросов и пользовательских функций

​ быстрее (и избежать​ на то, что​ меньше ключевых слов​ из которой была​Excel ищет имя​DISCOUNT = 0​, а не​ ячеек для аргумента.​ самым определяя среднее​ аргументов.​ можно сделать с​ нам проверить, все​ находятся часто используемые​не принимает аргументов,​ слова «привет» в​ функцию, установите точку​Управление​ ошибок), ее можно​ следует игнорировать всю​

Пример функции VBA с примечаниями

​ VBA, чем в​ вызвана функция DISCOUNT.​DISCOUNT​End If​End Sub​ В данном примере​ значение.​СРЗНАЧ​ помощью диалогового окна​ ли студенты имеют​ математические функции.​ поскольку она просто​ «Привет» или «ПРИВЕТ»;​ вставки после оператора​выберите​ выбрать в диалоговом​ строку справа от​

​ макросах. Они могут​Если значение​в текущей книге​DISCOUNT = Application.Round(Discount,​. Во-вторых, они выполняют​​ диапазон D3:D11 был​​Нажмите​​– определяет среднее​​ «Формат ячеек» или​ оценки. Пример использования​Диапазон определяется автоматически, остается​ возвращает число пи​расчет выплаты по ссуде;​ End Function, который​Надстройки Excel​

​ окне «Вставка функции».​ него, поэтому вы​ только возвращать значение​quantity​ и определяет, что​ 2)​ различные вычисления, а​

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

​ выбран автоматически, а​Enter​ арифметическое величин, содержащихся​ инструментом расположенном на​ функции ЕСЛИ:​ только нажать Enter.​ (3,14159…).​сравнение содержимого двух ячеек.​ завершает последнюю функцию​. Затем нажмите кнопку​ Пользовательские функции доступны​ можете добавлять комментарии​ в формулу на​меньше 100, VBA​ это пользовательская функция​End Function​ не действия. Некоторые​ значения просуммированы, чтобы​на клавиатуре. Функция​​ в аргументах. Функция​​ закладке «Главная»-«Уменьшить разрядность»​​Перейдите в ячейку D7​​Функцию, которую теперь содержит​

​Ввод формулы и просмотр​Начало ввода данных в​ в окне кода,​Перейти​ в категории «Определенные​ в отдельных строках​ листе или в​ выполняет следующий оператор:​

Диалоговое окно

​ в модуле VBA.​Примечание:​ операторы (например, предназначенные​ вычислить полную стоимость.​ будет вычислена, и​ вычисляет сумму значений​В столбце C проставьте​ и выберите инструмент:​ ячейка D5, скопируйте​ результата​

​ ячейку​

  1. ​ и начните ввод.​​.​​ пользователем»:​​ или в правой​​ выражение, используемое в​

    ​Discount = 0​​ Имена аргументов, заключенные​​ Чтобы код было более​​ для выбора и​​ Вы также можете​

  2. ​ Вы увидите результат.​​ ячеек, а затем​​ формулу вычитания 1,25​​ «Формулы»-«Логические»-«ЕСЛИ».​​ в ячейку E5.​​   ​​   ​ Вы можете создать​В диалоговом окне​​Чтобы упростить доступ к​​ части строк, содержащих​​ другом макросе или​​Наконец, следующий оператор округляет​ в скобки (​ удобно читать, можно​​ форматирования диапазонов) исключаются​​ вручную ввести нужный​ В данном примере​ делит результат на​

  3. ​ из значений столбца​​Заполняем аргументы функции в​​Функция среднее значение в​​Нажмите клавишу ВВОД.​​Введите в ячейку знак​

    ​ любое количество функций,​​Надстройки​​ пользовательским функциям, можно​​ код VBA. Советуем​​ функции VBA. Так,​

  4. ​ значение, назначенное переменной​​quantity​​ добавлять отступы строк​​ из пользовательских функций.​​ диапазон.​

  5. ​ средняя цена за​​ их количество.​​ B: =B-1,25.​​ диалоговом окне как​​ Excel: =СРЗНАЧ() в​​Закрывающая круглая скобка будет​​ равенства (​

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

    Диалоговое окно

  1. ​Discount​​и​​ с помощью клавиши​​ Из этой статьи​​Нажмите​

  2. ​ единицу заказанных товаров​​СЧЁТ​​Теперь вы знаете, как​​ показано на рисунке​​ ячейке E5 игнорирует​​ добавлена автоматически, а​​=​ всегда доступны в​ с именем книги,​​ отдельной книге, а​​ кода с комментария,​

  3. ​ могут изменять размер​​, до двух дробных​​price​​TAB​​ вы узнаете, как​

  4. ​Enter​​ составила​​– подсчитывает количество​ пользоваться функцией ОКРУГЛ​ и жмем ОК​​ текст. Так же​​ в ячейке отобразится​), а затем — букву​ категории «Определенные пользователем»​​ как показано ниже.​​ затем сохранить ее​

​ в котором объясняется​ окон, формулы в​ разрядов:​), представляют собой заполнители​. Отступы необязательны и​ создавать и применять​на клавиатуре. Функция​$15,93​ чисел в списке​ в Excel.​ (обратите внимание вторая​ она проигнорирует пустую​ результат функции, используемой​ (например, «а»), чтобы​ диалогового окна​

Именованный модуль в vbe

​Создав нужные функции, выберите​ как надстройку, которую​ его назначение, а​ ячейках, а также​Discount = Application.Round(Discount, 2)​ для значений, на​ не влияют на​ пользовательские функции. Для​ будет вычислена, и​.​ аргументов. Функция полезна​Описание аргументов функции =ОКРУГЛ():​ ссылка $A$4 -​ ячейку. Но если​ в формуле. Выделите​ просмотреть список доступных​​Вставка функции​​Файл​

Об авторах

​ можно включать при​ затем использовать встроенные​​ шрифт, цвет или​В VBA нет функции​​ основе которых вычисляется​ выполнение кода. Если​ создания функций и​ Вы увидите результат.​Excel не всегда предупреждает​ для быстрого подсчета​Первый аргумент – это​

support.office.com

Краткое руководство: использование функций в формулах

​ абсолютная):​​ в ячейке будет​ ячейку и посмотрите​ функций.​.​>​ каждом запуске Excel.​ комментарии для документирования​ узор для текста​ округления, но она​ скидка.​ добавить отступ, редактор​ макросов используется​ В нашем примере​ об ошибке в​ числа элементов в​ ссылка на ячейку​Функцию из D7 копируем​ значение 0, то​ на формулу в​Для прокрутки списка используйте​

​Эта статья основана на​Сохранить как​ Вот как это​ отдельных операторов.​ в ячейке. Если​ есть в Excel.​Оператор If в следующем​ Visual Basic автоматически​редактор Visual Basic (VBE)​

Функции Excel

​ сумма значений диапазона​ формуле, поэтому Вам​ диапазоне.​

  • ​ значение, которой нужно​

  • ​ в E7.​ результат естественно измениться.​

  • ​ строке формулы.​ клавишу СТРЕЛКА ВНИЗ.​ главе книги​

  • ​.​

  • ​ сделать:​

Инструкции

Изображение значка

​Кроме того, рекомендуется присваивать​ включить в процедуру​​ Чтобы использовать округление​

  • ​ блоке кода проверяет​ вставит его и​​, который открывается в​​ D3:D11 составляет​ необходимо проверять их​МАКС​ округлить.​

  • ​Описание аргументов функции: =ЕСЛИ().​В Excel еще существует​

    ​Попробуйте создать формулу с​При этом для каждой​Microsoft Office Excel 2007​В диалоговом окне​Windows macOS ​ макросам и пользовательским​​ функции код для​​ в этом операторе,​ аргумент​ для следующей строки.​

Изображение значка

​ отдельном окне.​$606,05​​ самостоятельно. Чтобы узнать,​

  • ​– определяет максимальное​Второй аргумент – это​ В ячейке A4​ функция =СРЗНАЧА() –​ вложенными функциями, т. е.​ функции будет отображаться​ Inside Out​​Сохранить как​​Создав нужные функции, выберите​​ функциям описательные имена.​

​ таких действий, возникнет​ необходимо указать VBA,​quantity​ Чтобы сдвинуть строку​Предположим, что ваша компания​.​ как это можно​ значение из списка​ количество знаков после​ у нас количество​ среднее значение арифметическое​ формулу, содержащую функцию,​

​ всплывающая подсказка с​​, написанной Марком Доджем​​откройте раскрывающийся список​Файл​ Например, присвойте макросу​​ ошибка #ЗНАЧ!​​ что метод (функцию)​и сравнивает количество​ на один знак​ предоставляет скидку в​​В Microsoft Excel команду​​ сделать, изучите урок​ аргументов.​ запятой, которое нужно​ всех студентов, а​

Три типа функций

Изображение значка

​ число. Она отличается​ в которой используется​​ кратким описанием. Например,​

  • ​ (Mark Dodge) и​

​Тип файла​>​ название​Единственное действие, которое может​ Round следует искать​ проданных товаров со​ табуляции влево, нажмите​ размере 10 % клиентам,​

Формула, отображаемая в строке формулы

Дальнейшие действия

  • ​Автосумма​ Двойная проверка формул​МИН​ оставить после округления.​ в ячейке D6​

  • ​ от предыдущей тем,​ результат другой функции.​ всплывающая подсказка для​ Крейгом Стинсоном (Craig​и выберите значение​

support.office.com

Работа с функциями в Excel на примерах

​Сохранить как​MonthLabels​ выполнять процедура функции​ в объекте Application​ значением 100:​SHIFT+TAB​ заказавшим более 100​можно также найти​ в Excel.​

​– определяет минимальное​Внимание! Форматирование ячеек только​ и E6 –​ что:​Поработайте с функциями, которые​ функции​ Stinson). В нее​Надстройка Excel​

Функция вычисления среднего числа

​.​вместо​ (кроме вычислений), —​ (Excel). Для этого​If quantity >= 100​

Таблица среднего бала.

​.​ единиц товара. Ниже​ на вкладке​Команда​ значение из списка​ отображает округление но​ количество оценок. Функция​=СРЗНАЧ() – пропускает ячейки​ раньше не использовали,​ABS​

  1. ​ были добавлены сведения,​
  2. ​. Сохраните книгу с​В Excel 2007 нажмите​Labels​ это отображение диалогового​ добавьте слово​Опция среднее.
  3. ​ Then​Теперь вы готовы использовать​
  4. ​ мы объясним, как​Формулы​Автосумма​

Функция СРЗНАЧ.

​ аргументов.​ не изменяет значение,​ ЕСЛИ() проверяет, совпадают​ которые не содержат​ и посмотрите, возвращают​будет содержать строку​ относящиеся к более​ запоминающимся именем, таким​кнопку Microsoft Office​

Разные значения.

​, чтобы более точно​ окна. Чтобы получить​Application​DISCOUNT = quantity​ новую функцию DISCOUNT.​ создать функцию для​

Функция СРЗНАЧА.

  • ​.​позволяет автоматически вставлять​В следующем примере мы​
  • ​ а =ОКРУГЛ() –​ ли показатели D6​ чисел;​ ли они ожидаемые​

​ «Возвращает модуль (абсолютную​

Функция подсчета количества значений в Excel

  1. ​ поздним версиям Excel.​ как​, а затем щелкните​ указать его назначение.​ значение от пользователя,​перед словом Round.​ * price *​
  2. ​ Закройте редактор Visual​ расчета такой скидки.​Автор: Антон Андронов​ наиболее распространенные функции​
  3. ​ создадим простую формулу​ округляет значение. Поэтому​ и E6 со​=СРЗНАЧА() – пропускает только​ значения.​ величину) числа».​Примечание:​
  4. ​MyFunctions​Сохранить как​ Описательные имена макросов​ выполняющего функцию, можно​ Используйте этот синтаксис​ 0.1​

Функция СЧЕТ.

​ Basic, выделите ячейку​В примере ниже показана​Хотя в Excel предлагается​ в формулы Excel,​ для расчета средней​

Функция ЕСЛИ в Excel

​ для вычислений и​ значением A4. Если​ пустые ячейки, а​Функции в Excel –​Выбор функции и ввод​ Мы стараемся как можно​.​

  1. ​.​ и пользовательских функций​ использовать в ней​Логические формулы.
  2. ​ каждый раз, когда​Else​ G7 и введите​ форма заказа, в​ большое число встроенных​ включая СУММ, СРЗНАЧ,​ цены за единицу​Аргументы функции ЕСЛИ.
  3. ​ расчетов нужно использовать​ совпадают, то получаем​

Функция ЕСЛИ.

​ текстовые значения воспринимает​ это вычислительные инструменты​ ее аргументов​ оперативнее обеспечивать вас​Сохранив книгу, выберите​В диалоговом окне​ особенно полезны, если​ оператор​ нужно получить доступ​DISCOUNT = 0​ следующий код:​ которой перечислены товары,​ функций, в нем​ СЧЁТ, МИН и​ заказанных товаров, используя​

​ функцию =ОКРУГЛ(), так​ ответ ДА, а​ как 0.​ пригодны для самых​   ​ актуальными справочными материалами​Сервис​Сохранить как​

​ существует множество процедур​InputBox​ к функции Excel​End If​=DISCOUNT(D7;E7)​ их количество и​ может не быть​ МАКС. В следующем​ функцию​ как форматирование ячеек​

Как округлять числа в Excel

​ если нет –​​ разных отраслей деятельности:​В списке дважды щелкните​ на вашем языке.​>​

  1. ​откройте раскрывающийся список​ с похожим назначением.​. Кроме того, с​Функция ОКРУГЛ.
  2. ​ из модуля VBA.​Если количество проданных товаров​Excel вычислит 10%-ю скидку​ цена, скидка (если​ той функции, которая​ примере мы создадим​СРЗНАЧ​ приведет к ошибочным​ ответ НЕТ.​
  3. ​В ячейки D6 и​ финансы, статистика, банковское​ функцию, которую требуется​ Эта страница переведена​

​Надстройки Excel​Тип файла​То, как вы документируйте​

​ помощью оператора​

  1. ​Пользовательские функции должны начинаться​ не меньше 100,​ для 200 единиц​ она предоставляется) и​
  2. ​ нужна для ваших​ формулу для расчета​.​ значениям в результатах.​

​В логическом выражении для​ E6 нашей таблицы​ дело, бухгалтерский учет,​ использовать. Excel вводит​ автоматически, поэтому ее​.​и выберите значение​ свои макросы и​MsgBox​ с оператора Function​ VBA выполняет следующую​

exceltable.com

​ по цене 47,50​

Общие сведения. Способы запуска[править]

При написании сложных формул, особенно использующих вложенные функции, использование мастера функций — наилучшее решение. Он очень облегчает и ускоряет ввод формул, и делает многие вещи за нас: автоматически вставляет знак «равно», имя функции, круглые скобки, расставляет точки с запятой. Позволяет просматривать значение ссылок и результаты промежуточных вычислений.

Существует 3 способа запуска мастера функций:

  1. С помощью кнопки в строке формул;
  2. С помощью команды «Другие функции…» кнопки ;
  3. С помощью пункта меню «Вставка» —> «Функция»;

Первый шаг[править]

После выполнения одного из этих действий откроется окно мастера функций:

На первом шаге мы выбираем нужную нам функцию, пользуясь поиском или фильтром категорий. После выбора нужной функции нажимаем «ОК» и попадаем на второй шаг.

Второй шаг[править]

Открывается следующее окно:

Вставка вложенной функции[править]

В одну функцию можно вставить другую функцию. Допускается до 7-ми уровней вложения функций (в Office 2007 — до 64).
Конечно, функцию можно записать вручную (писать название вложенной функции, открывать скобки, ставить точки с запятой). Однако это противоречит самой идеологии мастера функций, который должен облегчать написание формул, защищать пользователя от ошибок и свести к минимуму ручную работу. Существует более удобный способ вложить функцию — специальная кнопка на панели «Строка формул»:

После выбора нужной функции из выпадающего списка Excel вставит название функции и круглые скобки в указанное место в формуле (в активное текстовое поле аргумента). После этого окно мастера функций для предыдущей функции (в этом примере «СУММ») сменится на окно для вставляемой функции («СТЕПЕНЬ»), и ее название в формуле сделается жирным:

Переключение на другую функцию в формуле[править]

Чтобы опять вернуться к окну для функции «СУММ», достаточно просто щелкнуть в строке формул на ее названии, и окно для степени сменится на окно для «СУММ». После этого функция «СУММ» в названии станет жирной, показывая, что в данный момент окно открыто именно для нее.

Типичные ошибки при работе с мастером функций[править]

  • Перед вставкой функции забывают переключиться (кликнуть курсором мыши) в нужное текстовое поле (в нужный аргумент). При этом в активное текстовое поле вставляется знак «=», затем название функции;
  • После переключения на другую функцию (щелчка на ней в строке формул) забывают щелкнуть мышкой в одно из текстовых полей мастера функций и вставляют новую функцию. При этом название активной функции в строке формул заменяется на название вставляемой функции;

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

  • Окно мастера функций можно перетаскивать за любую точку;
  • В окне мастера функций, выделяя ссылку и нажимая «F4» один, или несколько раз, можно поменять тип ссылки (сделать абсолютной или смешанной);
  • Если в окне мастера функций нажать «F3», откроется окно для вставки именованных ссылок (если они существуют);
  • Если какую-то функцию в формуле нужно заменить на другую, выделяем эту функцию в строке формул и вставляем нужную функцию. Выделенная функция заменится на вставляемую;
  • Клавиша «Tab» служит для переключения на следующий аргумент (текстовое поле), а сочетание «Shift+Tab» — на предыдущее;
  • Если выделить ячейку, содержащую формулы с функциями и нажать кнопку Fx, то откроется окно мастера функций для одной из функций в формуле;
  • Для того, чтобы написать формулу типа «=СУММ(J1:J3)/СУММ(K1:K3)», откройте мастер функций, выберете функцию «СУММ», выделите нужный диапазон, затем щелкнете мышкой в строку формул и в ней вручную наберите «/», затем нажмите на кнопку для вставки функции, и вставьте вторую функцию «СУММ». Все будет работать;
  • Если в текстовом поле нужно ввести ТОЛЬКО текст, не обязательно вручную ставить двойные кавычки. Можно написать текст без кавычек и нажать Tab, или просто щелкнуть в другое поле. Excel проставит кавычки автоматом (работает не во всех текстовых полях);
  • В тех полях, где требуется ввести логическое значение «ЛОЖЬ» или «ИСТИНА», достаточно ввести «0» для «ЛОЖЬ», и любое ненулевое значение для «ИСТИНА» (принято использовать 1).

На чтение 13 мин. Просмотров 9.2k.

Функция ЕСЛИ (IF) является одной из наиболее часто используемых функций в Excel. ЕСЛИ — простая функция, и люди любят ее, потому что она дает им возможность заставить Excel реагировать, когда информация вводится в электронную таблицу. С ЕСЛИ, вы можете оживить вашу таблицу.

Но использование одной функции ЕСЛИ часто приводит к использованию второй, и как только вы объединяете более пары ЕСЛИ, ваши формулы могут начать выглядеть как маленькие Франкенштейны 🙂

Являются ли вложенные ЕСЛИ опасными? Всегда ли они необходимы? Какие есть альтернативы?

Читайте дальше, чтобы узнать ответы на эти вопросы и многое другое …

Содержание

  1. 1. Базовый ЕСЛИ
  2. 2. Что значит вложение
  3. 3. Простой вложенный ЕСЛИ (IF)
  4. 4. Вложенный ЕСЛИ (IF) для шкал
  5. 5. Логика вложенных ЕСЛИ
  6. 6. Используйте функцию «Вычислить формулу»
  7. 7. Используйте F9, чтобы определить результаты проверки
  8. 8. Помни об ограничениях
  9. 9. Расставляй круглые скобки как профессионал
  10. 10. Используйте окно подсказки для навигации и выбора
  11. 11. Будьте осторожны с текстом и цифрами
  12. 12. Добавляйте разрывы строк, чтобы облегчить чтение вложенных ЕСЛИ
  13. 13. Уменьшите количество ЕСЛИ с И и ИЛИ
  14. 14. Замените вложенные ЕСЛИ на ВПР
  15. 15. Выберите ВЫБОР
  16. 16. Используйте ЕСЛИМН вместо вложенных ЕСЛИ
  17. 17. Используйте МАКС
  18. 18. Перехват ошибок с помощью ЕСЛИОШИБКА
  19. 19. Используйте «логическую» логику
  20. Когда вам нужен вложенный ЕСЛИ?

1. Базовый ЕСЛИ

Прежде чем говорить о вложенном ЕСЛИ, давайте быстро рассмотрим базовую структуру:

= ЕСЛИ (лог_выражение; [значение_если_истина];[значение_если_ложь])

Функция ЕСЛИ запускает тест и выполняет различные действия в зависимости от того, является ли результат истинным или ложным.

Обратите внимание на квадратные скобки … это означает, что аргументы необязательны. Однако вы должны указать либо значение ИСТИНА, либо значение ЛОЖЬ.

Чтобы проиллюстрировать это, мы используем ЕСЛИ, чтобы проверить результаты и вернуть «Зачтено» для баллов не менее 65:

Базовый ЕСЛИ
Базовая функция ЕСЛИ — вернуть «Зачтено» для баллов не менее 65

Ячейка D4 в примере содержит эту формулу:

= ЕСЛИ (С4 > = 65; «Зачтено»)

Что можно прочитать так: если количество баллов в ячейке C4 составляет не менее 65, вернуть «Зачтено».

Однако обратите внимание, что если оценка меньше 65, ЕСЛИ возвращает ЛОЖЬ, так как мы не указали «значение_если_ложь». Чтобы отобразить «Не зачтено» для непроходных оценок, мы можем добавить «Не зачтено» в качестве ложного аргумента следующим образом:

= ЕСЛИ (С3 > = 65; «Зачтено»; «Не зачтено»)

Базовая функция ЕСЛИ
Базовая функция ЕСЛИ — с добавленным значением_если_ложь

2. Что значит вложение

Вложенность означает объединение формул, одна внутри другой, так что одна формула обрабатывает результат другой. Например, вот формула, в которой функция СЕГОДНЯ (TODAY) вложена в функцию МЕСЯЦ (MONTH):

= МЕСЯЦ (СЕГОДНЯ ())

Функция СЕГОДНЯ (TODAY) возвращает текущую дату внутри функции МЕСЯЦ (MONTH). Функция МЕСЯЦ (MONTH) берет эту дату и возвращает текущий месяц. Даже в формулах средней сложности часто используются вложения, поэтому вы увидите их в более сложных формулах.

3. Простой вложенный ЕСЛИ (IF)

Вложенный ЕСЛИ — это всего лишь два оператора ЕСЛИ в формуле, где один оператор ЕСЛИ появляется внутри другого.

Чтобы проиллюстрировать это, ниже я расширил оригинальную формулу «Зачтено/Не зачтено», приведенную выше, для обработки «пустых» результатов, добавив функцию еще одну функцию ЕСЛИ:

Простой вложенный ЕСЛИ
Простой вложенный ЕСЛИ

= ЕСЛИ (С4 = «»; «Неявка»; ЕСЛИ (С4> = 65; «Зачтено»; «Не зачтено»))

Внешний ЕСЛИ запускается первым и проверяет, является ли ячейка C4 пустой. Если это так, внешний ЕСЛИ возвращает «Неявка», а внутренний ЕСЛИ никогда не запускается.

Если ячейка не пуста, внешний ЕСЛИ возвращает ЛОЖЬ, и запускается вторая функция ЕСЛИ.

4. Вложенный ЕСЛИ (IF) для шкал

Вам часто будут встречаться вложенные ЕСЛИ, настроенные для обработки «шкал» … например, для назначения оценок, стоимости доставки, налоговых ставок или других значений, которые изменяются в шкале с числовым вводом. Пока в шкале не слишком много уровней, вложенные ЕСЛИ работают нормально. Но нужно быть внимательными, иначе формула может стать не читабельной.

Хитрость заключается в том, чтобы выбрать направление (от высокого к низкому или от низкого к высокому), а затем соответствующим образом структурировать условия. Например, чтобы присвоить оценки в порядке «от низкого до высокого», мы можем представить решение, отраженное в следующей таблице. Обратите внимание, что нет условия для «Отлично», потому что, как только мы выполним все остальные условия, мы знаем, что баллов должно быть больше 90, и, следовательно, «Отлично».

Баллы Оценка Условие
0 — 63 Неуд. < 64
64 — 72 Удовл. < 73
73 — 89 Хорошо < 90
90 — 100 Отлично  

С четко понятными условиями мы можем ввести первый оператор ЕСЛИ:

= ЕСЛИ (С5 <64;»Неуд.»)

Мы позаботились о «Неуд.». Теперь, чтобы обработать «Удовл.», нам нужно добавить еще одно условие:

= ЕСЛИ (С5 <64; «Неуд.»; ЕСЛИ (С5 <73; «Удовл.»))

Обратите внимание, что я просто добавил еще один ЕСЛИ в первый для «ложного» результата. Чтобы расширить формулу для обработки оценки «Хорошо», мы повторяем процесс:

= ЕСЛИ (С5 <64; «Неуд.»; ЕСЛИ (С5 <73; «Удовл.»; ЕСЛИ (С5 <90; «Хорошо»)))

Мы обработали все оценки и дошли до последнего уровня «Отлично». Вместо добавления еще одного ЕСЛИ, просто добавьте итоговую оценку для ЛОЖЬ.

= ЕСЛИ (С5 <64; «Неуд.»; ЕСЛИ (С5 <73; «Удовл.»; ЕСЛИ (С5 <90; «Хорошо»; «Отлично»)))

Вот последняя вложенная формула ЕСЛИ в действии:

Завершенный вложенный пример ЕСЛИ для расчета оценок
Завершенный вложенный пример ЕСЛИ
для расчета оценок

5. Логика вложенных ЕСЛИ

Многие формулы решаются изнутри, потому что «внутренние» функции или выражения должны решаться в первую очередь, чтобы остальная часть формулы работала.

Вложенные ЕСЛИ имеют свою логику, поскольку «внешние» ЕСЛИ действуют как ворота к «внутренним» ЕСЛИ. Это означает, что результаты внешних ЕСЛИ определяют, работают ли внутренние ЕСЛИ. Диаграмма ниже визуализирует логический ход формулы расчета оценок выше.

Логика вложенной функции ЕСЛИ

6. Используйте функцию «Вычислить формулу»

В Windows вы можете использовать функцию «Вычислить формулу», чтобы шаг за шагом посмотреть, как Excel решает ваши формулы. Это отличный способ «увидеть» логический поток более сложных формул и устранить неполадки, если что-то не работает. Кнопку «Вычислить формулу» можно найти на ленте на вкладке Формулы.

Функция Вычислить формулу в ленте
Функция Вычислить формулу в ленте

На экране ниже показано «окно Вычисление формулы», открытое и готовое к работе. Каждый раз, когда вы нажимаете кнопку «Вычислить», вычисляется «следующий шаг» в формуле.

Окно Вычисление формулы
Окно Вычисление формулы

К сожалению, версия Excel для Mac не содержит этой функции, но вы можете использовать прием, описанный ниже.

7. Используйте F9, чтобы определить результаты проверки

Когда вы выбираете выражение в строке формул и нажимаете клавишу F9, Excel решает только выбранную часть. Это крутой способ проверить, что на самом деле делает формула. В приведенном ниже примере я использую окна с подсказками для выбора различных частей формулы. Затем нажимаю F9, чтобы увидеть, результат вычисления этой части формулы:

Проверка вложенного ЕСЛИ
Проверка вложенного ЕСЛИ
Результат проверки с клавишей F9
Результат проверки с клавишей F9

Используйте Ctrl + Z (Command + Z на Mac), чтобы отменить F9. Вы также можете нажать Esc, чтобы выйти из редактора формул без каких-либо изменений.

8. Помни об ограничениях

В Excel есть ограничения на то, насколько глубоко вы можете вкладывать функции ЕСЛИ. До Excel 2007 Excel допускал до 7 уровней вложенных ЕСЛИ. Excel после 2007 поддерживает до 64 уровней.

Однако то, что вы можете вкладывать много ЕСЛИ, не означает, что это нужно делать. Каждый дополнительный уровень, который вы добавляете, усложняет понимание формулы и устранение неполадок. Если вы работаете с вложенным ЕСЛИ глубиной более чем на несколько уровней, вам стоит рассмотреть альтернативные варианты, приведенные ниже.

9. Расставляй круглые скобки как профессионал

Одной из проблем с вложенными ЕСЛИ является сопоставление или «балансировка» скобок. Если круглые скобки стоят не там, где нужно или их меньше, чем требует формула, результат вы не получите. К счастью, Excel предоставляет несколько инструментов, которые помогут вам убедиться, что круглые скобки «сбалансированы» при редактировании формул.

Во-первых, если у вас несколько наборов скобок, круглые скобки имеют цветовую кодировку, поэтому открывающие скобки соответствуют закрывающим скобкам. Эти цвета нелегко рассмотреть, но при желании — можно:

Цветные скобки
Цветные скобки

Во-вторых, когда вы закроете круглые скобки, Excel выделит соответствующую пару. Вы также можете щелкнуть в формуле и использовать клавишу со стрелкой для перемещения по скобкам, и Excel будет выделять обе скобки, когда есть совпадающая пара. Если нет совпадений, вы не увидите жирного шрифта.

Пара скобок выделена жирным
Пара скобок выделена жирным

К сожалению, выделение шрифтом — это функция только для Windows. Если вы используете Excel на Mac для редактирования сложных формул, иногда имеет смысл скопировать и вставить формулу в хороший текстовый редактор, чтобы получить лучшие инструменты для сопоставления скобок. Вы можете вставить формулу обратно в Excel после того, как вы все исправите.

10. Используйте окно подсказки для навигации и выбора

Когда дело доходит до навигации и редактирования вложенных ЕСЛИ, окно подсказки — ваш лучший друг. С его помощью вы можете перемещаться и точно выбирать все аргументы во вложенном ЕСЛИ:

Выберите аргументы формулы с помощью подсказки на экране
Выберите аргументы формулы с помощью подсказки на экране

11. Будьте осторожны с текстом и цифрами

При работе с функцией ЕСЛИ, убедитесь, что вы правильно сопоставляете цифры и текст. Я часто вижу вот такие формулы ЕСЛИ:

= ЕСЛИ (А1 = «100»; «Зачтено»; «Не зачтено»)

Является ли результат теста в А1 действительно текстом, а не числом? Нет? Тогда не используйте кавычки с числом. В противном случае логический тест вернет ЛОЖЬ, даже если значение является проходным баллом, потому что «100» не совпадает с 100. Если тестовый балл является числовым, используйте вот такую формулу:

= ЕСЛИ (А1 = 100; «Зачтено»; «Не зачтено»)

12. Добавляйте разрывы строк, чтобы облегчить чтение вложенных ЕСЛИ

Когда вы работаете с формулой, которая содержит много уровней вложенных ЕСЛИ, довольно сложно уследить за правильностью формулы. Поскольку Excel не беспокоят разрывы строк в формулах, вы можете значительно улучшить читаемость вложенных ЕСЛИ, добавив их.

Например, на приведенном ниже экране показан вложенный ЕСЛИ, который рассчитывает комиссионную ставку на основе суммы продажи. Здесь вы можете увидеть типичную вложенную ЕСЛИ-структуру, которую трудно расшифровать:

Вложенные ЕСЛИ без разрывов строк трудно читать
Вложенные ЕСЛИ без разрывов строк трудно читать

Однако, если я добавляю разрывы строк перед каждым «значением_если_ ложь», логика формулы легко читается. Кроме того, формулу легче редактировать:

Разрывы строк облегчают чтение вложенных ЕСЛИ
Разрывы строк облегчают чтение вложенных ЕСЛИ

Вы можете добавить разрывы строк в Windows с помощью Alt + Enter, на Mac — Control + Option + Return.

13. Уменьшите количество ЕСЛИ с И и ИЛИ

Вложенные ЕСЛИ — мощный инструмент, но формулы быстро становятся громоздкими, когда вы добавляете больше уровней. Один из способов избежать большего количества уровней — использовать ЕСЛИ в сочетании с функциями И (AND) и ИЛИ (OR). Эти функции возвращают простой результат ИСТИНА / ЛОЖЬ, который отлично работает внутри ЕСЛИ, поэтому вы можете использовать их для расширения логики одного ЕСЛИ.

Например, в приведенной ниже задаче мы хотим поставить «х» в столбце D, чтобы отметить строки, где цвет «красный», а размер «маленький».

ЕСЛИ с функцией И
ЕСЛИ с функцией И проще, чем два вложенных ЕСЛИ

Мы могли бы написать формулу с двумя вложенными ЕСЛИ, вот так:

= ЕСЛИ (В3 = «красный»; ЕСЛИ (С3 = «маленький»; «х»; «»); «»)

Однако, заменив одну проверку на функцию И, мы можем упростить формулу:

= ЕСЛИ (И (В3 = «красный»; С3 = «маленький»); «х»; «»)

Таким же образом, мы можем легко расширить эту формулу с помощью функции ИЛИ, чтобы проверить наличие красного ИЛИ синего И маленького:

= ЕСЛИ (И (ИЛИ (В3= «красный»; В3= «синий»);С3= «маленький»);»х»; «»)

Все то же самое можно сделать с помощью вложенных ЕСЛИ, но формула быстро станет сложной.

14. Замените вложенные ЕСЛИ на ВПР

Когда вложенный ЕСЛИ просто присваивает значения на основе одного значения, его можно легко заменить функцией ВПР (VLOOKUP). Например, этот вложенный ЕСЛИ присваивает номера пяти различным цветам:

= ЕСЛИ (F2 = «красный»; 100; ЕСЛИ (F2 = «синий»; 200; ЕСЛИ (F2 = «зеленый»; 300; ЕСЛИ (F2 = «оранжевый»; 400;500))))

Мы можем легко заменить все ЕСЛИ одним ВПР:

= ВПР (F2; В3:C7; 2; 0)

 Вложенный ЕСЛИ против ВПР
Вложенный ЕСЛИ против ВПР

Хотя в приведенной выше формуле используется точное соответствие, вы можете легко использовать ВПР для приблизительного поиска.

15. Выберите ВЫБОР

Функция ВЫБОР (CHOOSE) может предоставить элегантное решение, когда вам необходимо отобразить простые последовательные числа (1,2,3 и т.д.) для произвольных значений.

В приведенном ниже примере ВЫБОР (CHOOSE) используется для создания пользовательских сокращений дней недели:

Функция ВЫБОР
Функция ВЫБОР

Конечно, вы можете использовать длинный и сложный вложенный ЕСЛИ, чтобы сделать то же самое, но, пожалуйста, не надо 🙂

16. Используйте ЕСЛИМН вместо вложенных ЕСЛИ

Если вы используете Excel 2016, у Office 365 есть новая функция, которую вы можете использовать вместо вложенных ЕСЛИ: функция ЕСЛИМН (IFS). Функция ЕСЛИМН (IFS) предоставляет специальную структуру для оценки нескольких условий без вложенности

Перепишем формулу из примера про оценки с использованием ЕСЛИМН:

= ЕСЛИМН (C5 <64; «Неуд.»; C5 <73; «Удовл.»; C5 <90; «Хорошо»; C5> = 90; «Отлично»)

Обратите внимание, в формуле всего одна пара скобок!

Что происходит, когда вы открываете электронную таблицу, которая использует функцию ЕСЛИМН (IFS) в более старой версии Excel? В Excel 2013 и 2010 (и я верю в Excel 2007, но не могу проверить) вы увидите «_xlfn» в ячейке. Ранее вычисленное значение все еще будет там, но если формула пересчитается, вы увидите ошибку #ИМЯ?.

17. Используйте МАКС

Иногда вы можете использовать МАКС (MAX) или МИН (MIN) очень интересным способом, избегая оператора ЕСЛИ (IF). Предположим, что у вас есть расчет, который должен привести к положительному числу или нулю. Другими словами, если вычисление возвращает отрицательное число, вы просто хотите показать ноль.

Функция МАКС дает вам способ сделать это без ЕСЛИ:

= МАКС (расчет; 0)

Этот метод возвращает результат вычисления, если положительный, и ноль в противном случае.

Я люблю эту конструкцию, потому что она очень проста.

18. Перехват ошибок с помощью ЕСЛИОШИБКА

Классическим использованием ЕСЛИ является перехват ошибок и предоставление другого результата при возникновении ошибки, например:

= ЕСЛИ (ЕОШИБКА (формула); значение_если_ошибка; формула)

Это уродливо и неудобно, так как одна и та же формула вводится дважды, и Excel должен вычислять одно и то же несколько раз, если ошибки нет.

В Excel 2007 была введена функция ЕСЛИОШИБКА (IFERROR), которая позволяет более элегантно отлавливать ошибки:

= ЕСЛИОШИБКА (формула; значение_если_ошибка)

Теперь, когда формула выдает ошибку, ЕСЛИОШИБКА просто возвращает указанное вами значение.

19. Используйте «логическую» логику

Вы также можете иногда избегать вложенных ЕСЛИ, используя так называемую «логическую логику». Слово логическое относится к значениям ИСТИНА / ЛОЖЬ. Хотя Excel отображает слова ИСТИНА и ЛОЖЬ в ячейках, внутренне Excel воспринимает ИСТИНА как 1, а ЛОЖЬ как ноль.

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

= ЕСЛИ (F2 = «красный»; 100; ЕСЛИ (F2 = «синий»; 200; ЕСЛИ (F2 = «зеленый»; 300; ЕСЛИ (F2 = «оранжевый»; 400;500))))

Используя логическую логику, вы можете переписать формулу следующим образом:

= (F2 = «красный») * 100 + (F2 = «синий») * 200 + (F2 = «зеленый») * 300+ (F2 = «оранжевый») * 400+ (F2 = «фиолетовый») * 500

Каждое выражение выполняет тест, а затем умножает результат теста на «значение, если оно истинно». Поскольку тесты возвращают значение ИСТИНА или ЛОЖЬ (1 или 0), результаты ЛОЖЬ фактически отменяют формулу.

Для числовых результатов логическая логика проста и чрезвычайно быстра, так как нет разветвлений. С другой стороны, логическая логика может сбивать с толку людей, которые не привыкли к ней. Тем не менее, это отличная техника, чтобы знать о ней.

Когда вам нужен вложенный ЕСЛИ?

Со всеми этими опциями для избежания вложенных ЕСЛИ, вы можете задаться вопросом: «А когда же его использовать?»

Я думаю, что вложенные ЕСЛИ имеют смысл, когда вам нужно оценить несколько различных входных данных для принятия решения.

Например, предположим, что вы хотите определить статус счета-фактуры «Оплачено», «Ожидание», «Просрочено» и т.д. Для этого необходимо посмотреть дату счета-фактуры и остаток задолженности:

Расчет статуса счета-фактуры с помощью вложенного ЕСЛИ
Расчет статуса счета-фактуры с помощью вложенного ЕСЛИ

В этом случае вложенный ЕСЛИ является идеальным решением.

Мы уже рассматривали пример с функцией ЕСЛИ, но часто требуется использовать несколько условий ЕСЛИ, то есть вкладывать несколько ЕСЛИ в одну формулу. В этом случае у многих возникают вопросы как это реализовать. Задача возникает очень часто и давно напрашивалась к написанию. На самом деле ничего сложного нет, в этом примере мы рассмотрим пример Функции ЕСЛИ с несколькими условиями подробно, чтобы у вас было четкое понимание как это использовать для других примеров.

Пример задачи с использование нескольких функцией ЕСЛИ: У нас есть отчет по продажам продавцов. План продаж считается по количеству проданных единиц товара и составляет от 18 до 20шт. Каждый сотрудник получает оплату 2000 рублей. За каждую дополнительно проданную единицу товара сверх плана сотрудник получает 25 рублей, а за невыполнение плана — штрафуется по 50 рублей за единицу (например, продал 16 шт, недобрав 2 шт до минимального плана 18 шт, следовательно он получает 2000 рублей минус 2*50 рублей то есть 1900 рублей). Нам необходимо рассчитать оплату для каждого сотрудника.

Для удобства вынесем все условия в отдельную таблицу, чтобы при необходимости мы могли быстро их менять если, например, поменяется оплата или план

funkciya-excel-primery-neskolkimi-usloviyami

Нам требуется заполнить столбец «Оплата». У нас несколько условий, поэтому одним если обойтись не получится. Вот как мы будет рассматривать эти условия

  • если продаж больше 20, то считаем оплату за перевыполнение, иначе проверяем
  • если продаж меньше 18, то считаем оплату за невыполнение, иначе было от 18 до 20 продаж и сумма выплаты составляет 2000 рублей

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

Итак, вставьте курсор в ячейку C3 и нажмите на значок выбора функций, перейдите в категорию «Логические» и выберите функцию ЕСЛИ и нажмите «ОК» (см. на рисунок)

otkryvaem-dialogovoe-okno-funkcii-esli

Откроется диалоговое окно функции если.

Лог_выражение — это то что мы будет проверять. Поместите курсор в данное поле. В нашем случае как вы помните мы сначала проверяем продажи больше 20 (то есть больше плана) или нет. Продажи Алексея у нас в ячейке B3 — кликните мышкой на B3 и это выражение появится в этом поле (можно просто прописать B3, но удобнее выбирать). Далее нам необходимо проверить эти продажи Алексея с планом. Напишем B3> и выберем ячейку с планом G2, У нас должно получиться выражение B3>G2

Для того, чтобы в дальнейшем применить данную формулу для других сотрудников, протянув ее вниз, нам необходимо закрепить ссылку в ячейке G2, чтобы она стало абсолютной (то есть не менялась, когда мы будет протягивать формулу). Для этого необходимо прописать знаки доллара перед буквой и цифрой или только перед цифрой, так как мы не будет протягивать формулу влево или вправо. Удобнее всего зафиксировать ячейку просто выделив в формуле нужную ячейку и нажав клавишу F4

Должно получиться вот так B3>$G$2 или так B3>G$2

log-vyrazheniya-esli

Обратите внимание, Excel автоматически вычисляет выражение и отображает его справа. В нашем случае Excel вычислил, что выражение — ИСТИНА, то есть действительно Алексей сделал продаж в количестве 35 шт, что больше верхней границе плана 20 шт. Обратите внимание, что если бы у Алексея было бы недовыполнение плана, то формулу мы бы все равно писали точно так же — гипотетически рассуждая, как если бы у Алексея был бы выполнен план.

Поехали дальше, переходим ко второму аргументу функции.

Значение_если_истина. Переведите курс в это поле. Тут нам необходимо рассчитать оплату сотруднику, если он выполнил план. Стандартная оплата 2000 (F4) плюс так как мы рассматриваем ситуацию когда план перевыполнен, нужно прибавить переработку. Для этого вычтем из всего продаж план и получим количество продаж сверх нормы (B3-G2) и умножим их на оплату за перевыполнение 25 рублей (F5). В итоге получаем следующий расчет 2000+(35-20)*25 то есть F4+(B3-G2)*F5

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

Получаем итоговый расчет: $F$4+(B3-$G$2)*$F$5

esli-istina-v-funkcii-esli

Переходим к следующему полю.

Значение_если_ложь. Итак, выше мы рассчитали оплату сотруднику, если план продаж выполнен (то есть если наше выражение в первом поле верно — возвращает истину). Если нет, то осталось два варианта: либо сотрудник точно выполнил план продаж (от 18 до 20шт), либо недовыполнил. Снова два условия, потребуется вложенная ЕСЛИ. Будет легче, если мы сначала проверим условие невыполнение плана, а оставшийся вариант будет выполнение плана.

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

dobavlyaem-vlozhennoe-esli

После этого у вас снова появится новое диалоговое окно функции ЕСЛИ. Не надо паниковать предыдущая информация не стерлась, а просто свернулась. Вы можете это видеть в строке формул. Это сделано для удобство.

vstavka-vstroennoj-funkcii-esli

Заполняем поле лог_выражение, как вы помните мы проверяем условие о невыполнение плана сотрудником. То есть прописываем (выбираем) B3<F2 (нижняя граница выполнения плана). Снова закрепляем ссылку на F2 с помощью клавиши F4 и получаем выражение: B3<$F$2

proveryaem-varazhenie-vo-vlozhennom-esli

Далее поле Значение_если_истина. То есть если действительно B3<F2 (то есть если Алексей не выполнил план), мы рассчитывает ему оплату как сотруднику, который не выполнил план. Она рассчитываться так: оплата 2000 рублей (F4) минус 50 рублей за каждую единицу невыполнения плана. Чтобы посчитать количество единиц, которое не хватило сотруднику, нужно отнять от нижний границы плана F2 итоговый результат по продажам B3 и умножить на 50 рублей (F6).

Получаем следующую формулу: $F$4-($F$2-B3)*$F$6

vlozhennaya-funkciya-esli-esli-istina

Отлично. Если план перевыполнен, то мы посчитали оплату, если не выполнен, мы проверяем сотрудника на невыполнения плана. Если он не выполнил план, то мы считаем ему оплату. Если же он и не перевыполнил план и не недовыполнил план, то значил от сделал ровно план от 18 до 20 шт.

Поэтому в следующем поле мы рассчитываем оплату сотруднику, когда он выполнил план, то есть он получает 2000 рублей (ячейка F4). Переходим в поле Значение_если_ложь и прописываем (выбираем) F4. Не забываем закрепить ссылку — $F$4

Вот так будет выглядеть вложенное ЕСЛИ

vlozhennoe-esli-v-excel

Нажимаем «Ок» — формула готова. Вот так выглядит полная формула:

=ЕСЛИ(B3>$G$2;$F$4+(B3-$G$2)*$F$5;ЕСЛИ(B3<$F$2;$F$4+($F$2-B3)*$F$6;$F$4))

С помощью диалоговых окон очень просто пользоваться функцией ЕСЛИ и при необходимости не запутаться с вложенными ЕСЛИ, главное изначально подумать о последовательности проверки ЕСЛИ.

Skip to content

Как создать пользовательскую функцию?

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

Мы расскажем, как можно их создать, какие они бывают и как использовать их, чтобы ваша работа стала проще. Узнайте, как записать и использовать пользовательские функции, которые многие называют макросами..

  • Что такое пользовательская функция
  • Для чего ее используют?
  • Как создать пользовательскую функцию в VBA?
  • Как использовать пользовательскую функцию в формуле?
  • Какие бывают типы пользовательских функций

Что такое пользовательская функция в Excel?

На момент написания этой статьи Excel предлагает вам более 450 различных функций. С их помощью вы можете выполнять множество различных операций. Но разработчики Microsoft Excel не могли предвидеть все задачи, которые нам нужно решать. Думаю, что многие из вас встречались с этими проблемами:

  • не все данные могут быть обработаны стандартными функциями (например, даты до 1900 года).
  • формулы могут быть весьма длинными и сложными. Их невозможно запомнить, трудно понять и сложно изменить для решения новой задачи.
  • Не все задачи могут быть решены при помощи стандартных функций Excel (в частности, нельзя извлечь интернет-адрес из гиперссылки).
  • Невозможно автоматизировать часто повторяющиеся стандартные операции (импорт данных из бухгалтерской программы на лист Excel, форматирование дат и чисел, удаление лишних колонок).

Как можно решить эти проблемы?

  • Для очень сложных формул многие пользователи создают архив рабочих книг с примерами. Они копируют оттуда нужную формулу и применяют ее в своей таблице.
  • Создание макросов VBA.
  • Создание пользовательских функций при помощи редактора VBA.

Хотя первые два варианта кажутся вам знакомыми, третий может вызвать некоторую путаницу. Итак, давайте подробнее рассмотрим настраиваемые функции в Excel и решим, стоит ли их использовать.

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

Исходными данными могут быть числа, текст, даты, логические значения, массивы. Результатом вычислений может быть значение любого типа, с которым работает Excel, или массив таких значений.

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

Существует несколько способов создания собственных функций:

  • при помощи Visual Basic for Applications (VBA). Этот способ описывается в данной статье.
  • с использованием замечательной функции LAMBDA, которая появилась в Office365.
  • при помощи Office Scripts. На момент написания этой статьи они доступны в Excel Online в подписке на Office365.

Посмотрите на скриншот ниже, чтобы увидеть разницу между двумя способами извлечения чисел — с использованием формулы и пользовательской функции ExtractNumber(). 

пример работы пользовательского макроса

Даже если вы сохранили эту огромную формулу в своем архиве, вам нужно ее найти, скопировать и вставить, а затем аккуратно поправить все ссылки на ячейки. Согласитесь, это потребует затрат времени, да и ошибки не исключены.

А на ввод функции вы потратите всего несколько секунд.

Для чего можно использовать?

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

  • В формуле, где она может брать исходные данные из вашего рабочего листа и возвращать рассчитанное значение или массив значений.
  • Как часть кода макроса VBA или другой пользовательской функции.
  • В формулах условного форматирования.
  • Для хранения констант и списков данных.

Для чего нельзя использовать пользовательские функции:

  • Любого изменения другой ячейки, кроме той, в которую она записана,
  • Изменения имени рабочего листа,
  • Копирования листов рабочей книги,
  • Поиска и замены значений,
  • Изменения форматирования ячейки, шрифта, фона, границ, включения и отключения линий сетки,
  • Вызова и выполнения макроса VBA, если его выполнение нарушит перечисленные выше ограничения. Если вы используете строку кода, который не может быть выполнен, вы можете получить ошибку RUNTIME ERROR либо просто одну из стандартных ошибок (например, #ЗНАЧЕН!).

Как создать пользовательскую функцию в VBA?

 Прежде всего, необходимо открыть редактор Visual Basic (сокращенно — VBE). Обратите внимание, что он открывается в новом окне. Окно Excel при этом не закрывается.

Самый простой способ открыть VBE — использовать комбинацию клавиш. Это быстро и всегда доступно. Нет необходимости настраивать ленту или панель инструментов быстрого доступа. Нажмите Alt + F11 на клавиатуре, чтобы открыть VBE. И снова нажмите Alt + F11, когда редактор открыт, чтобы вернуться назад в окно Excel.

После открытия VBE вам нужно добавить новый модуль. В него вы будете записывать ваш код. Щелкните правой кнопкой мыши на панели проекта VBA слева и выберите «Insert», затем появившемся справа окне — “Module”.

Справа появится пустое окно модуля, в котором вы и будете создавать свою функцию.

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

  • Пользовательская функция всегда начинается с оператора Function и заканчивается инструкцией End Function.
  • После оператора Function указывают имя функции. Это название, которое вы создаете и присваиваете, чтобы вы могли идентифицировать и использовать ее позже. Оно не должно содержать пробелов. Если вы хотите разделять слова, используйте подчеркивания. Например, Count_Words.
  • Кроме того, это имя также не может совпадать с именами стандартных функций Excel. Если вы сделаете это, то всегда будет выполняться стандартная функция.
  • Имя пользовательской функции не может совпадать с адресами ячеек на листе. Например, имя ABC1234 невозможно присвоить.
  • Настоятельно рекомендуется давать описательные имена. Тогда вы можете легко выбрать нужное из длинного списка функций. Например, имя CountWords позволяет легко понять, что она делает, и при необходимости применить ее для подсчета слов.
  • Далее в скобках обычно перечисляют аргументы. Это те данные, с которыми она будет работать. Может быть один или несколько аргументов. Если у вас несколько аргументов, их нужно перечислить через запятую.
  • После этого обычно объявляются переменные, которые использует пользовательская функция. Указывается тип этих переменных – число, дата, текст, массив.
  • Если операторы, которые вы используете внутри вашей функции, не используют никакие аргументы (например, NOW (СЕЙЧАС), TODAY (СЕГОДНЯ) или RAND (СЛЧИС)), то вы можете создать функцию без аргументов. Также аргументы не нужны, если вы используете функцию для хранения констант (например, числа Пи).
  • Затем записывают несколько операторов VBA, которые выполняют вычисления с использованием переданных аргументов.
  • В конце вы должны вставить оператор, который присваивает итоговое значение переменной с тем же именем, что и имя функции. Это значение возвращается в формулу, из которой была вызвана пользовательская функция.
  • Записанный вами код может включать комментарии. Они помогут вам не забыть назначение функции и отдельных ее операторов. Если вы в будущем захотите внести какие-то изменения, комментарии будут вам очень полезны. Комментарий всегда начинается с апострофа (‘). Апостроф указывает Excel игнорировать всё, что записано после него, и до конца строки.

Теперь давайте попробуем создать вашу первую собственную формулу. Для начала мы создаем код, который будет подсчитывать количество слов в диапазоне ячеек.

Для этого в окно модуля вставим этот код:

Function CountWords(NumRange As Range) As Long
Dim rCell As Range, lCount As Long
    For Each rCell In NumRange
        lCount = lCount + _
          Len(WorksheetFunction.Trim(rCell)) - Len(Replace(WorksheetFunction.Trim(rCell), " ", "")) + 1
    Next rCell
CountWords = lCount
End Function

как создать макрос в Эксель

Я думаю, здесь могут потребоваться некоторые пояснения.

Код функции всегда начинается с пользовательской процедуры Function. В процедуре Function мы делаем описание новой функции.

В начале мы должны записать ее имя: CountWords.

Затем в скобках указываем, какие исходные данные она будет использовать. NumRange As Range означает, что аргументом будет диапазон значений. Сюда нужно передать только один аргумент — диапазон ячеек, в котором будет происходить подсчёт.

As Long указывает, что результат выполнения функции CountWords будет целым числом.

Во второй строке кода мы объявляем переменные.

Оператор Dim объявляет переменные:

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

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

Цикл For Each… Next предназначен для выполнения вычислений по отношению к каждому элементу из группы элементов (нашего диапазона ячеек). Этот оператор цикла применяется, когда неизвестно количество элементов в группе. Начинаем с первого элемента, затем берем следующий и так повторяем до самого последнего значения. Цикл повторяется столько раз, сколько ячеек имеется во входном диапазоне.

Внутри этого цикла с значением каждой ячейки выполняется операция, которая вычисляет количество слов:

Len(WorksheetFunction.Trim(rCell)) — Len(Replace(WorksheetFunction.Trim(rCell), » «, «»)) + 1

Как видите, это обычная формула Excel, которая использует стандартные средства работы с текстом: LEN, TRIM и REPLACE. Это английские названия знакомых нам русскоязычных ДЛСТР, СЖПРОБЕЛЫ и ЗАМЕНИТЬ.  Вместо адреса ячейки рабочего листа используем переменную диапазона rCell. То есть, для каждой ячейки диапазона мы последовательно считаем количество слов в ней.

Подсчитанные числа суммируются и сохраняются в переменной lCount:

lCount = lCount + Len(WorksheetFunction.Trim(rCell)) — Len(Replace(WorksheetFunction.Trim(rCell), » «, «»)) + 1

Когда цикл будет завершен, значение переменной присваивается функции.

CountWords = lCount

Функция возвращает в ячейку рабочего листа значение этой переменной, то есть общее количество слов.

Именно эта строка кода гарантирует, что функция вернет значение lCount обратно в ячейку, из которой она была вызвана.  

Закрываем наш код с помощью «End Function».

Как видите, не очень сложно.

Сохраните вашу работу. Для этого просто нажмите кнопку “Save” на ленте VB редактора.

После этого вы можете закрыть окно редактора. Для этого можно использовать комбинацию клавиш Alt+Q. Или просто вернитесь на лист Excel, нажав Alt+F11.

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

Как использовать пользовательскую функцию в формуле?

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

Чтобы использовать ее, у вас есть две возможности.

Первый способ. Нажмите кнопку fx в строке формул. Среди появившихся категорий вы увидите новую группу — Определённые пользователем. И внутри этой категории вы можете увидеть нашу новую пользовательскую функцию CountWords.

пользовательская функция

Второй способ. Вы можете просто записать эту функцию в ячейку так же, как вы это делаете обычно. Когда вы начинаете вводить имя, Excel покажет вам имя пользовательской в списке соответствующих функций. В приведенном ниже примере, когда я ввел = cou , Excel показал мне список подходящих функций, среди которых вы видите и CountWords.

Можно посчитать этой же функцией и количество слов в диапазоне. Запишите в ячейку С3:

=CountWords(A2:A5)

Нажмите Enter.

Мы только что указали функцию и установили диапазон, и вот результат подсчета: 14 слов.

Для сравнения в C1 я записал формулу массива, при помощи которой мы также можем подсчитать количество слов в диапазоне.

Как видите, результаты одинаковы. Только использовать CountWords() гораздо проще и быстрее.

Различные типы пользовательских функций с использованием VBA.

Теперь мы познакомимся с разными типами пользовательских функций в зависимости от используемых ими аргументов и результатов, которые они возвращают.

Без аргументов.

В Excel есть несколько стандартных функций, которые не требуют аргументов (например, СЛЧИС , СЕГОДНЯ , СЕЧАС). Например, СЛЧИС возвращает случайное число от 0 до 1. СЕГОДНЯ вернет текущую дату. Вам не нужно передавать им какие-либо значения.

Вы можете создать такую ​​функцию и в VBA.

Ниже приведен код, который запишет в ячейку имя вашего рабочего листа.

Function SheetName() as String
    Application.Volatile
    SheetName = Application.Caller.Worksheet.Name
End Function

Или же можно использовать такой код:

SheetName = ActiveSheet.Name

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

Приведенный выше код определяет результат функции как тип данных String (поскольку желаемый результат — это имя файла, которое является текстом). Если вы не укажете тип данных, то Excel будет определять его самостоятельно.

С одним аргументом.

Создадим простую функцию, которая работает с одним аргументом, то есть с одной ячейкой. Наша задача – извлечь из текстовой строки последнее слово.

Function ReturnLastWord(The_Text As String)
Dim stLastWord As String
'Extracts the LAST word from a text string
    stLastWord = StrReverse(The_Text)
    stLastWord = Left(stLastWord, InStr(1, stLastWord, " ", vbTextCompare))
    ReturnLastWord = StrReverse(Trim(stLastWord))
End Function

Аргумент The_Text — это значение выбранной ячейки. Указываем, что это должно быть текстовое значение (As String).

Оператор StrReverse возвращает текст с обратным порядком следования знаков. Далее InStr определяет позицию первого пробела. При помощи Left получаем все знаки заканчивая первым пробелом. Затем удаляем пробелы при помощи Trim. Вновь меняем порядок следования символов при помощи StrReverse. Получаем последнее слово из текста.

Поскольку эта функция принимает значение ячейки, нам не нужно использовать здесь Application.Volatile. Как только аргумент изменится, функция автоматически обновится.

Использование массива в качестве аргумента.

Многие функции Excel используют массивы значений как аргументы. Вспомните функции СУММ, СУММЕСЛИ, СУММПРОИЗВ.

Мы уже рассмотрели эту ситуацию выше, когда учились создавать пользовательскую функцию для подсчета количества слов в диапазоне ячеек.

Приведённый ниже код создает функцию, которая суммирует все чётные числа в указанном диапазоне ячеек.

Function SumEven(NumRange as Range)
 Dim RngCell As Range
 For Each RngCell In NumRange
 If IsNumeric(RngCell.Value) Then
 If RngCell.Value Mod 2 = 0 Then
 Result = Result + RngCell.Value
 End If
 End If
 Next RngCell
 SumEven = Result
 End Function

Аргумент NumRange указан как Range. Это означает, что функция будет использовать массив исходных данных. Необходимо отметить, что можно использовать также тип переменной Variant. Это выглядит как

Function SumEven(NumRange as Variant)

Тип Variant обеспечивает «безразмерный» контейнер для хранения данных. Такая переменная может хранить данные любого из допустимых в VBA типов, включая числовые значения, текст, даты и массивы. Более того, одна и та же такая переменная в одной и той же программе в разные моменты может хранить данные различных типов. Excel самостоятельно будет определять, какие данные передаются в функцию.

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

Все чётные числа суммируются в переменной Result.

Когда цикл будет закончен, значение Result присваивается переменной SumEven и передаётся функции.

С несколькими аргументами.

Большинство функций Excel имеет несколько аргументов. Не являются исключением и пользовательские функции. Поэтому так важно уметь создавать собственные функции с несколькими аргументами.

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

Она имеет 3 аргумента: диапазон значений, нижняя граница числового интервала, верхняя граница интервала.

Function GetMaxBetween(rngCells As Range, MinNum, MaxNum)
Dim NumRange As Range
Dim vMax
Dim arrNums()
Dim i As Integer
ReDim arrNums(rngCells.Count)
    For Each NumRange In rngCells
     vMax = NumRange
        Select Case vMax
           Case MinNum + 0.01 To MaxNum - 0.01
              arrNums(i) = vMax
              i = i + 1
           Case Else
               GetMaxBetween = 0
           End Select
    Next NumRange
    GetMaxBetween = WorksheetFunction.Max(arrNums)
End Function

Здесь мы используем три аргумента. Первый из них — rngCells As Range. Это диапазон ячеек, в которых нужно искать максимальное значение. Второй и третий аргумент (MinNum, MaxNum) указаны без объявления типа. Это означает, что по умолчанию к ним будет применён тип данных Variant. В VBA используется 6 различных числовых типов данных. Указывать только один из них — это значит ограничить применение функции. Поэтому более целесообразно, если Excel сам определит тип числовых данных.

Цикл For Each … Next последовательно просматривает все значения в выбранном диапазоне. Числа, которые находятся в интервале от максимального до минимального значения, записываются в специальный массив arrNums. При помощи стандартного оператора MAX в этом массиве находим наибольшее число.

С обязательными и необязательными аргументами.

Чтобы понять, что такое необязательный аргумент, вспомните функцию ВПР (VLOOKUP). Её четвертый аргумент [range_lookup] является необязательным. Если вы не укажете один из обязательных аргументов, получите ошибку. Но если вы пропустите необязательный аргумент, всё будет работать.

Но необязательные аргументы не бесполезны. Они позволяют вам выбирать вариант расчётов.

Например, в функции ВПР, если вы не укажете четвертый аргумент, будет выполнен приблизительный поиск. Если вы укажете его как ЛОЖЬ (или 0), то будет найдено точное совпадение.

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

Чтобы сделать аргумент необязательным, вам просто нужно добавить «Optional» перед ним.

Теперь давайте посмотрим, как создать функцию в VBA с необязательными аргументами.

Function GetText(textCell As Range, Optional CaseText = False) As String
Dim StringLength As Integer
Dim Result As String
StringLength = Len(textCell)
For i = 1 To StringLength
If Not (IsNumeric(Mid(textCell, i, 1))) Then Result = Result & Mid(textCell, i, 1)
Next i
If CaseText = True Then Result = UCase(Result)
GetText = Result
End Function

Этот код извлекает текст из ячейки. Optional CaseText = False означает, что аргумент CaseText необязательный. По умолчанию его значение установлено FALSE.

Если необязательный аргумент CaseText имеет значение TRUE, то возвращается результат в верхнем регистре. Если необязательный аргумент FALSE или опущен, результат остается как есть, без изменения регистра символов.

Думаю, что у вас возник вопрос: «Могут ли в пользовательской функции быть только необязательные аргументы?». Ответ смотрите ниже.

Только с необязательным аргументом.

Насколько мне известно, нет встроенной функции Excel, которая имеет только необязательные аргументы. Здесь я могу ошибаться, но я не могу припомнить ни одной такой.

Но при создании пользовательской такое возможно.

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

Function UserName(Optional Uppercase As Variant)
    If IsMissing(Uppercase) Then Uppercase = False
    UserName = Application.UserName
    If Uppercase Then UserName = UCase(UserName)
End Function

Как видите, здесь есть только один аргумент Uppercase, и он не обязательный.

Если аргумент равен FALSE или опущен, то имя пользователя возвращается без каких-либо изменений. Если же аргумент TRUE, то имя возвращается в символах верхнего регистра (с помощью VBA-оператора Ucase). Обратите внимание на вторую строку кода. Она содержит VBA-функцию IsMissing, которая определяет наличие аргумента. Если аргумент отсутствует, оператор присваивает переменной Uppercase значение FALSE.

Можно предложить и другой вариант этой функции.

Function UserName(Optional Uppercase As Variant)
    If IsMissing(Uppercase) Then Uppercase = False
    UserName = Application.UserName
    If Uppercase Then UserName = UCase(UserName)
End Function

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

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

В VBA имеется весьма полезная функция — Array. Она возвращает значение с типом данных Variant, которое представляет собой массив (т.е. несколько значений).

Пользовательские функции, которые возвращают массив, весьма полезны при хранении массивов значений. Например, Months() вернёт массив названий месяцев:

Function Months() As Variant
Months = Array("Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", _
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь")
End Function

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

В Office365 и выше можно вводить как обычную формулу, в более ранних версиях – как формулу массива.

А если необходим вертикальный массив значений?

Мы уже говорили ранее, что созданные нами функции можно использовать в формулах Excel вместе со стандартными.

Используем Months() как аргумент функции ТРАНСП:

=ТРАНСП(Months())

Как можно использовать пользовательские функции с массивом данных? Можно применять их для ввода данных в таблицу, как показано на рисунке выше. К примеру, в отчёте о продажах не нужно вручную писать названия месяцев.

Можно получить название месяца по его номеру. Например, в ячейке A1 записан номер месяца. Тогда название месяца можно получить при помощи формулы

=ИНДЕКС(Months();1;A1)

Альтернативный вариант этой формулы:

=ИНДЕКС( {«Январь»; «Февраль»; «Март»; «Апрель»; «Май»; «Июнь»; «Июль»; «Август»; «Сентябрь»; «Октябрь»; «Ноябрь»; «Декабрь»};1;A1)

Согласитесь, написанная нами функция делает формулу Excel значительно проще.

Эта статья откроет серию материалов о пользовательских функциях. Если мне удалось убедить вас, что это стоит использовать или вы хотели бы попробовать что-то новое в Excel, следите за обновлениями;)

Сумма по цвету и подсчёт по цвету в Excel В этой статье вы узнаете, как посчитать ячейки по цвету и получить сумму по цвету ячеек в Excel. Эти решения работают как для окрашенных вручную, так и с условным форматированием. Если…
Проверка данных с помощью регулярных выражений В этом руководстве показано, как выполнять проверку данных в Excel с помощью регулярных выражений и пользовательской функции RegexMatch. Когда дело доходит до ограничения пользовательского ввода на листах Excel, проверка данных очень полезна. Хотите…
Поиск и замена в Excel с помощью регулярных выражений В этом руководстве показано, как быстро добавить пользовательскую функцию в свои рабочие книги, чтобы вы могли использовать регулярные выражения для замены текстовых строк в Excel. Когда дело доходит до замены…
Как извлечь строку из текста при помощи регулярных выражений В этом руководстве вы узнаете, как использовать регулярные выражения в Excel для поиска и извлечения части текста, соответствующего заданному шаблону. Microsoft Excel предоставляет ряд функций для извлечения текста из ячеек. Эти функции…
4 способа отладки пользовательской функции Как правильно создавать пользовательские функции и где нужно размещать их код, мы подробно рассмотрели ранее в этой статье.  Чтобы решить проблемы при создании пользовательской функции, вам скорее всего придется выполнить…

Использование функций и вложенных функций в формулах

Функции
— заранее определенные формулы, которые
выполняют вычисления по заданным
величинам, называемым аргументами, и в
указанном порядке. Эти функции позволяют
выполнять как простые, так и сложные
вычисления.

Синтаксис функций

Следующий
пример функции ОКРУГЛ, округляющей
число в ячейке A10, иллюстрирует синтаксис
функции:

Структура
функции

 
Структура. Структура
функции начинается со знака равенства
(=), за которым следуют имя функции,
открывающая скобка, список аргументов,
разделенных точкой с запятой, закрывающая
скобка.

 
Имя функции. Чтобы
отобразить список доступных функций,
щелкните ячейку и нажмите клавиши
SHIFT+F3.

 
Аргументы. Существуют
различные типы аргументов: число, текст,
логическое значение (ИСТИНА и ЛОЖЬ),
массивы,
значение ошибки (например, «#Н/Д) или
ссылки
на ячейку.
В качестве аргументов используются
константы,
формулы или функции. В каждом конкретном
случае необходимо использовать подходящий
тип аргумента.

 
Всплывающая
подсказка аргумента. Всплывающая
подсказка с синтаксисом и аргументами
появляется после ввода функции. Например,
всплывающая подсказка появится после
ввода выражения «=ОКРУГЛ(». Всплывающие
подсказки отображаются только для
встроенных функций.

Ввод функций

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

Чтобы
увидеть все другие функции, щелкните
стрелку на кнопке Сумма
в группе Правка
на вкладке Главная
и затем щелкните пункт Другие
функции
в
списке. Откроется диалоговое окно Мастер
функций — шаг 1 из 2
,
в котором можно искать функции. Это
диалоговое окно является еще одним
способом ввода формул в приложении
Excel. Можно также отобразить другие
функции, щелкнув вкладку Формулы.

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

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

Вложенные функции

В
некоторых случаях может потребоваться
использование функции в качестве одного
из аргументов
другой
функции. Например, в следующей формуле
применяется вложенная функция СРЗНАЧ
и сравнение результата со значением
50.

 Функции
СРЗНАЧ и СУММ вложены в функцию ЕСЛИ.

Вложенная
функция, используемая в качестве
аргумента, должна вычислять соответствующий
этому аргументу тип данных. Например,
если аргумент должен быть логическим,
т.е. иметь значение ИСТИНА либо ЛОЖЬ, то
вложенная функция в результате вычислений
тоже должна возвращать логическое
значение либо ИСТИНА, либо ЛОЖЬ. В
противном случае Microsoft Excel выдаст ошибку
«#ЗНАЧ!».

В
формулах можно использовать до семи
уровней вложенных функций. Когда функция
Б является аргументом функции А, функция
Б находится на втором уровне вложенности.
Например, функции СРЗНАЧ и СУММ считаются
функциями второго уровня, потому что
обе они являются аргументами функции
ЕСЛИ. Функция, вложенная в качестве
аргумента в функцию СРЗНАЧ, будет
функцией третьего уровня и так далее.

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

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

Понравилась статья? Поделить с друзьями:
  • Как вставить чистую строку в excel между строками
  • Как вставить фрагмент кода в word
  • Как вставить чистую страницу в word
  • Как вставить фрагмент в excel
  • Как вставить числовые данные в excel