Как в excel написать цикл с если

ЕСЛИ (функция ЕСЛИ)

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

Поэтому у функции ЕСЛИ возможны два результата. Первый результат возвращается в случае, если сравнение истинно, второй — если сравнение ложно.

Например, функция =ЕСЛИ(C2=»Да»;1;2) означает следующее: ЕСЛИ(С2=»Да», то вернуть 1, в противном случае вернуть 2).

Ваш браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

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

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

Например:

  • =ЕСЛИ(A2>B2;»Превышение бюджета»;»ОК»)

  • =ЕСЛИ(A2=B2;B4-A4;»»)

Имя аргумента

Описание

лог_выражение    (обязательно)

Условие, которое нужно проверить.

значение_если_истина    (обязательно)

Значение, которое должно возвращаться, если лог_выражение имеет значение ИСТИНА.

значение_если_ложь    (необязательно)

Значение, которое должно возвращаться, если лог_выражение имеет значение ЛОЖЬ.

Простые примеры функции ЕСЛИ

Ячейка D2 содержит формулу =ЕСЛИ(C2="Да";1;2)

  • =ЕСЛИ(C2=»Да»;1;2)

В примере выше ячейка D2 содержит формулу: ЕСЛИ(C2 = Да, то вернуть 1, в противном случае вернуть 2)

Ячейка D2 содержит формулу =ЕСЛИ(C2=1;"ДА";"НЕТ")

  • =ЕСЛИ(C2=1;»Да»;»Нет»)

В этом примере ячейка D2 содержит формулу: ЕСЛИ(C2 = 1, то вернуть текст «Да», в противном случае вернуть текст «Нет»). Как видите, функцию ЕСЛИ можно использовать для сравнения и текста, и значений. А еще с ее помощью можно оценивать ошибки. Вы можете не только проверять, равно ли одно значение другому, возвращая один результат, но и использовать математические операторы и выполнять дополнительные вычисления в зависимости от условий. Для выполнения нескольких сравнений можно использовать несколько вложенных функций ЕСЛИ.

Ячейка D2 содержит формулу =ЕСЛИ(C2>B2;"Превышение бюджета","В пределах бюджета")

  • =ЕСЛИ(C2>B2;»Превышение бюджета»;»В пределах бюджета»)

В примере выше функция ЕСЛИ в ячейке D2 означает: ЕСЛИ(C2 больше B2, то вернуть текст «Превышение бюджета», в противном случае вернуть текст «В пределах бюджета»)

Ячейка E2 содержит формулу =ЕСЛИ(C2>B2;C2-B2;"")

  • =ЕСЛИ(C2>B2;C2-B2;0)

На рисунке выше мы возвращаем не текст, а результат математического вычисления. Формула в ячейке E2 означает: ЕСЛИ(значение «Фактические» больше значения «Плановые», то вычесть сумму «Плановые» из суммы «Фактические», в противном случае ничего не возвращать).

Ячейка F7 содержит формулу ЕСЛИ(E7="Да";F5*0,0825;0)

  • =ЕСЛИ(E7=»Да»;F5*0,0825;0)

В этом примере формула в ячейке F7 означает: ЕСЛИ(E7 = «Да», то вычислить общую сумму в ячейке F5 и умножить на 8,25 %, в противном случае налога с продажи нет, поэтому вернуть 0)

Примечание: Если вы используете текст в формулах, заключайте его в кавычки (пример: «Текст»). Единственное исключение — слова ИСТИНА и ЛОЖЬ, которые Excel распознает автоматически.

Распространенные неполадки

Проблема

Возможная причина

0 (ноль) в ячейке

Не указан аргумент значение_если_истина или значение_если_ложь. Чтобы возвращать правильное значение, добавьте текст двух аргументов или значение ИСТИНА/ЛОЖЬ.

#ИМЯ? в ячейке

Как правило, это указывает на ошибку в формуле.

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

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

Подключитесь к эксперту. Учитесь у живых инструкторов.

См. также

Функция ЕСЛИ — вложенные формулы и типовые ошибки

Функция УСЛОВИЯ

Использование ЕСЛИ с функциями И, ИЛИ и НЕ

СЧЁТЕСЛИ

Рекомендации, позволяющие избежать появления неработающих формул

Общие сведения о формулах в Excel

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

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

Логические функции – это очень простой и эффективный инструмент, который часто применяется в практике. Рассмотрим подробно на примерах.

Синтаксис функции ЕСЛИ с одним условием

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

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

Разберем синтаксис функции:

Логическое_выражение – ЧТО оператор проверяет (текстовые либо числовые данные ячейки).

Значение_если_истина – ЧТО появится в ячейке, когда текст или число отвечают заданному условию (правдивы).

Значение,если_ложь – ЧТО появится в графе, когда текст или число НЕ отвечают заданному условию (лживы).

Пример:

Логическая функция ЕСЛИ.

Оператор проверяет ячейку А1 и сравнивает ее с 20. Это «логическое_выражение». Когда содержимое графы больше 20, появляется истинная надпись «больше 20». Нет – «меньше или равно 20».

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

Еще один пример. Чтобы получить допуск к экзамену, студенты группы должны успешно сдать зачет. Результаты занесем в таблицу с графами: список студентов, зачет, экзамен.

Логический оператор в таблице.

Обратите внимание: оператор ЕСЛИ должен проверить не цифровой тип данных, а текстовый. Поэтому мы прописали в формуле В2= «зач.». В кавычки берем, чтобы программа правильно распознала текст.



Функция ЕСЛИ в Excel с несколькими условиями

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

Синтаксис будет выглядеть следующим образом:

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

Здесь оператор проверяет два параметра. Если первое условие истинно, то формула возвращает первый аргумент – истину. Ложно – оператор проверяет второе условие.

Примеры несколько условий функции ЕСЛИ в Excel:

Вложение логических функций.

Таблица для анализа успеваемости. Ученик получил 5 баллов – «отлично». 4 – «хорошо». 3 – «удовлетворительно». Оператор ЕСЛИ проверяет 2 условия: равенство значения в ячейке 5 и 4.

2 условия оператора ЕСЛИ.

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

Расширение функционала с помощью операторов «И» и «ИЛИ»

Когда нужно проверить несколько истинных условий, используется функция И. Суть такова: ЕСЛИ а = 1 И а = 2 ТОГДА значение в ИНАЧЕ значение с.

Функция ИЛИ проверяет условие 1 или условие 2. Как только хотя бы одно условие истинно, то результат будет истинным. Суть такова: ЕСЛИ а = 1 ИЛИ а = 2 ТОГДА значение в ИНАЧЕ значение с.

Функции И и ИЛИ могут проверить до 30 условий.

Пример использования оператора И:

Пример логического оператора И.

Пример использования функции ИЛИ:

Пример логического оператора ИЛИ.

Как сравнить данные в двух таблицах

Пользователям часто приходится сравнить две таблицы в Excel на совпадения. Примеры из «жизни»: сопоставить цены на товар в разные привозы, сравнить балансы (бухгалтерские отчеты) за несколько месяцев, успеваемость учеников (студентов) разных классов, в разные четверти и т.д.

Чтобы сравнить 2 таблицы в Excel, можно воспользоваться оператором СЧЕТЕСЛИ. Рассмотрим порядок применения функции.

Для примера возьмем две таблицы с техническими характеристиками разных кухонных комбайнов. Мы задумали выделение отличий цветом. Эту задачу в Excel решает условное форматирование.

Исходные данные (таблицы, с которыми будем работать):

Две таблицы для сравнения.

Выделяем первую таблицу. Условное форматирование – создать правило – использовать формулу для определения форматируемых ячеек:

Условное форматирование в таблице.

В строку формул записываем: =СЧЕТЕСЛИ (сравниваемый диапазон; первая ячейка первой таблицы)=0. Сравниваемый диапазон – это вторая таблица.

Условия для форматирования ячеек.

Чтобы вбить в формулу диапазон, просто выделяем его первую ячейку и последнюю. «= 0» означает команду поиска точных (а не приблизительных) значений.

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

Выделяем вторую таблицу. Условное форматирование – создать правило – использовать формулу. Применяем тот же оператор (СЧЕТЕСЛИ).

Логический оператор СЧЕТЕСЛИ.

Скачать все примеры функции ЕСЛИ в Excel

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

Логическая функция ЕСЛИ в Экселе – одна из самых востребованных. Она возвращает результат (значение или другую формулу) в зависимости от условия.

Функция имеет следующий синтаксис.

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

лог_выражение – это проверяемое условие. Например, A2<100. Если значение в ячейке A2 действительно меньше 100, то в памяти эксель формируется ответ ИСТИНА и функция возвращает то, что указано в следующем поле. Если это не так, в памяти формируется ответ ЛОЖЬ и возвращается значение из последнего поля.

значение_если_истина – значение или формула, которое возвращается при наступлении указанного в первом параметре события.

значение_если_ложь – это альтернативное значение или формула, которая возвращается при невыполнении условия. Данное поле не обязательно заполнять. В этом случае при наступлении альтернативного события функция вернет значение ЛОЖЬ.

Очень простой пример. Нужно проверить, превышают ли продажи отдельных товаров 30 шт. или нет. Если превышают, то формула должна вернуть «Ок», в противном случае – «Удалить». Ниже показан расчет с результатом.

Функция Excel ЕСЛИ с одним условием

Продажи первого товара равны 75, т.е. условие о том, что оно больше 30, выполняется. Следовательно, функция возвращает то, что указано в следующем поле – «Ок». Продажи второго товара менее 30, поэтому условие (>30) не выполняется и возвращается альтернативное значение, указанное в третьем поле. В этом вся суть функции ЕСЛИ. Протягивая расчет вниз, получаем результат по каждому товару.

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

Прогноз остатков

Пока все логично, но смущают минусы. Разве бывают отрицательные остатки? Нет, конечно. Запасы не могут быть ниже нуля. Чтобы прогноз был корректным, нужно отрицательные значения заменить нулями. Здесь отлично поможет формула ЕСЛИ. Она будет проверять полученное по прогнозу значение и если оно окажется меньше нуля, то принудительно выдаст ответ 0, в противном случае — результат расчета, т.е. некоторое положительное число. В общем, та же логика, только вместо значений используем формулу в качестве условия.

Функция ЕСЛИ для задания условия в формуле

В прогнозе запасов больше нет отрицательных значений, что в целом очень неплохо.

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

Формула ЕСЛИ в Excel – примеры нескольких условий

Довольно часто количество возможных условий не 2 (проверяемое и альтернативное), а 3, 4 и более. В этом случае также можно использовать функцию ЕСЛИ, но теперь ее придется вкладывать друг в друга, указывая все условия по очереди. Рассмотрим следующий пример.

Нескольким менеджерам по продажам нужно начислить премию в зависимости от выполнения плана продаж. Система мотивации следующая. Если план выполнен менее, чем на 90%, то премия не полагается, если от 90% до 95% — премия 10%, от 95% до 100% — премия 20% и если план перевыполнен, то 30%. Как видно здесь 4 варианта. Чтобы их указать в одной формуле потребуется следующая логическая структура. Если выполняется первое условие, то наступает первый вариант, в противном случае, если выполняется второе условие, то наступает второй вариант, в противном случае если… и т.д. Количество условий может быть довольно большим. В конце формулы указывается последний альтернативный вариант, для которого не выполняется ни одно из перечисленных ранее условий (как третье поле в обычной формуле ЕСЛИ). В итоге формула имеет следующий вид.

Несколько условий в функции ЕСЛИ

Комбинация функций ЕСЛИ работает так, что при выполнении какого-либо указанно условия следующие уже не проверяются. Поэтому важно их указать в правильной последовательности. Если бы мы начали проверку с B2<1, то условия B2<0,9 и B2<0,95 Excel бы просто «не заметил», т.к. они входят в интервал B2<1 который проверился бы первым (если значение менее 0,9, само собой, оно также меньше и 1). И тогда у нас получилось бы только два возможных варианта: менее 1 и альтернативное, т.е. 1 и более.

При написании формулы легко запутаться, поэтому рекомендуется смотреть на всплывающую подсказку.

Подсказка функции

В конце нужно обязательно закрыть все скобки, иначе эксель выдаст ошибку

Ошибка из-за нехватки скобки

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

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

В MS Excel 2016 появилась функция ЕСЛИМН, ради которой и написана вся эта статья. Это та же ЕСЛИ, только заточенная специально для проверки множества условий. Теперь не нужно сто раз писать ЕСЛИ и считать открытые скобки. Достаточно перечислить условия и в конце закрыть одну скобку.

Работает следующим образом. Возьмем пример выше и воспользуемся новой формулой Excel ЕСЛИМН.

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

Как видно, запись формулы выглядит гораздо проще и понятнее.

Стоит обратить внимание на следующее. Условия по-прежнему перечисляем в правильном порядке, чтобы не произошло ненужного перекрытия диапазонов. Последнее альтернативное условие, в отличие от обычной ЕСЛИ, также должно быть обязательно указано. В ЕСЛИ задается только альтернативное значение, которое наступает, если не выполняется ни одно из перечисленных условий. Здесь же нужно указать само условие, которое в нашем случае было бы B2>=1. Однако этого можно избежать, если в поле с условием написать ИСТИНА, указывая тем самым, что, если не выполняются ранее перечисленные условия, наступает ИСТИНА и возвращается последнее альтернативное значение.

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

Поделиться в социальных сетях:

Содержание

  • 1 Оператор цикла «For» в Visual Basic
    • 1.1 Цикл «For … Next»
    • 1.2 Цикл «For Each»
    • 1.3 Оператор прерывания цикла «Exit For»
  • 2 Цикл «Do While» в Visual Basic
  • 3 Цикл «Do Until» в Visual Basic

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

Excel

таблицей БЕЗ макросов и дополнительных модулей (функций пользователя).

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

Первый шаг, чтобы начать работать с циклическими ссылками – это разрешить итеративные вычисления в Excel. В версии Microsoft Office XP это делается в разделе меню «Сервис – Параметры»:

как сделать цикл в excel

В открывшемся окне активируем соответствующий флажок:

как сделать цикл в excel

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

!Информация: В Excel 2007 включение итеративных вычислений производится в пункте меню «Файл – Параметры Excel» в разделе «Формулы».

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

Впишите в ячейку А1 формулу:

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

как сделать цикл в excel

Как видите число итераций мы ограничили числом в ячейке А2, а именно 10. Чтобы проиллюстрировать, как происходят итерации, добавим формулу в ячейку B2:

как сделать цикл в excel

Как видите, каждый этап итерации (новое значение А1) добавляется к ячейке B1 до тех пор пока происходят итерации.

!Замечание: Возможно, результат в B2 будет не таким – для того, чтобы исправить это сделайте следующее: после ввода формулы в ячейку B1 перейдите в ячейку A1, установите курсор в поле редактирования формулы и нажмите Enter – произойдет пересчет итераций. Для корректной работы итераций необходимо задать ряд дополнительных условий, ограничивающих их количество и задающее условие сброса текущего значения поля в исходное значение. Пересчет всех ячеек с циклическими ссылками происходит каждый раз при изменении ячеек, от которых они зависят.

!Дополнительные ссылки:

Встречаются ситуации, когда от программы VBA требуется совершить несколько раз подряд один и тот же набор действий (то есть повторить несколько раз один и тот же блок кода). Это может быть сделано при помощи циклов VBA.

К циклам VBA относятся:

  • Цикл For
  • Цикл Do While
  • Цикл Do Until

Далее мы подробно рассмотрим каждый из этих циклов.

Оператор цикла «For» в Visual Basic

Структура оператора цикла For в Visual Basic может быть организована в одной из двух форм: как цикл For … Next или как цикл For Each.

Цикл «For … Next»

Цикл For … Next использует переменную, которая последовательно принимает значения из заданного диапазона. С каждой сменой значения переменной выполняются действия, заключённые в теле цикла. Это легко понять из простого примера:

For i = 1 To 10     Total = Total + iArray(i)  Next i

В этом простом цикле For … Next используется переменная i, которая последовательно принимает значения 1, 2, 3, … 10, и для каждого из этих значений выполняется код VBA, находящийся внутри цикла. Таким образом, данный цикл суммирует элементы массива iArray в переменной Total.

В приведённом выше примере шаг приращения цикла не указан, поэтому для пошагового увеличения переменной i от 1 до 10 по умолчанию используется приращение . Однако, в некоторых случаях требуется использовать другие значения приращения для цикла. Это можно сделать при помощи ключевого слова Step, как показано в следующем простом примере.

For d = 0 To 10 Step 0.1     dTotal = dTotal + d  Next d

Так как в приведённом выше примере задан шаг приращения равный 0.1, то переменная dTotal для каждого повторения цикла принимает значения 0.0, 0.1, 0.2, 0.3, … 9.9, 10.0.

Для определения шага цикла в VBA можно использовать отрицательную величину, например, вот так:

For i = 10 To 1 Step -1     iArray(i) = i  Next i

Здесь шаг приращения равен -1, поэтому переменная i с каждым повторением цикла принимает значения 10, 9, 8, … 1.

Цикл «For Each»

Цикл For Each похож на цикл For … Next, но вместо того, чтобы перебирать последовательность значений для переменной-счётчика, цикл For Each выполняет набор действий для каждого объекта из указанной группы объектов. В следующем примере при помощи цикла For Each выполняется перечисление всех листов в текущей рабочей книге Excel:

Dim wSheet As Worksheet    For Each wSheet in Worksheets     MsgBox "Найден лист: " & wSheet.Name  Next wSheet

Оператор прерывания цикла «Exit For»

Оператор Exit For применяется для прерывания цикла. Как только в коде встречается этот оператор, программа завершает выполнение цикла и переходит к выполнению операторов, находящихся в коде сразу после данного цикла. Это можно использовать, например, для поиска определённого значения в массиве. Для этого при помощи цикла просматривается каждый элемент массива. Как только искомый элемент найден, просматривать остальные нет необходимости – цикл прерывается.

Применение оператора Exit For продемонстрировано в следующем примере. Здесь цикл перебирает 100 записей массива и сравнивает каждую со значением переменной dVal. Если совпадение найдено, то цикл прерывается:

For i = 1 To 100     If dValues(i) = dVal Then        IndexVal = i        Exit For     End If  Next i

Цикл «Do While» в Visual Basic

Цикл Do While выполняет блок кода до тех пор, пока выполняется заданное условие. Далее приведён пример процедуры Sub, в которой при помощи цикла Do While выводятся последовательно числа Фибоначчи не превышающие 1000:

'Процедура Sub выводит числа Фибоначчи, не превышающие 1000  Sub Fibonacci()     Dim i As Integer 'счётчик для обозначения позиции элемента в последовательности     Dim iFib As Integer 'хранит текущее значение последовательности     Dim iFib_Next As Integer 'хранит следующее значение последовательности     Dim iStep As Integer 'хранит размер следующего приращения       'инициализируем переменные i и iFib_Next     i = 1     iFib_Next = 0     'цикл Do While будет выполняться до тех пор, пока значение     'текущего числа Фибоначчи не превысит 1000       Do While iFib_Next < 1000        If i = 1 Then           'особый случай для первого элемента последовательности           iStep = 1           iFib = 0        Else           'сохраняем размер следующего приращения перед тем, как перезаписать           'текущее значение последовательности           iStep = iFib           iFib = iFib_Next        End If          'выводим текущее число Фибоначчи в столбце A активного рабочего листа        'в строке с индексом i        Cells(i, 1).Value = iFib        'вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1        iFib_Next = iFib + iStep        i = i + 1     Loop    End Sub

В приведённом примере условие iFib_Next < 1000 проверяется в начале цикла. Поэтому если бы первое значение iFib_Next было бы больше 1000, то цикл бы не выполнялся ни разу.

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

Схематично такой цикл Do While с проверяемым условием в конце будет выглядеть вот так:

Do  ...  Loop While iFib_Next < 1000

Цикл «Do Until» в Visual Basic

Цикл Do Until очень похож на цикл Do While: блок кода в теле цикла выполняется раз за разом до тех пор, пока заданное условие выполняется (результат условного выражения равен True). В следующей процедуре Sub при помощи цикла Do Until извлекаются значения из всех ячеек столбца A рабочего листа до тех пор, пока в столбце не встретится пустая ячейка:

iRow = 1  Do Until IsEmpty(Cells(iRow, 1))     'Значение текущей ячейки сохраняется в массиве dCellValues     dCellValues(iRow) = Cells(iRow, 1).Value     iRow = iRow + 1  Loop

В приведённом выше примере условие IsEmpty(Cells(iRow, 1)) находится в начале конструкции Do Until, следовательно цикл будет выполнен хотя бы один раз, если первая взятая ячейка не пуста.

Однако, как было показано в примерах цикла Do While, в некоторых ситуациях нужно, чтобы цикл был выполнен хотя бы один раз, не зависимо от первоначального результата условного выражения. В таком случае условное выражение нужно поместить в конце цикла, вот так:

Do  ...  Loop Until IsEmpty(Cells(iRow, 1))

Урок подготовлен для Вас командой сайта office-guru.ru
Источник: /> Перевел: Антон Андронов

Правила перепечаткиЕще больше уроков по Microsoft Excel

Оцените качество статьи. Нам важно ваше мнение:

Добрый день!
Неделю пытаюсь разобраться с макросами в Excel — выходит признаюсь честно плохо…
Решение задачи так и не нашла. Надеюсь вы сумеете мне подсказать куда конкретнее направить свою активность.

Задача передо мной стоит такая:

ячейка A1 содержит значение, которое я с помощью формул разбиваю на диапазон ячеек (задействовано 276 ячеек) целыми числами. Но при разбивке образуется дельта округления. Так вот мне необходимо эту дельту целыми числами доразнести в уже заполненные формулами ячейки например по порядку.
Например если дельта = 117, а диапазон 276, то в первые 117 ячеек прибавляем по 1, а остальные не трогаем.

Подскажите, пожалуйста, возможно ли вообще это описать для Excel?

Содержание

  1. Использование операторов If. Then. Else
  2. Выполнение операторов, если условие равно True
  3. Выполнение определенных операторов, если условие равно True, и выполнение других операторов, если оно равно False
  4. Проверка второго условия, если первое условие равно False
  5. См. также
  6. Поддержка и обратная связь
  7. Циклическое прохождение кода
  8. Использование условных операторов для принятия решений
  9. Выбор условной инструкции для использования
  10. Использование циклов для повторения кода
  11. Выбор цикла для использования
  12. Выполнение нескольких инструкций для одного объекта
  13. См. также
  14. Поддержка и обратная связь
  15. VBA Excel. Циклы
  16. Цикл For… Next
  17. Цикл Do While… Loop
  18. Цикл While… Wend
  19. Цикл Do Until… Loop
  20. Цикл For Each… Next
  21. Excel цикл
  22. Циклы в VBA
  23. Оператор цикла «For» в Visual Basic
  24. Цикл «For … Next»
  25. Цикл «For Each»
  26. Оператор прерывания цикла «Exit For»
  27. Цикл «Do While» в Visual Basic
  28. Цикл «Do Until» в Visual Basic
  29. Excel. Как в Excel сделать циклическую формулу? И будет ли «работать» формула?
  30. можно ли задать цикл в одной формуле?
  31. Построить формулу с циклом для перебора вариантов сочетаний. (Формулы/Formulas)
  32. Как создать цикл перебирающий значения клеток в Excel?
  33. Как сделать цикл в Excel
  34. Цикл по столбцам Excel Файла
  35. Цикл For. Next
  36. Цикл в формуле — проверка условий и подстановка значений (Формулы/Formulas)
  37. цикл (цикл)

Использование операторов If. Then. Else

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

Однако для удобства читаемости лучше использовать оператор Select Case вместо нескольких уровней вложенных операторов If. Then. Else.

Выполнение операторов, если условие равно True

Чтобы выполнить только один оператор, когда условие равно True, используйте однострочный синтаксис оператора If. Then. Else. В следующем примере показан однострочный синтаксис с ключевым словомElse.

Чтобы выполнить несколько строк кода, необходимо использовать многострочный синтаксис. Этот синтаксис включает оператор End If, как показано в примере ниже.

Выполнение определенных операторов, если условие равно True, и выполнение других операторов, если оно равно False

Используйте оператор If. Then. Else для определения двух блоков исполняемых операторов: один блок выполняется, если условие равно True, а другой блок выполняется, если условие равно False.

Проверка второго условия, если первое условие равно False

Можно добавить операторы ElseIf в оператор If. Then. Else для проверки второго условия, если первое условие равно False. Например, в следующей процедуре функция вычисляет бонус на основе классификации задания. Оператор, следующий за оператором Else, выполняется в том случае, если условия во всех операторах If и ElseIf равны False.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Циклическое прохождение кода

С помощью условных операторов и операторов циклов (также называемых структурами управления) можно написать код Visual Basic, который принимает решения и повторяет действия. Другая полезная структура управления, инструкция With , позволяет выполнять ряд инструкций без необходимости повторной квалификации объекта.

Использование условных операторов для принятия решений

Условные операторы оценивают, истинно ли условие (True или False), а затем, в зависимости от результата, указывают один или несколько операторов для выполнения. Обычно условие представляет собой выражение, использующее оператор сравнения для сравнения двух значений или переменных.

Выбор условной инструкции для использования

  • If. Then. Else: использует ветвление кода, когда условие принимает значение True или False
  • Select Case: осуществляет выбор ветви из набора условий

Использование циклов для повторения кода

Построение циклов дает возможность повторно выполнять набор операторов. Некоторые циклы повторяют выполнение операторов, пока условие не примет значение False, другие — пока условие не примет значение True. Существуют также циклы, которые повторяют выполнение операторов определенное количество раз или для каждого объекта коллекции.

Выбор цикла для использования

  • Do. Loop: использует цикл, пока условие не примет значение True
  • For. Next: использует счетчик для выполнения операторов определенное количество раз
  • For Each. Next: повторяет выполнение набора операторов для каждого объекта коллекции

Выполнение нескольких инструкций для одного объекта

В Visual Basic, как правило, необходимо указать объект перед выполнением одного из его методов или изменением одного из его свойств. Используйте инструкцию With , чтобы указать объект один раз для целого ряда инструкций.

  • With: выполняет последовательность операторов на одном объекте

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA Excel. Циклы

Циклы в VBA Excel предназначены для повторения одного и того же блока операторов. Количество итераций может быть задано явно, зависеть от условия или количества элементов, содержащихся в обрабатываемом объекте.

Цикл For… Next

Цикл For… Next в VBA Excel предназначен для выполнения группы операторов необходимое количество раз, заданное счетчиком — специальной переменной цикла. После выполнения каждой итерации значение счетчика увеличивается или уменьшается на единицу или на число, указанное с помощью оператора Step. Предусмотрен принудительный выход из цикла с помощью оператора Exit For. Перейти к подробному описанию …

Цикл Do While… Loop

Цикл Do While… Loop в VBA Excel предназначен для повторения блока операторов до тех пор, пока выполняется заданное условие (возвращается значение True). Этот цикл позволяет проверять условие как до, так и после выполнения операторов. Предусмотрен принудительный выход из цикла с помощью оператора Exit Do. Перейти к подробному описанию …

Цикл While… Wend

Цикл While… Wend в VBA Excel предназначен для выполнения блока операторов до тех пор, пока выполняется заданное условие (возвращается значение True). Этот цикл позволяет проверять условие только до выполнения операторов. Принудительный выход из цикла с помощью оператора Exit Do не предусмотрен. Перейти к подробному описанию …

Цикл Do Until… Loop

Цикл Do Until… Loop в VBA Excel предназначен для повторения блока операторов пока не выполняется заданное условие (возвращается значение False). Этот цикл позволяет проверять условие как до, так и после выполнения операторов. Предусмотрен принудительный выход из цикла с помощью оператора Exit Do. Перейти к подробному описанию …

Цикл For Each… Next

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

Источник

Excel цикл

Циклы в VBA

​Смотрите также​nilem​А остальные не​ другая структура файла​1 | товар2​ включая необязательное ключевое​ i = 1;​ в Excel​Yurasha​ Y |​ будет через макрос,​ буде очень благодарен!​

  • ​при помощи цикла​
  • ​ Do While iFib_Next​
  • ​ этот оператор, программа​

​1​Встречаются ситуации, когда от​: ВПР() с кнопочкой​

Оператор цикла «For» в Visual Basic

​ «опускаются» до уровня​​ можно было бы​​ |​ слово Step. При​ i C1;ТДАТА ();B1)​

Цикл «For … Next»

​Do Until​​ Sub Макрос1()​ форумы Excel.​ ВПР использовать с​1 | ………..​ включении ключевого слова​ i++) sheet.Cells[1, i]​

​: Да, ну! И​Все супер, работает!​ | $| c|​ через формулу. В​Guest​

​С1=ЕСЛИ (B1;A1)​​извлекаются значения из​​ i = 1​​ и переходит к​​ случаях требуется использовать​ совершить несколько раз​With Range(«A2:A» &​Внести ясность может​ незакрепленным диапазоном.​ |​ Step необходимо задавать​ = i; app.Visible​ без VBA можно​ Сейчас я попробую​​ Z |​​ них, к сожалению,​​: =ПРОСМОТР(9E+307;$D4:W4)​​Столбец «В» -​

​ всех ячеек столбца​ Then ‘особый случай​ выполнению операторов, находящихся​ другие значения приращения​ подряд один и​​ Cells(Rows.Count, 1).End(xlUp).Row).Offset(, 2)​​ только автор вопроса​Balbasochka​2 | Подгруппа​​ значение для изменения​​ = true; >​ обойтись. В А1​ разобрать принцип действия​|4 | D​ не силен, опыт​Guest​​ имеет формат «Дата»​​A​ для первого элемента​

​ в коде сразу​ для цикла. Это​ тот же набор​.FormulaR1C1 = «=VLOOKUP(TRIM(RC[-2]),’таблица​Гость​

​: Ух-ты, ух-ты! А​ B |​ переменной «i».​​ >​​ пишем начальное значение.​​ этих формул. «Универсальная»​​ | $| d|​ нулевой. Похожие темы​: .​Общий недостаток для​рабочего листа до​

​ последовательности iStep =​ после данного цикла.​ можно сделать при​ действий (то есть​

​ 2′!R2C1:R200C2,2,0)»​: Добрый день!​ у Вас работает!​1 | товар1​Пример №1:​

​piloterist​​ В В1 -​​ решила эту задачу​​ $ |​​ читал на этом​alexfa88​ всех всех циклических​ тех пор, пока​

Цикл «For Each»

​ 1 iFib =​​ Это можно использовать,​​ помощи ключевого слова​​ повторить несколько раз​​.Value = .Value​расчет правильный в​Сейчас попробую.​ |​​В нижеуказанном примере,​​: C# a=sheet.cells[5,10];присвоит переменной​ формулу (зависимость от​ на все 100​|5 | E​ форуме, есть очень​: Спасибо! все отлично​​ формул:​​ в столбце не​ 0 Else ‘сохраняем​ например, для поиска​

​Step​ один и тот​End With​ Вашей таблице, мне​Боже. какая она красивая​1 | товар5​

Оператор прерывания цикла «Exit For»

​ на активном листе,​​ «a» значение находящиеся​​ А1) -(это минус)​ процентов.​ | $| $|​ похожие решения, но​ работает!​должны быть включены​ встретится пустая ячейка:​ размер следующего приращения​ определённого значения в​, как показано в​ же блок кода).​End Sub​ бы сделать это​ и простая! Как​ |​ по ячейкам А1:А10​ в пятой строке​ А1. Для большей​Спасибо еще раз!​ $ |​

​ доработать их не​​не знал про​​ итерации.​iRow = 1​ перед тем, как​ массиве. Для этого​ следующем простом примере.​ Это может быть​​BOOM​​ по кнопочке, макросом.​ же мозг так​

​1 | …….. |​ проставляется значение от​ 10-ого столбца?​ точности результат можно​ Удачи. =)​———————​ могу, вседствие малоопытности.​

Цикл «Do While» в Visual Basic

​ эту функцию, ВПР,​​но иногда, при​​ Do Until IsEmpty(Cells(iRow,​ перезаписать ‘текущее значение​ при помощи цикла​For d =​ сделано при помощи​​: большое спасибо. Вот​​ На одном листе​ заточен? Короткие запросы. красотища!​​2 | Подгруппа​​ одного до десяти.​Вот код:​ умножить на 1000.​

​Светлый​Впоследствии я смогу​ Итак. ​ ГПР, ИНДЕКС и​ запуске файла, интерация​ 1)) ‘Значение текущей​ последовательности iStep =​ просматривается каждый элемент​ 0 To 10​ циклов VBA.​ это то, что​ храниться таблица с​ А мой мозг​ С |​Sub example1 ()​C# excelapp =​ Стоя в В1​: Пожалуйста.​ удалить из итоговой​. Требуется подобрать текстовые​ ПОИСКПОЗ использую давно,а​ принимает значение по​ ячейки сохраняется в​ iFib iFib =​ массива. Как только​ Step 0.1 dTotal​К циклам VBA относятся:​ нужно)​ наименованиями и символами,​ куда-то пошел. в какие-то​1 | товар1​ Dim i As​ new Excel.Application(); excelapp.Visible​ выбираем — Меню​Но тему всё-таки​ ячейки результаты, содержащие​ сочетания содержимого ячеек,​ эту не знал​ умолчанию ( т.​ массиве dCellValues dCellValues(iRow)​ iFib_Next End If​ искомый элемент найден,​ = dTotal +​Цикл For​sergey_klip​ а на другой​ дебри. ​ |​ Long For i​ = false; excelapp.DisplayAlerts​ — Сервис -​ надо переименовать. Вместо​ символы «$».​

​ но не все​​а в синтаксисе​​ е. выкл)​ = Cells(iRow, 1).Value​ ‘выводим текущее число​​ просматривать остальные нет​​ d Next d​Цикл Do While​: Привет всем. Ребят​ лист вставлялась основная​

​BOOM​​1 | товар2​​ = 1 To​ = true; excelappworkbooks​ Подбор параметра. Ячейка​ «макрос с циклом»​И сразу вопрос:​ возможные, а подчиняющиеся​ 9Е+307 — что​и тогда машина​ iRow = iRow​

​ Фибоначчи в столбце​​ необходимости – цикл​​Так как в приведённом​Цикл Do Until​ помогите. Подскажите как​

​ таблица без символов.Т.е.​: Добрый вечер, подскажите,​ |​

Цикл «Do Until» в Visual Basic

​ 10 ActiveSheet.Range(«A» &​​ = excelapp.Workbooks; excelappworkbook​​ уже высветится, результат​ написать «формулу».​​ можно ли создать​​ порядковому чередованию:​ означает?​ начинает ругаться и​ + 1 Loop​ A активного рабочего​ прерывается.​ выше примере задан​​Далее мы подробно рассмотрим​​ сообразить цикл в​​ пользователь получил таблицу​​ пожалуйста!​​1 | ……… |​​ i).Value = i​ = excelapp.Workbooks.Open(@»C:Fact» +​​ нужен 0, изменяя​​И почитайте правила.​ такой макрос, который​A1+B1+C1+D1​справку прочитал, но​

​ выскакивать сообщение о​В приведённом выше примере​ листа ‘в строке​Применение оператора​ шаг приращения равный​ каждый из этих​ теле которого с​ из 2000 строк​

​как можно вытащить​Надо получить:​​ Next i End​​ textBox3.Text + «Data.xls»,​ значение в А1​​Успехов!​​ не будет зависеть​Дано: 4 столбца​ все равно медленно​ циклических ссылках.​ условие​

​ с индексом i​Exit For​​0.1​​ циклов.​ каждой итерацией меняется​ или 20, скопировал​ данные из одной​Код уровня группы​ Sub​ Type.Missing, Type.Missing, Type.Missing,​ — ОК. Все.​DiSco​ от фиксированного числа​ с текстовыми значениями,​

​ пока что доходит​Прийдется вручную включать​

​IsEmpty(Cells(iRow, 1))​ Cells(i, 1).Value =​
​продемонстрировано в следующем​
​, то переменная​

​Структура оператора цикла​

Excel. Как в Excel сделать циклическую формулу? И будет ли «работать» формула?

​ не сколько переменных​​ ее на этот​
​ таблицы в другую,​ | Наименование |​Пример №2:​ Type.Missing, Type.Missing, Type.Missing,​
​Макс пушкарев​: Как создать цикл​ строк в столбце,​
​ количество строк во​Спасибо!​ итерации.​находится в начале​
​ iFib ‘вычисляем следующее​

​ примере. Здесь цикл​dTotal​
​For​ на величину «к»​

​ лист, нажал на​ если вторая таблица​
​ Подгруппа​В следующем примере​ Type.Missing, Type.Missing, Type.Missing,​: ну это делается​ перебирающий значения клеток?​ а будет запускать​
​ всех столбцах разное.​
​Guest​
​Demetry​ конструкции​

​ число Фибоначчи и​ перебирает 100 записей​для каждого повторения​
​в Visual Basic​ а заканчивается цикл​
​ кнопку и символа​ постоянно разная.​2 | Подгруппа​ скрываются первый и​ Type.Missing, Type.Missing, Type.Missing,​
​ через VBA скорее​ Например: A1,A2. A100?​ очередной цикл, когда​Пример:​
​: Если больше нравится​: Насчет формулы как-то​

​Do Until​​ увеличиваем индекс позиции​ массива и сравнивает​ цикла принимает значения​ может быть организована​
​ по выполнению условия​ поставились бы. Прикрепить​Т.е. Есть табл.1​
​ A |​ второй листы книги.​
​ Type.Missing, Type.Missing); excelsheets​ васего! Alt+F11​
​Что-то вроде:​
​ «наткнется» на пустую​
​______________​ ГПР, то:​ не уверен, а​, следовательно цикл будет​

можно ли задать цикл в одной формуле?

​ элемента на 1​​ каждую со значением​

​ 0.0, 0.1, 0.2,​
​ в одной из​ например e>=1​ файл я не​ с тремя столбцами:​1 | товар1​ Sub example2 ()​ = excelappworkbook.Worksheets; //Excel.Application​piloterist​Set myRange =​ ячейку?​| -|A1|B1|C1|D1|​=ГПР(9E+307;$D4:W4;1)​ функцию можно. Например,​ выполнен хотя бы​
​ iFib_Next = iFib​ переменной​ 0.3, … 9.9,​ двух форм: как​KuklP​ нашел где(((​ 1. наименование 2.​
​ | A​ Dim i As​ app = new​: Добрый день.​ ActiveSheet.Range(‘A1:A100’) For Each​В реальной задаче​|——————-​9E+307 — максимально​
​ такая:​ один раз, если​ + iStep i​dVal​
​ 10.0.​

​Serge_007​​ сумма 3. символ​

​1 | товар2​​ Long For i​ Microsoft.Office.Interop.Excel.Application(); //app.Workbooks.Add(Type.Missing); Excel.Worksheet​
​Подскажите пожалуйста как​ c In myRange.Cells​ в столбце A1​|1 | A​ возможное (ну или​
​Function CYCLE(m_start As​ первая взятая ячейка​ = i +​
​. Если совпадение найдено,​Для определения шага цикла​For … Next​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>if e>=1 then exit​

​: Правила надо читать,​​и есть массив,​ | A​
​ = 1 To​

​ sheet = (Excel.Worksheet)excelappworkbook.ActiveSheet;​ сделать цикл по​ ‘ . Next​ будет 64 значения,​
​ | 1| a|​ почти максимально) число​ Integer, m_end As​ не пуста.​ 1 Loop End​

​ то цикл прерывается:​​ в VBA можно​или как цикл​
​ for(do)​ там всё написано.​ где хранятся символа.​1 | ………..​ 2 Sheets(i).Visible =​ label24.Text = sheet.Cells[2,​ столбцам Excel файла.​ cНет, это не​ в B1=32, C1=64,​ X |​ в Excel.​ Integer)​Однако, как было показано​
​ Sub​For i =​ использовать отрицательную величину,​For Each​Только какое отношение​BOOM​ табл.2: 1. наименование​ | A​
​ False Next i​ 2].ToString();результат: System._ComObject​ Надо в первой​ подходит. Он просто​ D1=16.​|2 | B​

​не найдя данное​​For i =​

Построить формулу с циклом для перебора вариантов сочетаний. (Формулы/Formulas)

​ в примерах цикла​​В приведённом примере условие​
​ 1 To 100​ например, вот так:​.​
​ вопрос имеет к​: я сделал через​
​ 2. символ​2 | Подгруппа​ End Sub​mih0505​ строке отыскать столбец​ работает с выделеным​Знаю, что на​ | 2| b|​ число, или число​ m_start To m_end​Do While​iFib_Next ​ | B​
​ через одну (А1,А3,А5,А7,А9).​Цикл​
​: Собственно, в чем​ вставь проверку условия​
​ как раз 65536),​
​ _ |​если в одном​ диапазоне от m_start​ выражения. В таком​
​ бы не выполнялся​выполняет блок кода​, поэтому переменная​ действия, заключённые в​

​savrix​​ . ​0mega​2 | Подгруппа​
​ Sub example3 ()​For…Nex​ проблема?​
​ в том цикле,​
​ либо попрошу опять​
​|5 | E​
​ квартале лимит не​ до m_end включительно.​ случае условное выражение​ ни разу.​
​ до тех пор,​

​i​​ теле цикла. Это​
​: Доброго времени суток. ​предложенный вариант выполняет​:​ С |​ Dim i As​t имеет следующий синтаксис:​piloterist​
​ который написал Comanche.​ же здесь помощи,​

​ | _| _|​​ устанавливался вовсе (такое​
​alexfa88​ нужно поместить в​Другой способ реализовать цикл​ пока выполняется заданное​
​с каждым повторением​
​ легко понять из​

Как создать цикл перебирающий значения клеток в Excel?

​ Господа, подскажите пожалуйста​​ эти требования .​BOOM​1 | товар1​

​ Long For i​
​For i = Start​: ну столбец же​ А если не​ чтобы реализовать переход​ _ |​ тоже может быть),​: Доброго времени суток!​ конце цикла, вот​Do While​ условие. Далее приведён​ цикла принимает значения​ простого примера:​ такой вопрос. Есть​Quote​, здравствуйте​ | С​ = 1 To​ To End [Step​ в Excel имеет​ подходит то опиши​ на другой лист​———————​ но при этом​
​Есть следующая задача:​ так:​
​– поместить условие​ пример процедуры​ 10, 9, 8,​For i =​ табличка, подобие ЗП,​(Гость)200?’200px’:»+(this.scrollHeight+5)+’px’);»>. пользователь получил таблицу​наличие настоящей таблицы​1 | товар2​ 10 Step 2​ StepSize]​ буквенное обозначение. как​

Как сделать цикл в Excel

​ задачу, может какие​ с помощью такого​Хочу в итоговой​ лимит был в​существует ряд предприятий,​Do . Loop​ не в начале,​Sub​ … 1.​ 1 To 10​ и нужно что​ из 2000 строк​ в формате​
​ | С​ ActiveSheet.Range(«A» & i).Value​

​//операторы//​​ мне прогнать цикл​ другие варианты есть.Почти​ макроса (вычитал на​ колонке получить массив​ предыдущем квартале, то​ по которым в​ Until IsEmpty(Cells(iRow, 1))​ а в конце​, в которой при​Цикл​ Total = Total​ бы на отдельных​ или 20, скопировал​.xls​1 | ………​ = i Next​Next [i]​ с буквы А​

​ получилось, он пербирает​​ одном из форумов):​ данных:​ =ПРОСМОТР(9E+307;$D4:W4) вытянет просто​

Цикл по столбцам Excel Файла

​ начале квартала устанавливается​​Урок подготовлен для Вас​
​ цикла. В этом​ помощи цикла​For Each​ + iArray(i) Next​ листах формировались расчетные​ ее на этот​
​- существенно ускорит​ | С​ i End Sub​i​

​ например на 100​​ значения, Но у​200?’200px’:»+(this.scrollHeight+5)+’px’);»>set ws = activesheet​

​1 A1aX​​ самое последнее значение​ лимит задолженности, потом​ командой сайта office-guru.ru​ случае цикл будет​Do While​похож на цикл​ i​ листки, по каждому​ лист. ​ вероятность правильного ответа​Я попробовала через​

​Balbasochka​​– численная переменная VBA​ столбцов вперед чтобы​

​ меня следубщая задача:​​If ws.cols.count =​2 A1aY​ из всего массива,​ в течение квартала​Источник: http://www.excelfunctions.net/VBA-Loops.html​ выполнен хотя бы​выводятся последовательно числа​For … Next​В этом простом цикле​

​ сотруднику, которые есть​​Во вторую таблицу​ .​=ЕСЛИ(И(A37=1;СМЕЩ(A37;-1;0;;1)=2);ПРАВСИМВ(СМЕЩ(A37;-1;1;1);1);ЕСЛИ(И(A37=1;СМЕЩ(A37;-2;0;;1)=2);ПРАВСИМВ(СМЕЩ(A37;-2;1;1);1);ЕСЛИ(И(A37=1;СМЕЩ(A37;-3;0;;1)=2);ПРАВСИМВ(СМЕЩ(A37;-3;1;1);1);ЕСЛИ(И(A37=1;СМЕЩ(A37;-4;0;;1)=2);ПРАВСИМВ(СМЕЩ(A37;-4;1;1);1);ЕСЛИ(И(A37=1;СМЕЩ(A37;-5;0;;1)=2);ПРАВСИМВ(СМЕЩ(A37;-5;1;1);1);ЕСЛИ(И(A37=1;СМЕЩ(A37;-6;0;;1)=2);ПРАВСИМВ(СМЕЩ(A37;-6;1;1);1);ЕСЛИ(И(A37=1;СМЕЩ(A37;-7;0;;1)=2);ПРАВСИМВ(СМЕЩ(A37;-7;1;1);1);»»)))))))​: Добрый день!​ (счетчик)​ найти столбцы, у​Есть клетка A1,​ 65. then​3 A1aZ​ а не то​ эти лимиты могут​Перевел: Антон Андронов​ раз, не зависимо​ Фибоначчи не превышающие​, но вместо того,​

​For … Next​​ в табличке. Записать​ можно вводить данные​P.S.​Но строк может​
​Помогите, пожалуйста, с​
​Start​ который в i-ой​ D1 и E1.​set ws =​4 A1bX​ что было именно​ пересматриваться, частота и​Автор: Антон Андронов​ от того, выполняется​ 1000:​ чтобы перебирать последовательность​используется переменная​ макрос с созданием​ с клавиатуры, а​если не угадал,​ быть очень много. ​ формулой.​– численное выражение, определяет​

​ строке нужные мне​​Если значение A1​

Цикл For. Next

Цикл в формуле — проверка условий и подстановка значений (Формулы/Formulas)

​ обойтись вообще без​​ итерации.​
​ выглядеть вот так:​ для обозначения позиции​
​ из указанной группы​ из этих значений​
​ не проблема. НО​Символы займут нужное​или не​VBA совсем не​ входит. Код уровня​ значение для переменной.​: По каким индексам?​ = Cells(i, 1)​Прикрепил сам файл​25 B1aX​ изменить диапазон массива,​ пересмотров.​Ячейка выполняет действия​Do . Loop​
​ элемента в последовательности​
​ объектов. В следующем​ выполняется код VBA,​ делать это для​
​ место автоматически сразу​BOOM​
​ знаю. Помогите, пожалуйста!​ для наименования подгруппы​
​Цикл по счетчику​ Задача пройтись циклом​
​ Else Cells(i, 5)​ с задачей, а​
​. ​ что не так​
​Каким образом можно​ со своими же​
​ While iFib_Next ​ нужна ?​
​0mega​=ЕСЛИ(A20=2;ПСТР(B20;11;99);C19)​ уровня для номенклатуры​ После начального For​ отобрать столбцы прошедшие​ i​Светлый​
​Конец.​ формулу еще заложить​

​ день квартала) в​​ вволите значение и​
​Do Until​
​ iFib_Next As Integer​выполняется перечисление всех​
​ массива​

​ сделать цикл, что​​BOOM​принципиальный противник макросов,​Или так (если​ тоже всегда один​
​ указывается имя переменной,​ по условию. А​Задача есть 2 формулы​: Макросы (VBA) в​Для упрощения решения​
​ механизм просмотра массива​ одном столбце сразу​ ячейка A2 сама​очень похож на​ ‘хранит следующее значение​

​ листов в текущей​​iArray​ бы он проходил​
​: просто задачу такую​
​ так что его​ с пропусками)​ и тот-же. Количество​ данная переменная (i)​ потом у этих​ 1 в первую​ другом разделе. Или​

цикл (цикл)

​ могу предложить добавить​​ по определенному критерию,​ подтянуть все самые​
​ себя пересчитывает​ цикл​ последовательности Dim iStep​ рабочей книге Excel:​в переменной​
​ по всей табличке​ поставили . Т.к​ ответ либо не​Код=ЕСЛИ(A20=2;»»;ЕСЛИ(A19=2;ПСТР(B19;11;99);D19))​
​ строк в каждой​ будет счетчиком, после​ столбцов получить значение​ подставляется число X.​
​ переименуйте тему.​ в каждый исходный​ то это будет​ последние пересмотренные лимиты?​B2=ABS(B2-D2)​Do While​ As Integer ‘хранит​

​Dim wSheet As​​Total​​ и для каждого​​ пользователи не умеют​
​ удовлетворяет постановке задачи​Balbasochka​​ подгруппе неопределенное, количество​​ знака равенства идёт​ в определенной строке.​ В конце расчёта​
​А формульное решение​
​ столбец количество символов​ очень замечательно! :)​Прилагаю файл, в​

​В ячейку А1​​: блок кода в​​ размер следующего приращения​​ Worksheet For Each​​.​​ сотрудника создавал расчетный​ пользоваться офисом и​
​либо вы поставили​​: Не работает, возможно​ подгрупп тоже может​ начальное значение счетчика,​Петррр​
​ получаем число X​ Вашей задачи во​
​ для равного значения​kim​ нем же есть​

​ вводим любую информацию​​ теле цикла выполняется​ ‘инициализируем переменные i​ wSheet in Worksheets​В приведённом выше примере​
​ листок. Пример файла​ чтобы им меньше​ задачу неверно.​
​ я описала в​ отличаться.​

​ а после ключевого​​: C# using System;​
​ но другое. Теперь​ вложенном файле.​ строк в каждом​: =ЕСЛИОШИБКА(ПРОСМОТР(2;1/((X2=$D$2:$W$2)*($D4:$W4<>«»));$D4:W4);»»)​ предложение, какой именно​Автоматически в В1​ раз за разом​ и iFib_Next i​ MsgBox «Найден лист:​ шаг приращения цикла​ прилагаю. Заранее благодарен​ делать манипуляций, хотят​На форум иногда​ тексте не очень​Имеем:​ слова To -​ using Exel =​ надо подставить это​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СМЕЩ(A$1;ОТБР((СТРОКА()-1)/32/64/16);)&СМЕЩ(B$1;ОСТАТ(ОТБР((СТРОКА()-1)/64/16);32);)&СМЕЩ(C$1;ОСТАТ(ОТБР((СТРОКА()-1)/16);64);)&СМЕЩ(D$1;ОСТАТ(СТРОКА()-1;16);)​

​ столбце:​​Yurasha​ цикл нужно использовать,​

​ зафиксируется время​​ до тех пор,​ = 1 iFib_Next​

​ » & wSheet.Name​​ не указан, поэтому​​ за любую помощь.​​ одной кнопочкой.​
​ заглядывают экстрасенсы, но​ точно.​Код уровня группы​
​ конечное значение счетчика.​ Microsoft.Office.Interop.Excel; class Program​
​ число в начало​​И универсальная:​| | A1|B1|C1|D1|​: Здравствуйте!​ но, к сожалению​Интересное решение предложил​
​ пока заданное условие​ = 0 ‘цикл​ Next wSheet​ для пошагового увеличения​
​ Всем добра )​​я могу проставить​ не часто. ​В ячейку C​
​ | Наименование |​ По умолчанию счётчик​ < static void​
​ и так до​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СМЕЩ(A$1;ОСТАТ(ОТБР((СТРОКА()-1)/СЧЁТЗ(B:B)/СЧЁТЗ(C:C)/СЧЁТЗ(D:D));СЧЁТЗ(A:A));)&СМЕЩ(B$1;ОСТАТ(ОТБР((СТРОКА()-1)/СЧЁТЗ(C:C)/СЧЁТЗ(D:D));СЧЁТЗ(B:B));)&СМЕЩ(C$1;ОСТАТ(ОТБР((СТРОКА()-1)/СЧЁТЗ(D:D));СЧЁТЗ(C:C));)&СМЕЩ(D$1;ОСТАТ(СТРОКА()-1;СЧЁТЗ(D:D));)​

​|——————-​​Я здесь новичок​ не догадываюсь, как​ Michael_S​ выполняется (результат условного​ Do While будет​Оператор​ переменной​
​Udik​ в цикле только​0mega​ нужно проставить значение​ Подгруппа​ работает с шагом​

​ Main(string[] args) <​​ тех пор пока​
​А эту формулу​
​|1 | A​ и это мой​
​ его реализовать в​Но этот способ​
​ выражения равен​
​ выполняться до тех​
​Exit For​

​i​​: Лучше вам новую​ значение, типа символа​: Все мало-мальски имеющие​

Источник

Функция ЕСЛИ в Excel — это отличный инструмент для проверки условий на ИСТИНУ или ЛОЖЬ. Если значения ваших расчетов равны заданным параметрам функции как ИСТИНА, то она возвращает одно значение, если ЛОЖЬ, то другое.

Содержание

  1. Что возвращает функция
  2. Синтаксис
  3. Аргументы функции
  4. Дополнительная информация
  5. Функция Если в Excel примеры с несколькими условиями
  6. Пример 1. Проверяем простое числовое условие с помощью функции IF (ЕСЛИ)
  7. Пример 2. Использование вложенной функции IF (ЕСЛИ) для проверки условия выражения
  8. Пример 3. Вычисляем сумму комиссии с продаж с помощью функции IF (ЕСЛИ) в Excel
  9. Пример 4. Используем логические операторы (AND/OR) (И/ИЛИ) в функции IF (ЕСЛИ) в Excel
  10. Пример 5. Преобразуем ошибки в значения “0” с помощью функции IF (ЕСЛИ)

Что возвращает функция

Заданное вами значение при выполнении двух условий ИСТИНА или ЛОЖЬ.

Синтаксис

=IF(logical_test, [value_if_true], [value_if_false]) — английская версия

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

Аргументы функции

  • logical_test (лог_выражение) — это условие, которое вы хотите протестировать. Этот аргумент функции должен быть логичным и определяемым как ЛОЖЬ или ИСТИНА. Аргументом может быть как статичное значение, так и результат функции, вычисления;
  • [value_if_true] ([значение_если_истина]) — (не обязательно) — это то значение, которое возвращает функция. Оно будет отображено в случае, если значение которое вы тестируете соответствует условию ИСТИНА;
  • [value_if_false] ([значение_если_ложь]) — (не обязательно) — это то значение, которое возвращает функция. Оно будет отображено в случае, если условие, которое вы тестируете соответствует условию ЛОЖЬ.

Дополнительная информация

  • В функции ЕСЛИ может быть протестировано 64 условий за один раз;
  • Если какой-либо из аргументов функции является массивом — оценивается каждый элемент массива;
  • Если вы не укажете условие аргумента FALSE (ЛОЖЬ) value_if_false (значение_если_ложь) в функции, т.е. после аргумента value_if_true (значение_если_истина) есть только запятая (точка с запятой), функция вернет значение “0”, если результат вычисления функции будет равен FALSE (ЛОЖЬ).
    На примере ниже, формула =IF(A1> 20,”Разрешить”) или =ЕСЛИ(A1>20;»Разрешить») , где value_if_false (значение_если_ложь) не указано, однако аргумент value_if_true (значение_если_истина) по-прежнему следует через запятую. Функция вернет “0” всякий раз, когда проверяемое условие не будет соответствовать условиям TRUE (ИСТИНА).

    IF-EXCEL-01|
  • Если вы не укажете условие аргумента TRUE(ИСТИНА) (value_if_true (значение_если_истина)) в функции, т.е. условие указано только для аргумента value_if_false (значение_если_ложь), то формула вернет значение “0”, если результат вычисления функции будет равен TRUE (ИСТИНА);
    На примере ниже формула равна =IF (A1>20;«Отказать») или =ЕСЛИ(A1>20;»Отказать»), где аргумент value_if_true (значение_если_истина) не указан, формула будет возвращать “0” всякий раз, когда условие соответствует TRUE (ИСТИНА).

IF EXCEL - 02

Функция Если в Excel примеры с несколькими условиями

Пример 1. Проверяем простое числовое условие с помощью функции IF (ЕСЛИ)

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

IF-EXCEL-03

Ниже приведен простой пример использования функции при расчете оценок студентов. Если сумма баллов больше или равна «35», то формула возвращает “Сдал”, иначе возвращается “Не сдал”.

Excel-IF-04

Пример 2. Использование вложенной функции IF (ЕСЛИ) для проверки условия выражения

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

В приведенном ниже примере мы проверяем два условия.

  • Первое условие проверяет, сумму баллов не меньше ли она чем 35 баллов. Если это ИСТИНА, то функция вернет “Не сдал”;
  • В случае, если первое условие — ЛОЖЬ, и сумма баллов больше 35, то функция проверяет второе условие. В случае если сумма баллов больше или равна 75. Если это правда, то функция возвращает значение “Отлично”, в других случаях функция возвращает “Сдал”.

Excel-If-06

Пример 3. Вычисляем сумму комиссии с продаж с помощью функции IF (ЕСЛИ) в Excel

Функция позволяет выполнять вычисления с числами. Хороший пример использования — расчет комиссии продаж для торгового представителя.

В приведенном ниже примере, торговый представитель по продажам:

  • не получает комиссионных, если объем продаж меньше 50 тыс;
  • получает комиссию в размере 2%, если продажи между 50-100 тыс
  • получает 4% комиссионных, если объем продаж превышает 100 тыс.

Рассчитать размер комиссионных для торгового агента можно по следующей формуле:

=IF(B2<50,0,IF(B2<100,B2*2%,B2*4%)) — английская версия

=ЕСЛИ(B2<50;0;ЕСЛИ(B2<100;B2*2%;B2*4%)) — русская версия

Excel-IF-07

В формуле, использованной в примере выше, вычисление суммы комиссионных выполняется в самой функции ЕСЛИ. Если объем продаж находится между 50-100K, то формула возвращает B2 * 2%, что составляет 2% комиссии в зависимости от объема продажи.

Telegram Logo Больше лайфхаков в нашем Telegram Подписаться

Пример 4. Используем логические операторы (AND/OR) (И/ИЛИ) в функции IF (ЕСЛИ) в Excel

Вы можете использовать логические операторы (AND/OR) (И/ИЛИ) внутри функции для одновременного тестирования нескольких условий.

Например, предположим, что вы должны выбрать студентов для стипендий, основываясь на оценках и посещаемости. В приведенном ниже примере учащийся имеет право на участие только в том случае, если он набрал более 80 баллов и имеет посещаемость более 80%.

Excel-If-09

Вы можете использовать функцию AND (И) вместе с функцией IF (ЕСЛИ), чтобы сначала проверить, выполняются ли оба эти условия или нет. Если условия соблюдены, функция возвращает “Имеет право”, в противном случае она возвращает “Не имеет право”.

Формула для этого расчета:

=IF(AND(B2>80,C2>80%),”Да”,”Нет”) — английская версия

=ЕСЛИ(И(B2>80;C2>80%);»Да»;»Нет») — русская версия

Excel-IF-10

Пример 5. Преобразуем ошибки в значения “0” с помощью функции IF (ЕСЛИ)

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

Формула для преобразования ошибок в ячейках следующая:

=IF(ISERROR(A1),0,A1) — английская версия

=ЕСЛИ(ЕОШИБКА(A1);0;A1) — русская версия

Формула возвращает “0”, в случае если в ячейке есть ошибка, иначе она возвращает значение ячейки.

ПРИМЕЧАНИЕ. Если вы используете Excel 2007 или версии после него, вы также можете использовать функцию IFERROR для этого.

Точно так же вы можете обрабатывать пустые ячейки. В случае пустых ячеек используйте функцию ISBLANK, на примере ниже:

=IF(ISBLANK(A1),0,A1) — английская версия

=ЕСЛИ(ЕПУСТО(A1);0;A1) — русская версия

EXCEL-IF-11

На чтение 19 мин. Просмотров 24.7k.

VBA If Statement

Пьер Корнель

Угадай, если сможешь, и выбери, если посмеешь

Содержание

  1. Краткое руководство по VBA If Statement
  2. Что такое IF  и зачем оно тебе?
  3. Тестовые данные
  4. Формат операторов VBA If Then
  5. Простой пример If Then
  6. Условия IF
  7. Использование If ElseIf
  8. Использование If Else
  9. Используя If And/If Or
  10. Функция IIF
  11. Использование Select Case
  12. Попробуйте это упражнение

Краткое руководство по VBA If Statement

Описание Формат Пример
If Then If [условие верно] 
Then [действие]
End If
If score = 100 
Then Debug.Print
«Отлично» 
End If
If Else If [условие верно]
Then [действие]
Else [действие]
End If
If score = 100 
Then Debug.Print 
«Отлично» 
Else Debug.Print 
«Попробуй снова» 
End If
If ElseIf If [1 условие верно] 
Then [действие]
ElseIf [2 условие
верно] 
Then [действие]
End If
If score = 100 
Then Debug.Print 
«Отлично» 
ElseIf score > 50 
Then Debug.Print 
«Пройдено» 
ElseIf score <= 50 
Then Debug.Print 
«Попробуй снова» 
End If
Else и ElseIf
(Else должно
идти
после ElseIf’s)
If [1 условие верно] 
Then [действие]
ElseIf [2 условие
верно] 
Then [действие]
Else [действие]
End If
If score = 100 
Then Debug.Print 
«Отлично» 
ElseIf score > 50 
Then Debug.Print 
«Пройдено» 
ElseIf score > 30 
Then Debug.Print 
«Попробуй снова» 
Else Debug.Print 
«Ой» 
End If
If без Endif
(Только одна
строка)
If [условие верно] 
Then [действие]
If value <= 0 
Then value = 0

В следующем коде показан простой пример использования
оператора VBA If

If Sheet1.Range("A1").Value > 5 Then
    Debug.Print "Значение больше 5."
ElseIf Sheet1.Range("A1").Value < 5 Then
    Debug.Print "Значение меньше 5."
Else
    Debug.Print "Значение равно 5."
End If

Что такое IF  и зачем оно тебе?

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

Вам часто захочется сделать выбор на основе данных, которые
читает ваш макрос.

Например, вы можете захотеть читать только тех учеников, у
которых оценки выше 70. Когда вы читаете каждого учащегося, вы можете
использовать инструкцию If для проверки отметок каждого учащегося.

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

Тестовые данные

Мы собираемся использовать следующие тестовые данные для
примеров кода в этом посте.

VBA If Sample Data

Формат операторов VBA If Then

Формат оператора If Then следующий

За ключевым словом If следуют условие и ключевое слово Then

Каждый раз, когда вы используете оператор If Then, вы должны использовать соответствующий оператор End If.

Когда условие оценивается как истинное, обрабатываются все
строки между If Then и End If.

If [условие верно] Then
    [строки кода]
    [строки кода]
    [строки кода]
End If

Чтобы сделать ваш код более читабельным, рекомендуется
делать отступы между операторами If Then и End If.

Отступ между If и End If

Отступ означает просто переместить строку кода на одну вкладку вправо. Правило большого пальца состоит в том, чтобы сделать отступ между начальным и конечным операторами, такими как:

Sub … End Sub
If Then … End If
If Then… ElseIf … Else … Endif
For … Next
Do While … Loop
Select Case … End Case

Для отступа в коде вы можете выделить строки для отступа и нажать клавишу Tab. Нажатие клавиш Shift + Tab сделает отступ кода, т.е. переместит его на одну вкладку влево.

Вы также можете использовать значки на панели инструментов Visual Basic для отступа кода.

VBA If

Если вы посмотрите на примеры кода на этом сайте, вы увидите, что код имеет отступ.

Простой пример If Then

Следующий код выводит имена всех студентов с баллами более 50.

Sub ChitatOcenki()
    
    Dim i As Long
    ' Пройдите столбцы отметок
    For i = 2 To 11
        ' Проверьте, больше ли баллов,чем 50
        If Sheet1.Range("C" & i).Value > 50 Then
            ' Напечатайте имя студента в «Immediate Window» (Ctrl + G)
            Debug.Print Sheet1.Range("A" & i).Value & " " & Sheet1.Range("B" & i).Value
        End If
    
    Next
    
End Sub

Результаты:

  • Василий Кочин
  • Максим Бородин
  • Дмитрий Маренин
  • Олеся Клюева
  • Евгений Яшин

Поэкспериментируйте с этим примером и проверьте значение или знак > и посмотрите, как изменились результаты.

Условия IF

Часть кода между ключевыми словами If и Then называется условием. Условие — это утверждение, которое оценивается как истинное или ложное. Они в основном используются с операторами Loops и If. При создании условия вы используете такие знаки, как «>, <, <>,> =, <=, =».

Ниже приведены примеры условий:

Условие Это верно, когда
x < 5 x меньше,чем 5
x <= 5 x меньше, либо равен 5
x > 5 x больше, чем 5
x >= 5 x больше, либо равен 5
x = 5 x равен 5
x <> 5 x не равен 5
x > 5 And x < 10 x больше, чем 5 И x меньше, чем 10
x = 2 Or x >10 x равен 2 ИЛИ x больше,чем 10
Range(«A1») = «Иван» Ячейка A1 содержит текст «Иван»
Range(«A1») <> «Иван» Ячейка A1 не содержит текст «Иван»

Вы могли заметить x = 5, как условие. Не стоит путать с х = 5, при использовании в качестве назначения.

Когда в условии используется «=», это означает, что «левая сторона равна правой стороне».

В следующей таблице показано, как знак равенства используется
в условиях и присваиваниях.

Использование «=» Тип Значение
Loop Until x = 5 Условие Равен ли x пяти
Do While x = 5 Условие Равен ли x пяти
If x = 5 Then Условие Равен ли x пяти
For x = 1 To 5 Присваивание Установите значение х = 1, потом = 2 и т.д.
x = 5 Присваивание Установите х до 5
b = 6 = 5 Присваивание и
условие
Присвойте b
результату условия
6 = 5
x = MyFunc(5,6) Присваивание Присвойте х
значение,
возвращаемое
функцией

Последняя запись в приведенной выше таблице показывает
оператор с двумя равными. Первый знак равенства — это присвоение, а любые
последующие знаки равенства — это условия.

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

[переменная] [=] [оценить эту часть]

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

[x] [=] [5]

[b] [=] [6 = 5]

[x] [=] [MyFunc (5,6)]

Использование If ElseIf

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

Sub IspElseIf()
    
    If Marks >= 85 Then
        Debug.Print "Высший балл"
    ElseIf Marks >= 75 Then
        Debug.Print "Отлично"
    End If
    
End Sub

Важно понимать, что порядок важен. Условие If проверяется
первым.

Если это правда, то печатается «Высший балл», и оператор If заканчивается.

Если оно ложно, то код переходит к следующему ElseIf и
проверяет его состояние.

Давайте поменяемся местами If и ElseIf из последнего
примера. Код теперь выглядит так

Sub IspElseIfNeverno()
    
    ' Этот код неверен, так как ElseIf никогда не будет верным
    If Marks >= 75 Then
        Debug.Print "Отлично"
    ElseIf Marks >= 85 Then
        ' код никогда не достигнет здесь
        Debug.Print "Высший балл"
    End If
    
End Sub

В этом случае мы сначала проверяем значение более 75. Мы никогда не будем печатать «Высший балл», потому что, если значение больше 85, это вызовет первый оператор if.

Чтобы избежать подобных проблем, мы должны использовать два
условия. Они помогают точно указать, что вы ищете, чтобы избежать путаницы.
Пример ниже показывает, как их использовать. Мы рассмотрим более многочисленные
условия в разделе ниже.

If marks >= 75 And marks < 85 Then
    Debug.Print "Отлично"
ElseIf marks >= 85 And marks <= 100 Then
    Debug.Print "Высший балл"
End If

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

Использование If Else

Утверждение Else используется, как ловушка для всех. Это в основном означает «если бы не было условий» или «все остальное». В предыдущем примере кода мы не включили оператор печати для метки сбоя. Мы можем добавить это, используя Else.

Sub IspElse()
    
    If Marks >= 85 Then
        Debug.Print "Высший балл"
    ElseIf Marks >= 75 Then
        Debug.Print "Отлично"
    ElseIf Marks >= 55 Then
        Debug.Print "Хорошо"
    ElseIf Marks >= 40 Then
        Debug.Print "Удовлетворительно"
    Else
        ' Для всех других оценок
        Debug.Print "Незачет"
    End If
    
End Sub

Так что, если это не один из других типов, то это провал.

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

Sub DobClass()
    
    ' получить последнюю строку
    Dim startRow As Long, lastRow As Long
    startRow = 2
    lastRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
    
    Dim i As Long, Marks As Long
    Dim sClass As String

    ' Пройдите столбцы отметок
    For i = startRow To lastRow
        Marks = Sheet1.Range("C" & i).Value
        ' Проверьте отметки и классифицируйте соответственно
        If Marks >= 85 Then
            sClass = "Высший балл"
        ElseIf Marks >= 75 Then
            sClass = "Отлично"
        ElseIf Marks >= 55 Then
            sClass = "Хорошо"
        ElseIf Marks >= 40 Then
            sClass = "Удовлетворительно"
        Else
            ' Для всех других оценок
            sClass = "Незачет"
        End If
    
        ' Запишите класс в столбец E
        Sheet1.Range("E" & i).Value = sClass
    Next
    
End Sub

Результаты выглядят так: в столбце E — классификация баллов

VBA If ElseIf Class

Используя If And/If Or

В выражении If может быть несколько условий. Ключевые слова VBA And и Or позволяют использовать несколько условий.

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

Давайте снова посмотрим на наши примеры данных. Теперь мы
хотим напечатать всех студентов, которые набрали от 50 до 80 баллов.

Мы используем Аnd, чтобы добавить дополнительное условие. Код гласит: если оценка больше или равна 50 и меньше 75, напечатайте имя студента.

Sub ProverkaStrokiOcenok()

    Dim i As Long, marks As Long
    For i = 2 To 11
        
        ' Хранить оценки для текущего студента
        marks = Sheet1.Range("C" & i).Value
        
        ' Проверьте, если отметки больше 50 и меньше 75
        If marks >= 50 And marks < 80 Then
             ' Напечатайте имя и фамилию в Immediate window (Ctrl+G)
             Debug.Print Sheet1.Range("A" & i).Value & Sheet1.Range("B" & i).Value
        End If
    
    Next

End Sub

Вывести имя и фамилию в результаты:

  • Дмитрий Маренин
  • Олеся Клюева
  • Евгений Яшин

В нашем следующем примере мы хотим знать, кто из студентов сдавал историю или геометрию. Таким образом, в данном случае мы говорим, изучал ли студент «История» ИЛИ изучал ли он «Геометрия» (Ctrl+G).

Sub ChitatObektOcenki()
    
    Dim i As Long, marks As Long
    
    ' Пройдите столбцы отметок
    For i = 2 To 11
        marks = Sheet1.Range("D" & i).Value
        ' Проверьте, если отметки больше 50 и меньше 80
        If marks = "История" Or marks = "Геометрия" Then
            ' Напечатайте имя и фамилию в Immediate window (Ctrl+G)
            Debug.Print Sheet1.Range("A" & i).Value & " " & Sheet1.Range("B" & i).Value
        End If
    
    Next
    
End Sub

Результаты:

  • Василий Кочин
  • Александр Грохотов
  • Дмитрий Маренин
  • Николай Куликов
  • Олеся Клюева
  • Наталия Теплых
  • Дмитрий Андреев

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

Использование IF AND

And работает следующим образом:

Условие 1 Условие 2 Результат
ИСТИНА ИСТИНА ИСТИНА
ИСТИНА ЛОЖЬ ЛОЖЬ
ЛОЖЬ ИСТИНА ЛОЖЬ
ЛОЖЬ ЛОЖЬ ЛОЖЬ

Что вы заметите, так это то, что And верно только тогда, когда все условия выполняются.

Использование IF OR

Ключевое слово OR работает следующим образом

Условие 1 Условие 2 Результат
ИСТИНА ИСТИНА ИСТИНА
ИСТИНА ЛОЖЬ ИСТИНА
ЛОЖЬ ИСТИНА ИСТИНА
ЛОЖЬ ЛОЖЬ ЛОЖЬ

Что вы заметите, так это то, что OR ложно, только когда все условия ложны.

Смешивание And и Or может затруднить чтение кода и привести к ошибкам. Использование скобок может сделать условия более понятными.

Sub OrSAnd()
    
 Dim subject As String, marks As Long
 subject = "История"
 marks = 5
    
 If (subject = "Геометрия" Or subject = "История") And marks >= 6 Then
     Debug.Print "ИСТИНА"
 Else
     Debug.Print "ЛОЖЬ"
 End If
    
End Sub

Использование IF NOT

Также есть оператор NOT. Он возвращает противоположный результат условия.

Условие Результат
ИСТИНА ЛОЖЬ
ЛОЖЬ ИСТИНА

Следующие две строки кода эквивалентны.

If marks < 40 Then 
If Not marks >= 40 Then

так же, как и

If True Then 
If Not False Then 

и

If False Then 
If Not True Then 

Помещение условия в круглые скобки облегчает чтение кода

If Not (marks >= 40) Then

Распространенное использование Not — при проверке, был ли установлен объект. Возьмите Worksheet для примера. Здесь мы объявляем рабочий лист.

Dim mySheet As Worksheet
' Некоторый код здесь

Мы хотим проверить действительность mySheet перед его использованием. Мы можем проверить, если это Nothing.

If mySheet Is Nothing Then

Нет способа проверить, является ли это чем-то, поскольку есть много разных способов, которым это может быть что-то. Поэтому мы используем NOT с Nothing.

If Not mySheet Is Nothing Then

Если вы находите это немного запутанным, вы можете использовать круглые скобки, как здесь

If Not (mySheet Is Nothing) Then

Функция IIF

VBA имеет функцию, аналогичную функции Excel If. В Excel вы часто используете функцию If следующим образом:

= ЕСЛИ (F2 =»»,»», F1 / F2)

Формат

= If (условие, действие, если ИСТИНА, действие, если ЛОЖЬ).

VBA имеет функцию IIf, которая работает так же. Давайте посмотрим на примере. В следующем коде мы используем IIf для проверки значения переменной val. Если значение больше 10, мы печатаем ИСТИНА, в противном случае мы печатаем ЛОЖЬ.

Sub ProveritVal()
 
    Dim result As Boolean
    Dim val As Long
    
    ' Печатает ИСТИНА
    val = 11
    result = IIf(val > 10, ИСТИНА, ЛОЖЬ)
    Debug.Print result
    
    ' печатает ЛОЖЬ
    val = 5
    result = IIf(val > 10, ИСТИНА, ЛОЖЬ)
    Debug.Print result
    
End Sub

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

Sub ProveritDiapazonOcenok()

    Dim i As Long, marks As Long
    For i = 2 To 11
        
        ' Хранить оценки для текущего студента
        marks = Sheet1.Range("C" & i).Value
        
        ' Проверьте, прошел ли студент или нет
        If marks >= 40 Then
             ' Запишите имена для столбца F
             Sheet1.Range("E" & i) = "Удовлетворительно"
        Else
             Sheet1.Range("E" & i) = "Незачет"
        End If
    
    Next

End Sub

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

Sub ProveritDiapazonOcenok ()

    Dim i As Long, marks As Long
    For i = 2 To 11
        
        ' Хранить оценки для текущего студента
        marks = Sheet1.Range("C" & i)
        
        ' Проверьте, прошел ли студент или нет
        Sheet1.Range("E" & i).Value = IIf(marks >= 40,"Удовлетворительно","Незачет")
    
    Next

End Sub

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

Использование Nested IIf

Вы также можете вкладывать IIf-операторы, как в Excel. Это означает использование результата одного IIf с другим. Давайте добавим еще один тип результата в наши предыдущие примеры. Теперь мы хотим напечатать «Отлично», «Удовлетворительно» или «Незачетт» для каждого студента.

Используя обычный VBA, мы сделали бы это так

Sub ProveritRezultatiTip2()

    Dim i As Long, marks As Long
    For i = 2 To 11
        
        ' Хранить оценки для текущего студента
        marks = Sheet1.Range("C" & i).Value
        
        If marks >= 75 Then
             Sheet1.Range("E" & i).Value = "Отлично"
        ElseIf marks >= 40 Then
             ' Запишите имена для столбца F
             Sheet1.Range("E" & i).Value = "Удовлетворительно"
        Else
             Sheet1.Range("E" & i).Value = "Незачет"
        End If
    
    Next

End Sub

Используя вложенные IIfs, мы могли бы сделать это так

Sub IspNestedIIF()

Dim i As Long, marks As Long, result As String
For i = 2 To 11
    
marks = Sheet1.Range("C" & i).Value
result = IIf(marks >= 55,"Хорошо",IIf(marks >= 40,"Удовлетворительно","Незачет"))

Sheet1.Range("E" & i).Value = result

Next

End Sub

Использование вложенного IIf хорошо в простых случаях, подобных этому. Код прост для чтения и, следовательно, вряд ли вызовет ошибки.

Чего нужно остерегаться

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

В следующем примере мы хотим разделить по баллам, когда он не равен нулю. Если он равен нулю, мы хотим вернуть ноль.

marks = 0
total = IIf(marks = 0, 0, 60 / marks)

Однако, когда отметки равны нулю, код выдаст ошибку «Делить на ноль». Это потому, что он оценивает как Истинные, так и Ложные утверждения. Здесь ложное утверждение, т.е. (60 / Marks), оценивается как ошибка, потому что отметки равны нулю.

Если мы используем нормальный оператор IF, он будет
запускать только соответствующую строку.

marks = 0
If marks = 0 Then
    'Выполняет эту строку только когда отметки равны нулю
    total = 0
Else
    'Выполняет только эту строку, когда отметки не равны нулю
    total = 60 / marks
End If

Это также означает, что если у вас есть функции для ИСТИНА и ЛОЖЬ, то обе будут выполнены. Таким образом, IIF будет запускать обе функции, даже если он использует только одно возвращаемое значение. Например:

' Обе функции будут выполняться каждый раз
total = IIf(marks = 0, Func1, Func2)

IF против IIf

Так что лучше?

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

Кроме того, как мы обсуждали в последнем разделе, IIF всегда оценивает части ИСТИНА и ЛОЖЬ, поэтому, если вы имеете дело с большим количеством данных, оператор IF будет быстрее.

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

Использование Select Case

Оператор Select Case
— это альтернативный способ написания статистики If с большим количеством ElseIf. Этот тип операторов
вы найдете в большинстве популярных языков программирования, где он называется
оператором Switch. Например,
Java, C #, C ++ и Javascript
имеют оператор switch.

Формат

Select Case [переменная]
    Case [условие 1]
    Case [условие 2]
    Case [условие n]
    Case Else
End Select

Давайте возьмем наш пример DobClass сверху и перепишем его с помощью оператора Select Case.

Sub DobavitClass()
    
    ' получить последнюю строку
    Dim startRow As Long, lastRow As Long
    startRow = 2
    lastRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
    
    Dim i As Long, Marks As Long
    Dim sClass As String

    ' Пройдите столбцы отметок
    For i = startRow To lastRow
        Marks = Sheet1.Range("C" & i).Value
        ' Проверьте отметки и классифицируйте соответственно
        If Marks >= 85 Then
            sClass = "Высший балл"
        ElseIf Marks >= 75 Then
            sClass = "Отлично"
        ElseIf Marks >= 55 Then
            sClass = "Хорошо"
        ElseIf Marks >= 40 Then
            sClass = "Удовлетворительно"
        Else
            ' Для всех других оценок
            sClass = "Незачет"
        End If
    
        ' Запишите класс в столбец E
        Sheet1.Range("E" & i).Value = sClass
    Next
    
End Sub

Ниже приведен тот же код с использованием оператора Select Case. Главное, что вы заметите, это то, что мы используем “Case 85 to 100” rather than “marks >=85 And marks <=100”. , а не “marks >=85 And marks <=100”.

Sub DobavitClassSSelect()
    
    ' получить первую и последнюю строки
    Dim firstRow As Long, lastRow As Long
    firstRow = 2
    lastRow = Cells(Cells.Rows.Count, 1).End(xlUp).Row
    
    Dim i As Long, marks As Long
    Dim sClass As String

    ' Пройдите столбцы отметок
    For i = firstRow To lastRow
        marks = Sheet1.Range("C" & i).Value
        ' Проверьте отметки и классифицируйте соответственно
        Select Case marks
        Case 85 To 100
            sClass = "Высший балл"
        Case 75 To 84
            sClass = "Отлично"
        Case 55 To 74
            sClass = "Хорошо"
        Case 40 To 54
            sClass = "Удовлетворительно"
        Case Else
            ' Для всех других оценок
            sClass = "Незачет"
        End Select
        ' Запишите класс в столбец E
        Sheet1.Range("E" & i).Value = sClass
    Next
    
End Sub

Использование Case Is

Вы можете переписать оператор select в том же формате, что и оригинальный ElseIf. Вы можете использовать Is с Case.

Select Case marks
    Case Is >= 85
         sClass = "Высший балл"
    Case Is >= 75
        sClass = "Отлично"
    Case Is >= 55
        sClass = "Хорошо"
    Case Is >= 40
        sClass = "Удовлетворительно"
    Case Else
        ' Для всех других оценок
        sClass = "Незачет"
End Select

Вы можете использовать Is для проверки нескольких значений.
В следующем коде мы проверяем, равны ли оценки 5, 7 или 9.

Sub TestNeskZnach()
    
    Dim marks As Long
    marks = 7
    
    Select Case marks
        Case Is = 5, 7, 9
            Debug.Print True
        Case Else
            Debug.Print False
    End Select
    
End Sub

Попробуйте это упражнение

В этой статье много рассказывали о выражении If. Хороший способ помочь вам понять — это попытаться написать код, используя темы, которые мы рассмотрели. В следующем упражнении используются тестовые данные из этой статьи. Ответ на упражнение ниже.

Мы будем использовать ячейку G1, чтобы написать имя
субъекта.

В колонках от H до L запишите всех студентов, которые имеют оценки по этому предмету. Мы хотим классифицировать их результат как успешный или неудачный. Оценка ниже 40 — неудача, оценка 40 или выше — Зачет.

Колонка H: Имя

Колонка I: Фамилия

Колонка J: Баллы

Колонка H: Предмет

Столбец I: Тип результата — Зачет или Незачет

Если ячейка G1 содержит «Геометрия», то ваш результат должен выглядеть следующим образом:

VBA If Statement

Ответ на упражнение

Следующий код показывает, как выполнить вышеупомянутое упражнение.

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

Sub ZapisatRezultat()
     
    ' Получить тему
    Dim subject As String
    subject = Sheet1.Range("G1").Value
     
    If subject = "" Then
        Exit Sub
    End If
     
    ' Получить первый и последний ряд
    Dim firstRow As Long, lastRow As Long
    firstRow = 2
    lastRow = Cells(Cells.Rows.Count, 1).End(xlUp).Row
     
    ' Очистить любой существующий вывод
    Sheet1.Range("H:L").ClearContents
     
    ' Отслеживать выходной ряд
    Dim outRow As Long
    outRow = 1
     
    Dim i As Long, marks As Long, rowSubject As String
    ' Прочитать данные
    For i = firstRow To lastRow
        marks = Sheet1.Range("C" & i).Value
        rowSubject = Sheet1.Range("D" & i).Value
        If rowSubject = subject Then
            ' Запишите данные студента, если предмет Геометрия
            Sheet1.Range("A" & i & ":" & "D" & i).Copy
            Sheet1.Range("H" & outRow).PasteSpecial xlPasteValues
             
            ' Запишите Зачет или Незачет
            If marks < 40 Then
                Sheet1.Range("L" & outRow).Value = "Незачет"
            ElseIf marks >= 40 Then
                Sheet1.Range("L" & outRow).Value = "Зачет"
            End If
            ' Переместить вывод в следующую строку
            outRow = outRow + 1
        End If
         
    Next i
     
End Sub

#Руководства

  • 24 июн 2022

  • 0

Как из сотни автомобилей выбрать только те, что соответствуют запросу покупателя? Разбираемся на примере функции ЕСЛИ в Excel.

Иллюстрация: Meery Mary для Skillbox Media

Ксеня Шестак

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

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

В статье разберёмся:

  • как работает и для чего нужна функция ЕСЛИ в Excel;
  • как запустить функцию ЕСЛИ с одним условием;
  • как запустить функцию с несколькими условиями.

Функцию ЕСЛИ используют, когда нужно сравнить данные таблицы с критериями пользователя. У функции есть два результата: ИСТИНА и ЛОЖЬ. Первый результат функция выдаёт, когда данные ячейки полностью совпадают с заданным условием, второй — когда данные ячейки условию не соответствуют.

Например, если нужно определить в таблице значения меньше 500, то значение 265 будет отмечено функцией как истинное, а значение 3426 — как ложное.

Можно задавать несколько условий одновременно. Например, найти значения меньше 500, но больше 300. В этом случае функция определит значение 265 как ложное, а 402 — как истинное. Так можно проверять не только числовые значения, но и текст.

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

Рассмотрим, как работает функция ЕСЛИ в классическом виде на примере.

Представим, что в автосалон обратился покупатель с просьбой подобрать ему автомобиль. Его запрос — автомобили чёрного или красного цвета, с объёмом двигателя больше 1,5 л, стоимостью до 2,5 млн рублей. Есть каталог автомобилей, но все характеристики и цены расположены в нём вразброс.

Так выглядит каталог автомобилей
Скриншот: Excel / Skillbox Media

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


Готовимся к запуску функции ЕСЛИ

Для начала рассмотрим, как функция ЕСЛИ работает в классическом виде — для проверки одного условия пользователя. Определим автомобили стоимостью до 2,5 млн рублей.

Принцип действия функции ЕСЛИ следующий. Алгоритм просматривает выбранный диапазон таблицы и проверяет, соответствуют ли данные его ячеек запросу пользователя. Затем возвращается в отдельную ячейку и оставляет там результат: ИСТИНА или ЛОЖЬ. О том, как настроить алгоритм функции под наши потребности, поговорим ниже. А сейчас на примере покажем, как подготовить таблицу к запуску функции и как вызвать окно для её построения.

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

Создаём столбец, в который функция ЕСЛИ принесёт результат
Скриншот: Excel / Skillbox Media

Выделим первую ячейку нового столбца и откроем окно для поиска функций. Это можно сделать двумя способами:

1. Перейти во вкладку «Формулы» и нажать «Вставить функцию».

Нажимаем сюда, чтобы вызвать окно для поиска функций
Скриншот: Excel / Skillbox Media

2. Нажать на «fx» в строке ссылок на любой вкладке Excel.

Так окно поиска функции можно открыть с любой вкладки Excel
Скриншот: Excel / Skillbox Media

На экране справа появится окно «Построитель формул». В нём через поиск находим функцию ЕСЛИ и нажимаем «Вставить функцию».

Нажимаем сюда, чтобы открылось окно для построения функции ЕСЛИ
Скриншот: Excel / Skillbox Media

Появляется окно для заполнения аргументов функции: «Лог_выражение», «Значение_если_истина», «Значение_если_ложь». Ниже разберёмся, как их заполнить.

Появилось окно для ввода аргументов функции
Скриншот: Excel / Skillbox Media

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

«Лог_выражение» (логическое выражение) — запрос пользователя, который функция будет проверять. В нашем примере это стоимость автомобилей.

Нужно, чтобы функция определила автомобили стоимостью менее или равной 2 500 000 рублей. Порядок действий следующий:

1. Ставим курсор в окно «Лог_выражение» в построителе формул.

2. Выбираем первое значение столбца «Цена, руб.» — ячейку Е2. Обозначение ячейки переносится в окно «Лог_выражение» построителя формул и одновременно с этим появляется в строке ссылок.

Выделяем первую ячейку столбца, в котором нужно проверить условие пользователя
Скриншот: Excel / Skillbox Media

3. Дополняем значение E2 запросом пользователя: <=2500000. Одновременно с этим формула в строке ссылок принимает вид:fx=ЕСЛИ(E2<=2500000).

Так выглядит первый аргумент функции после заполнения
Скриншот: Excel / Skillbox Media

«Значение_если_истина» — результат, который функция принесёт в ячейку, если значение совпадёт с запросом пользователя. В случае с примером — что напишет функция, если проверяемая стоимость авто будет меньше либо равна 2 500 000 рублей.

Наша задача — определить, подходят автомобили каталога под запрос клиента или нет. Поэтому в окне аргумента истины введём значение «Подходит» — можно вводить его без кавычек, Excel добавит их самостоятельно.

Заполняем значение ИСТИНА
Скриншот: Excel / Skillbox Media

«Значение_если_ложь» — результат, который функция принесёт в ячейку, если значение не совпадёт с запросом пользователя. В нашем примере — что напишет функция, если проверяемая стоимость авто будет больше 2 500 000 рублей.

Введём в качестве аргумента ЛОЖЬ значение «Не подходит».

Итоговая формула в строке ссылок примет вид:
fx=ЕСЛИ(E2<=2500000;»Подходит»;»Не подходит»).

Вводим значение третьего аргумента
Скриншот: Excel / Skillbox Media

Чтобы получить результат функции, нажимаем кнопку «Готово» в построителе формул.

Нажмём «Готово» для получения результата
Скриншот: Excel / Skillbox Media

В выбранной ячейке появится результат работы функции: «Подходит». Это значит, что первый автомобиль каталога подходит под запрос пользователя, — его цена 1 910 000 рублей.

Так выглядит результат работы функции ЕСЛИ
Скриншот: Excel / Skillbox Media

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

Так выглядит результат работы функции для всех остальных строк таблицы
Скриншот: Excel / Skillbox Media

Чтобы настроить функцию ЕСЛИ с несколькими условиями, нужно добавить к ней дополнительные операторы Excel — «И», «ИЛИ».

Они связывают несколько критериев и, в зависимости от того, совпадают они с данными таблицы или нет, выдают результат. Схематично это будет выглядеть так: «ЕСЛИ условие a = 1, И/ИЛИ условие b = 2, И/ИЛИ условие c = 3, то — ИСТИНА, иначе — ЛОЖЬ».

В нашем примере у покупателя было три условия: цвет автомобиля, цена и объём двигателя. Разберёмся, как настроить функцию ЕСЛИ в этом случае.

Создадим ещё один столбец для новых результатов работы функции. Назовём его в соответствии с запросом покупателя: «До 2,5 млн руб., чёрный или красный, больше 1,5 л».

Создадим столбец для результата работы функции с тремя условиями пользователя
Скриншот: Excel / Skillbox Media

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

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

  • Ставим курсор в окно «Лог_выражение» в построителе формул, вводим дополнительный аргумент «И» и открываем скобку.
  • Первым условием будем вводить два цвета автомобилей, которые выбрал покупатель, поэтому вводим второй дополнительный аргумент «ИЛИ» и открываем ещё одну скобку.
  • Выбираем первое значение столбца «Цвет» — ячейку B2. Ставим знак равенства и находим в этом же столбце значение из запроса пользователя: «чёрный» — ячейку B5. Ставим знак точки с запятой.
  • Снова выбираем первое значение столбца «Цвет», ставим знак равенства и находим второй цвет из запроса пользователя: «красный» — ячейку B8. Закрываем скобку и ставим знак точки с запятой.
  • Закрепляем выбранные ячейки с цветами. На Windows для этого поочерёдно выбираем значения ячеек в строке ссылок и нажимаем клавишу F4, на macOS — выбираем значения ячеек в строке ссылок и нажимаем клавиши Cmd + T. Закрепить эти ячейки нужно, чтобы в дальнейшем можно было протянуть формулу вниз и она сработала корректно для всех остальных строк.
  • Выбираем первое значение столбца «Объём двигателя, л» — ячейку D2. Дополняем его запросом пользователя: >1,5. Также ставим знак точки с запятой.
  • Выбираем первое значение столбца «Цена, руб.» — ячейку Е2. Дополняем его запросом пользователя: <=2500000, как делали в первом примере. Закрываем скобку.

Формула в строке ссылок принимает вид:
fx=ЕСЛИ(И(ИЛИ(B2=$B$5;B2=$B$8);D2>1,5;E2<=2500000)). Она объединит три запроса покупателя оператором «И», а в первом запросе предоставит возможность выбора с помощью оператора «ИЛИ».

Так выглядит первый аргумент функции ЕСЛИ с несколькими истинными условиями после заполнения
Скриншот: Excel / Skillbox Media

Аргументы «Значение_если_истина» и «Значение_если_ложь» оставляем такими же, как в первом случае: «Подходит» и «Не подходит».

Итоговая формула в строке ссылок принимает вид:
fx=ЕСЛИ(И(ИЛИ(B2=$B$5;B2=$B$8);D2>1,5;E2<=2500000);Подходит»;»Не подходит»). Нажимаем кнопку «Готово».

В выбранной ячейке появляется результат: «Не подходит». Это значит, что первый автомобиль каталога не подходит под запрос покупателя — у него жёлтый цвет, а объём двигателя равен 1,5 л.

Так выглядит результат работы функции ЕСЛИ с несколькими истинными условиями
Скриншот: Excel / Skillbox Media

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

Так выглядит результат работы функции ЕСЛИ с несколькими истинными условиями для всех остальных автомобилей
Скриншот: Excel / Skillbox Media

Как пользоваться функцией ЕСЛИ в «Google Таблицах»? В них тоже есть функция ЕСЛИ, но нет окна построителя формул. Поэтому нужно прописывать её вручную, добавляя все пробелы и кавычки самостоятельно. Готовая формула будет выглядеть так:
fx=ЕСЛИ(E2<=»2500000″;»Подходит»;»Не подходит»).

  • Руководство: как сделать ВПР в Excel и перенести данные из одной таблицы в другую
  • Инструкция: как закреплять строки и столбцы в Excel
  • Руководство по созданию выпадающих списков в Excel — как упростить заполнение таблицы повторяющимися данными
  • Гайд о теории ТРИЗ, которую изучают менеджеры по всему миру
  • Статья с советами эксперта, как сохранить бизнес в условиях кризиса, — о рынке, рисках, зарплатах и возможностях

Научитесь: Excel + Google Таблицы с нуля до PRO
Узнать больше

Содержание

  • 1 Что это такое
  • 2 Функция ЕСЛИ в Excel (общие сведения)
    • 2.1 Синтаксис функции ЕСЛИ с одним условием
    • 2.2 Синтаксис функции ЕСЛИ с несколькими условиями
    • 2.3 С несколькими условиями в математических выражениях
    • 2.4 С операторами «и», «или», «не»
    • 2.5 Для проверки ячейки на наличие символов
    • 2.6 Когда один из аргументов не вписан в формулу
  • 3 Сложные логические выражения
  • 4 Несколько условий
  • 5 Проверяем условие для полного совпадения текста.
    • 5.1 ЕСЛИ + СОВПАД
  • 6 Использование функции ЕСЛИ с частичным совпадением текста.
  • 7 Примечания
  • 8 Примеры
  • 9 Функция если в Excel больше или равно
  • 10 Функция если в Excel больше но меньше
  • 11 Дополнительные примеры
  • 12 Вы знали?
  • 13 Дополнительные сведения
  • 14 Как задать функции ЕСЛИ через Построитель формул
  • 15 Ошибки
  • 16 Вместо заключения

Что это такое

Рекомендую перед дальнейшим прочтением ознакомиться со статьей: «Правильное написание формул».
Функция ЕСЛИ проверяет условие. Когда оно выполняется (ИСТИНА) возвращается значение. Если нет — другое. Как прописать функцию "если" с несколькими условиями в программе Excel? Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)

Выглядите так: =ЕСЛИ(логическое выражение; истина; ложь).
Где:

  1. Выражение задается в виде числа или фразы. Например, с текстом «без налога»;
  2. Истина. Значение, которое отобразится если выражение правильно;
  3. Ложь — когда неправильно.

Простой пример формулы если в Эксель (Excel). Проверка равенства чисел из двух ячеек. Как прописать функцию "если" с несколькими условиями в программе Excel? Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)

Рассмотрим примеры формулы ЕСЛИ в Ексель (Excel).

Любая программа пусть это даже небольшая, обязательно содержит последовательность действий, которая называется алгоритмом. Выглядеть он может так:

  1. Проверить всю колонку А на предмет наличия четных чисел.
  2. Если четное число обнаружено, сложить такие-то значения.
  3. Если четное число не обнаружено, то выдать надпись «не обнаружено».
  4. Проверить получившееся число, является ли оно четным. 
  5. Если да, то сложить его со всеми четными числами, отобранными в пункте 1.

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

Синтаксис функции ЕСЛИ с одним условием

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

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

Давайте рассмотрим синтаксис более подробно:

  1. Логическое выражение. Это непосредственно условие, соответствие или несоответствие которому проверяет Excel. Проверяться могут как числовые, так и текстовая информация.
  2. Значение_если_истина. Результат, который отобразится в ячейке в случае, если проверяемые данные соответствуют заданному критерию.
  3. Значение_если_ложь. Результат, который выводится в ячейку, если проверяемые данные не соответствуют условию.

Вот пример для наглядности.

Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)
1

Здесь функция осуществляет сравнение ячейки А1 с числом 20. Это первый пункт синтаксиса. Если содержимое оказывается больше этого значения, в ячейку, где формула была прописана, выводится значение «больше 20». Если же этому условию ситуация не соответствует – «меньше или равно 20».

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

Вот еще одна ситуация. Для получения права сдавать экзаменационную сессию учащимися должна быть пройдена зачетная. Студентам получилось одержать зачет по всем предметам, и теперь остался последний, который оказался решающим. Наша задача – определить, какие из студентов допущены к экзаменам, а какие – нет.

Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)
2

Поскольку нам нужно проверить текст, а не число, в первом аргументе указывается B2=”зач.”.

Синтаксис функции ЕСЛИ с несколькими условиями

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

Чтобы было более наглядно, вот синтаксис.

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

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

Вот пример.

Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)
3

А с помощью такой формулы (показана на скриншоте ниже) можно сделать анализ успеваемости каждого студента.

Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)
4

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

С несколькими условиями в математических выражениях

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

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

Цель – вычесть стоимость для любого количества продуктов, введенного в указанную ячейку. Количество – ячейка B8.

Формула для решения данной задачи принимает вид =B8*ЕСЛИ(B8>=101;12;ЕСЛИ(B8>=50;14;ЕСЛИ(B8>=20;16;ЕСЛИ(B8>=11; 18;ЕСЛИ(B8>=1;22;»»))))) или =B8*ЕСЛИ(B8>=101;B6;ЕСЛИ(B8>=50;B5;ЕСЛИ(B8>=20;B4;ЕСЛИ(B8>=11;B3;ЕСЛИ(B8>=1;B2;»»))))).

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

С операторами «и», «или», «не»

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

Синтаксис выглядит так:

=ЕСЛИ(И(один_критерий;второй_критрий);значение_если_результат_соответствует_критерию;значение_если_результат_соответствует_критерию)

=ЕСЛИ(ИЛИ(один_критерий;второй_критрий);значение_если_результат_соответствует_критерию;значение_если_результат_соответствует_критерию)

=ЕСЛИ(НЕ(критерий);значение_если_результат_соответствует_критерию;значение_если_результат_соответствует_критерию)

Операторы «и», «или» теоретически могут проверить до 255 отдельных критериев, но такое количество сложно создавать, тестировать и изменять, поэтому лучше использовать до 5-ти. А «нет» – только один критерий.

Для проверки ячейки на наличие символов

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

Пустые двойные кавычки в формуле означают «ничего». То есть: если в A2 нет символов, программа выводит текст «пустая», в противном случае будет «не пустая».
Для проверки ячейки ЕСЛИ часто используется в одной формуле c функцией ЕПУСТО (вместо пустых двойных кавычек).

Когда один из аргументов не вписан в формулу

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

Сложные логические выражения

В аргументе Лог_выражение можно использовать как простые сравнения типа F1>10, так и более сложные конструкции на основе функций И(), ИЛИ(), НЕ() и их комбинаций.

Основное правило — логические функции и их комбинации возвращают только одно из 2х логических значений: ЛОЖЬ или ИСТИНА.

Приведем несколько полезных примеров.

Формула =ЕСЛИ(ИЛИ(A1;A2);0;2) проверяет одновременность равенства значений А1 и А2 нулю. Если оба значения равны 0, то формула вернет 2. Во всех других случаях будет возвращен 0. А1 и А2 не должны быть пустыми ячейками.

Формула =ЕСЛИ(ИЛИ(A1=0;A2=0);0;2) проверяет равенство 0 хотя бы одного значения из А1 и А2.

Формула =ЕСЛИ(НЕ(A1>0);1;2) эквивалентна формуле =ЕСЛИ(A1<=0;1;2)

Несколько условий

Что делать, если нужно учесть 2-3 варианта. Например, 3 условия. Проверяется значение ячейки А5. Если оно равно нулю, возвращает текст «ноль». Если «истина». Когда значение ложь, происходит другая проверка, является ли значение меньше 0, и возвращается «Меньше нуля», ЕСЛИ результат положительный. Иначе — «больше нуля». Как прописать функцию "если" с несколькими условиями в программе Excel? Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)

Проверяем условие для полного совпадения текста.

Проверку выполнения доставки организуем при помощи обычного оператора сравнения «=».

=ЕСЛИ(G2=»выполнено»,ИСТИНА,ЛОЖЬ)

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

Как прописать функцию "если" с несколькими условиями в программе Excel? Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)

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

Вот как это может выглядеть на примере.

Как прописать функцию "если" с несколькими условиями в программе Excel? Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)

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

ЕСЛИ + СОВПАД

В случае, если нас интересует полное совпадение текста с заданным условием, включая и регистр его символов, то оператор «=» нам не сможет помочь.

Но мы можем использовать функцию СОВПАД (английский аналог — EXACT).

Функция СОВПАД сравнивает два текста и возвращает ИСТИНА в случае их полного совпадения, и ЛОЖЬ — если есть хотя бы одно отличие, включая регистр букв. Поясним возможность ее использования на примере.

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

=ЕСЛИ(СОВПАД(G2,»Выполнено»),»Да»,»Нет»)

ЕСЛИ + СОВПАД текст

Как видите, варианты «ВЫПОЛНЕНО» и «выполнено» не засчитываются как правильные. Засчитываются только полные совпадения. Будет полезно, если важно точное написание текста — например, в артикулах товаров.

Использование функции ЕСЛИ с частичным совпадением текста.

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

Первое, что приходит на ум – использовать подстановочные знаки «?» и «*» (вопросительный знак и звездочку). Однако, к сожалению, этот простой способ здесь не проходит.

Примечания

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

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

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

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

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

Примеры

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

Сложный оператор ЕСЛИ с вложением — ячейка E2 содержит формулу =ЕСЛИ(B2>97;

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

    Этот сложный оператор с вложенными функциями ЕСЛИ следует простой логике:

    1. Если тестовых баллов (в ячейке D2) больше 89, учащийся получает оценку A.

    2. Если тестовых баллов больше 79, учащийся получает оценку B.

    3. Если тестовых баллов больше 69, учащийся получает оценку C.

    4. Если тестовых баллов больше 59, учащийся получает оценку D.

    5. В противном случае учащийся получает оценку F.

    Этот частный пример относительно безопасен, поскольку взаимосвязь между тестовыми баллами и буквенными оценками вряд ли будет меняться, так что дополнительных изменений не потребуется. Но что если вам потребуется разделить оценки на A+, A и A– (и т. д.)? Теперь ваши четыре условных оператора ЕСЛИ нужно переписать с учетом 12 условий! Вот так будет выглядеть ваша формула:

    • =ЕСЛИ(B2>97;»A+»;ЕСЛИ(B2>93;»A»;ЕСЛИ(B2>89;»A-«;ЕСЛИ(B2>87;»B+»;ЕСЛИ(B2>83;»B»;ЕСЛИ(B2>79;»B-«; ЕСЛИ(B2>77;»C+»;ЕСЛИ(B2>73;»C»;ЕСЛИ(B2>69;»C-«;ЕСЛИ(B2>57;»D+»;ЕСЛИ(B2>53;»D»;ЕСЛИ(B2>49;»D-«;»F»))))))))))))

    Она по-прежнему работает правильно и работает правильно, но на написание и проверку нужно много времени, чтобы убедиться, что она работает правильно. Еще одна наиболее взглялая проблема в том, что вам приходилось вручную вводить оценки и эквивалентные буквы оценок. Какова вероятность случайного опечатки? Теперь представьте, что вы пытаетесь сделать это 64 раза с более сложными условиями! Конечно, это возможно, но действительно ли вы хотите обучебиться с такого рода усилиями и возможными ошибками, которые будет трудно обнаружить?

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

    Функция если в Excel больше или равно

    Рассчитаем скидки. Условия, следующие:

    1. До 100 000 — скидка 0 процентов;
    2. От 100 001 до 30000 — 3;
    3. 300001 до 500 000 — 5;
    4. Более 500001 — 7.

    В ячейке А1 объем продаж. Формула примет вид: Как прописать функцию "если" с несколькими условиями в программе Excel? Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)

    Функция если в Excel больше но меньше

    Используйте ЕСЛИ совместно с функцией И. Если А2 больше В2 но меньше С1 возвратится значение ИСТИНА. Иначе ЛОЖЬ. Как прописать функцию "если" с несколькими условиями в программе Excel? Функция ЕСЛИ в Excel. Примеры (с несколькими условиями)

    Дополнительные примеры

    Ниже приведен распространенный пример расчета комиссионных за продажу в зависимости от уровней дохода.

    Ячейка D9 содержит формулу ЕСЛИ(C9>15000;20%;ЕСЛИ(C9>12500;17,5%;ЕСЛИ(C9>10000;15%;ЕСЛИ(C9>7500;12,5%;ЕСЛИ(C9>5000;10%;0)))))» src=»/images/ru-ru/media/fb2c2f37-d09d-4f6e-8e8a-82707ba479db.png» loading=»lazy»></p>
<ul>
<li>
<p>=ЕСЛИ(C9>15000;20%;ЕСЛИ(C9>12500;17,5%;ЕСЛИ(C9>10000;15%;ЕСЛИ(C9>7500;12,5%;ЕСЛИ(C9>5000;10%;0)))))</p>
</li>
</ul>
<p>Эта формула означает: ЕСЛИ(ячейка C9 больше 15 000, то вернуть 20 %, ЕСЛИ(ячейка C9 больше 12 500, то вернуть 17,5 % и т. д…</p>
<p>Хотя она выглядит примерно так же, как в примере с более ранними оценками, эта формула является отличным примером того, насколько сложно использовать крупные выписки ЕСЛИ. Что делать, если ваша организация решила добавить новые уровни компенсаций и, возможно, даже изменить существующие значения в рублях или процентах? У вас будет много работы на руках!</p>
<p>Совет: Чтобы сложные формулы было проще читать, вы можете вставить разрывы строк в строке формул. Просто нажмите клавиши ALT+ВВОД перед текстом, который хотите перенести на другую строку.</p>
<p>Перед вами пример сценария для расчета комиссионных с неправильной логикой:</p>
<p><img alt=5000;10%;ЕСЛИ(C9>7500;12,5%;ЕСЛИ(C9>10000;15%;ЕСЛИ(C9>12500;17,5%;ЕСЛИ(C9>15000;20%;0)))))» src=»/images/ru-ru/media/b1eeb416-b9d0-4537-9594-cb54c7f86c59.png» loading=»lazy»>

    Видите, что не так? Сравните порядок сравнения доходов с предыдущим примером. Как это будет происходить? Правильно, она будет снизу вверх (от 5 000 до 15 000 рублей), а не наоборот. Но почему это так важно? Это очень важно, так как формула не может пройти первую оценку для любого значения стоимостью более 5 000 рублей. Предположим, что вы получили доход в размере 12 500 долларов США— если вы получили 10 %, так как она больше 5 000 рублей, и она остановится на этом. Это может быть чрезвычайно проблемным, так как во многих ситуациях такие типы ошибок остаются незамеченными до тех пор, пока они не оказывают отрицательного влияния. Так что же можно сделать, зная о том, что при сложных вложенных заявлениях ЕСЛИ существуют серьезные недостатки? В большинстве случаев вместо создания сложной формулы с помощью функции ЕСЛИ можно использовать функцию ВЛОП. С помощью ВLOOKUPсначала нужно создать таблицу для справки:

    Ячейка D2 содержит формулу =ВПР(C2;C5:D17;2;ИСТИНА)

    • =ВПР(C2;C5:D17;2;ИСТИНА)

    В этой формуле предлагается найти значение ячейки C2 в диапазоне C5:C17. Если значение найдено, возвращается соответствующее значение из той же строки в столбце D.

    Ячейка C9 содержит формулу =ВПР(B9;B2:C6;2;ИСТИНА)

    • =ВПР(B9;B2:C6;2;ИСТИНА)

    Эта формула ищет значение ячейки B9 в диапазоне B2:B22. Если значение найдено, возвращается соответствующее значение из той же строки в столбце C.

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

    В этой области в этой области вложена более подробная информация,но это намного проще, чем 12-уровневая сложная вложенная если-выписка! Есть и другие, менее очевидные, преимущества:

    • Таблицы ссылок функции ВПР открыты и их легко увидеть.

    • Значения в таблицах просто обновлять, и вам не потребуется трогать формулу, если условия изменятся.

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

    Вы знали?

    Теперь есть функция УСЛОВИЯ, которая может заменить несколько вложенных операторов ЕСЛИ. Так, в нашем первом примере оценок с 4 вложенными функциями ЕСЛИ:

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

    можно сделать все гораздо проще с помощью одной функции ЕСЛИМН:

    • =ЕСЛИМН(D2>89;»A»;D2>79;»B»;D2>69;»C»;D2>59;»D»;ИСТИНА;»F»)

    Функция ЕСЛИМН — просто находка! Благодаря ей вам больше не нужно переживать обо всех этих операторах ЕСЛИ и скобках.

    Примечание: Эта функция доступна только при наличии подписки на Microsoft 365.. Если вы являетесь подписчиком Microsoft 365, убедитесь, что у вас установлена последняя версия Office.

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

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

    Как задать функции ЕСЛИ через Построитель формул

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

    Давайте разберем, как это работает. Допустим, нам снова как и в первом примере нужно проставить скидку на всю женскую обувь в размере 25%.

    1. Ставим курсор на нужную ячейку, заходим во вкладку “Формулы”, далее щелкаем “Вставить функцию”.Как задать функции ЕСЛИ через Построитель формул
    2. В открывшемся списке Построителя формул выбираем “ЕСЛИ” и нажимаем “Вставить функцию”.Как задать функции ЕСЛИ через Построитель формул
    3. Открывается окно настройки функции. Как задать функции ЕСЛИ через Построитель формул
      В поле “логическое выражение” пишем условие, по которому будет проводиться проверка. В нашем случае это “B2=”женский”.
      В поле “Истина” пишем значение, которое должно отобразиться в ячейке, если условие выполняется.
      В поле “Ложь” – значение при невыполнении условия.
    4. После того, как все поля заполнены, жмем “Готово”, чтобы получить результат.Как задать функции ЕСЛИ через Построитель формул

    Ошибки

    В результате может отобразиться одна из ошибок:

    1. #ИМЯ? – опечатка в самой формуле.
    2. 0 – не указан истинный или ложный аргумент.

    Вместо заключения

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

    В программах OpenOffice и LibreOffice также используется ЕСЛИ (IF), а синтаксис и принцип работы функции точно такие же, как описано выше.

    Источники

    • https://public-pc.com/formula-esli-v-excel-3-usloviya/
    • https://office-guru.ru/excel/functions-proverka-svoistv-znachenii/funkciya-esli-v-excel-primery-s-neskolkimi-usloviyami.html
    • https://sysadmin-note.ru/article/funkciya-esli-v-excel/
    • https://excel2.ru/articles/funkciya-esli-v-ms-excel-esli
    • https://mister-office.ru/funktsii-excel/function-if-with-text.html
    • https://support.microsoft.com/ru-ru/office/%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-%D0%B5%D1%81%D0%BB%D0%B8-%D0%B2%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5-%D1%84%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D1%8B-%D0%B8-%D1%82%D0%B8%D0%BF%D0%BE%D0%B2%D1%8B%D0%B5-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B8-0b22ff44-f149-44ba-aeb5-4ef99da241c8
    • https://MicroExcel.ru/operator-esli/
    history 11 апреля 2013 г.
      Группы статей

    • стандартные функции


    Функция ЕСЛИ()

    , английский вариант IF(),

    используется при проверке условий. Например, =ЕСЛИ(A1>100;»Бюджет проекта превышен»;»ОК!»). В зависимости от значения в ячейке

    А1

    результат формулы будет либо «Бюджет превышен» либо «ОК!».

    Функция ЕСЛИ() относится к наиболее часто используемым функциям. Поэтому рассмотрим ее подробно.

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


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

    Функция имеет 3 аргумента.


    Лог_выражение

    — любое значение или выражение, принимающее значения ИСТИНА или ЛОЖЬ. Например, выражение A1>100. Если в ячейке А1 содержится значение 102, то выражение A1>100 вернет ИСТИНА, т.к. 102>100. Если в ячейке А1 содержится значение 88, то выражение вернет ЛОЖЬ, т.к. неравенство 88>100 неверно. Полностью формула может выглядеть так =ЕСЛИ(A1>100;»Бюджет проекта превышен»;»ОК!») Если в ячейке

    A1

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

    Бюджет проекта превышен,

    а если меньше 100 или равное 100, то будет выведено

    ОК!

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


    Примечание

    : Ошибка #ЗНАЧ! может быть также из-за ошибок в выражениях указанных во втором и третье аргументе.

    Второй аргумент —

    Значение_если_истина

    и третий аргумент

    значение_если_ложь

    Как было показано выше, если логическое выражение (первый аргумент функции) принимает значение ИСТИНА, то функция возвращает значение из второго аргумента

    значение_если_истина.

    Соответственно, если логическое выражение принимает значение ЛОЖЬ, то функция возвращает значение из третьего аргумента

    значение_если_ложь

    .

    Второй и третий аргумент могут быть любым значением (число или текст) или являться выражением (формулой с функциями). Например формула =ЕСЛИ(A1>100;0;А1*1%) позволяет вычислять премию для проектов, в которых не было превышения бюджета (>100). Если бюджет превышен (в А1 введено значение 200 или любое другое более 100), то формула вернет 0, если в А1 введено значение менее 100, то будет вычислено значение премии А1*1% (т.е. если в А1 число 90, то формула вернет 0,9).

    Если в качестве второго и третьего аргументов введено выражение, то оно может содержать и функции, например: =ЕСЛИ(A1>100;СУММ(B1:B10);СУММ(C1:C10)) Т.е. если в ячейке

    A1

    содержится значение >100, то суммирование ведется по столбцу

    B

    , а если меньше или равно 100, то по столбцу

    С

    . Не забывайте, что при значении А1 = 100 в данном случае будет срабатывать выражение из аргумента

    значение_если_ложь.

    Аргумент

    значение_если_ложь

    можно опустить (не вводить), тогда при значении логического выражения =ЛОЖЬ будет выведено ЛОЖЬ. Например, если в А1 содержится 600, то формула =ЕСЛИ(A1>=1000;»Больше или равно 1000″) вернет просто ЛОЖЬ. Понятно, что при значении логического выражения =ИСТИНА будет выведено «Больше или равно 1000», т.е. второй аргумент функции ЕСЛИ() —

    Значение_если_истина.

    Вложенные ЕСЛИ (несколько условий)

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

    значение_если_истина

    и

    значение_если_ложь

    введите еще одно условие с функцией ЕСЛИ(). Например, для проверки в какой диапазон попадает значение из ячейки А8 запишите формулу

    =ЕСЛИ(A8<5;1;ЕСЛИ(A8>10;3;2))

    • Если значение из ячейки А8 менее 5, то будет выведено 1
    • Если значение из ячейки А8 более 10, то будет выведено 3
    • Если значение из ячейки А8 между 5 и 10 (включая 5 и 8), то будет выведено 2


    Примечание

    : В версии EXCEL 2007 можно использовать до 64 вложенных друг в друга функций ЕСЛИ(). Но, пожалуйста, не делайте так. Такой подход чреват ошибками.


    Примечание

    : Формулу =ЕСЛИ(A8<5;1;ЕСЛИ(A8>10;3;2)) можно переписать как =ЕСЛИ(A8>=5;ЕСЛИ(A8>10;3;2);1) или ЕСЛИ(A8>=5;ЕСЛИ(A8>10;3;2);1)


    или более сложный вариант =ЕСЛИ(A8<5;1;ЕСЛИ(И(5 < A8;A8<10);2;3)). Последний вариант позволяет последовательно перебирать диапазоны изменения А8, но требует знания работы логических функций.

    Формула =ЕСЛИ(A8<5;1;ЕСЛИ(A8>10;3;2)) работает следующим образом: сначала вычисляется логическое выражение A8<5. Если оно истинно, то выводится 1, вычисления завершены. Если оно ложно, т.е. А8>=5, то EXCEL переходит к вычислению выражения ЕСЛИ(A8>10;3;2). Опять сначала вычисляется логическое выражение A8>10. Если оно истинно, то выводится 3, вычисления завершены. Если оно ложно, то выводится 2, вычисления завершены.

    Чтобы грамотно написать формулу с вложенными ЕСЛИ() следуйте следующим простым правилам:

    1) Определитесь с диапазонами:

    1.1) они не должны пересекаться. В примере выше — 3 диапазона и значение из А8 гарантированно попадет только в один из них. Было бы ошибкой написать формулу типа =ЕСЛИ(A8<5;1;ЕСЛИ(A8>10;3;ЕСЛИ(A8<3;2;4))). Области значений у выражений A8<5 и A8<3 пересекаются и крайне сложно безошибочно прописывать такие условия. Такая формула просто не верна. Очевидно, что в этом случае 4 диапазона: меньше 3; от 3 до 5; от 5 до 10 и больше 10. Как прописать такие условия написано ниже в этом разделе.

    1.2.) диапазоны должны полностью охватывать нужную область значений. Очевидно, что в формуле =ЕСЛИ(A8<5;1;ЕСЛИ(A8>10;3;2)) на интересует вся числовая ось от минус бесконечности до +бесконечности. И все 3 диапазона полностью покрывают эту область.

    1.3.) Не забудьте ставить знак равно, чтобы при значениях А8 совпадающих с границами интервалов не было неправильных вычислений. Например, если в формуле =ЕСЛИ(A8>=5;ЕСЛИ(A8>10;3;2);1) забыть указать знак = в логическом выражении A8>=5, то при А8=5 формула =ЕСЛИ(A8>5;ЕСЛИ(A8>10;3;2);1) вернет 1, тогда как исходная формула вернет 2.


    Примечание:

    В перечисленных выше случаях логические выражения вычисляются на основании одной переменной А8. Иногда нужно придумывать формулы с ЕСЛИ(), зависящие от 2-х и более ячеек: =ЕСЛИ(B8>=5;ЕСЛИ(A8>10;3;2);1). Это гораздо сложнее, но, конечно, возможно. Следуйте правилам 1.1)-1.3) и следите за диапазонами. Еще сложнее, если обе переменных являются зависимыми, т.е. например B8 вычисляется на основании А8. Написание таких формул требует предельной аккуратности и напрямую связано с корректностью формулирования самой задачи (возможно вы не продумали до конца как использовать такую сложную зависимость). Советую по возможности разбить вычисления на 2 или более формулы, чтобы проще контролировать результат вычисления.

    2) Правильно записывайте логические выражения. Например, условие 5 < A8<10 в EXCEL не будет работать. В этом выражении фактически записано 2 условия. Нужно записать эти 2 условия по отдельности. Чтобы их объединить нужна функция И(): И(5 < A8;A8<10) Подробности в этой статье

    https://excel2.ru/articles/funkciya-i-v-ms-excel-i

    или потребуется переделать формулу с вложенными ЕСЛИ().

    3) Используйте для наглядности построчное написание вложенных ЕСЛИ. Например, формулу =ЕСЛИ(A8<5;1;ЕСЛИ(A8>10;3;2)) в строке формул можно записать как

    =ЕСЛИ(A8<5;1;

    ЕСЛИ(A8>10;3;2))

    Для этого поставьте курсор перед вторым ЕСЛИ(), нажмите и удерживайте клавишу ALT, нажмите ENTER.

    4) для отладки вложенных ЕСЛИ вместо реальных вычислений (V8*10%-37500) используйте простые значения — последовательности 1; 2; 3 … Это покажет какой блок вложенных ЕСЛИ() срабатывает.

    5) В ряде случаев от вложенных ЕСЛИ можно отказаться. Рассмотрим пример определения размера проекта от его бюджета

    =ЕСЛИ(A1>=100;»Очень крупный проект»;

    ЕСЛИ(A1>=90;»Крупный проект»;

    ЕСЛИ(A1>=50;»Средний проект»;»Малый проект «)))

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

    =ПРОСМОТР(A1;{0;50;90;100};{«Малый проект»;»Средний проект»;»Крупный проект»;»Очень крупный проект»})

    =ВПР(A1;A3:B6;2)

    Для функции ВПР() необходимо создать в диапазоне

    A3:B6

    таблицу значений:

    Формула =ПРОСМОТР(A1;{0;50;90;100};{«Малый проект»;»Средний проект»;»Крупный проект»;»Очень крупный проект»}) выглядит необычно, но по сути второй аргумент {0;50;90;100}, как и третий аргумент {«Малый проект»;»Средний проект»;»Крупный проект»;»Очень крупный проект»} это запись содержимого 4-х ячеек. Вместо {0;50;90;100} можно записать ссылку на диапазон ячеек, содержащих 4 значения 0;50;90;100. Круглые скобки нужны, чтобы сообщить, что в функцию передается не одно значение, а целый массив.

    Еще пример. Пусть требуется вывести разный текст (например «<0»; «=0» или «>0») в случае наличия в ячейке

    А1

    отрицательного значения, положительного значения или 0. Это можно сделать без вложенных ЕСЛИ():

    =ПРОСМОТР(A1;{-1E+307;0;1E-307};{«<0″;»=0″;»>0″})


    Примечание

    : -1E+307 — это самое маленькое отрицательное число в EXCEL, 1E-307 — это самое маленькое положительное число. Таким образом задается 3 диапазона: от минус бесконечности до 0 (0 не включая); 0 (диапазон состоит только из одного значения 0); от 0 до +бесконечности (0 не включая).

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

    =ПРОСМОТР(A24;{-1E+307;0;1E-307};A27:A29)

    Диапазон A27:A29 должен, понятно, содержать формулы (см. файл примера).

    Опущен третий аргумент

    [значение_если_ложь]

    Третий аргумент функции не обязателен. Если логическое условие не выполнено, т.е. ЛОЖЬ, а третий аргумент функции не указан, то функция вернет также значение ЛОЖЬ. Например:

    =ЕСЛИ(A1>100;»Бюджет превышен»)

    Если в ячейке

    A1

    содержится значение 1, то вышеуказанная формула вернет значение ЛОЖЬ.

    Сложные логические выражения

    В аргументе

    Лог_выражение

    можно использовать как простые сравнения типа F1>10, так и более сложные конструкции на основе функций И(), ИЛИ(), НЕ() и их комбинаций.


    Основное правило

    — логические функции и их комбинации возвращают только одно из 2х логических значений: ЛОЖЬ или ИСТИНА.

    Приведем несколько полезных примеров.

    Формула =ЕСЛИ(ИЛИ(A1;A2);0;2) проверяет одновременность равенства значений А1 и А2 нулю. Если оба значения равны 0, то формула вернет 2. Во всех других случаях будет возвращен 0. А1 и А2 не должны быть пустыми ячейками.

    Формула =ЕСЛИ(ИЛИ(A1=0;A2=0);0;2) проверяет равенство 0 хотя бы одного значения из А1 и А2.

    Формула =ЕСЛИ(НЕ(A1>0);1;2) эквивалентна формуле =ЕСЛИ(A1<=0;1;2)

    Вместо ИСТИНА или ЛОЖЬ в первом аргументе введено число

    Т.к. значение ЛОЖЬ эквивалентно 0, то формулы =ЕСЛИ(0;»Бюджет превышен»;»ОК!») или (если в ячейке

    A1

    содержится значение 0) =ЕСЛИ(A1;»Бюджет превышен»;»ОК!») вернут

    ОК!

    Если в ячейке

    A1

    находится любое другое число кроме 0, то формула вернет

    Бюджет превышен

    . Такой подход удобен, когда проверяется равенство значения нулю значения ячейки.


    Примечание

    : чтобы убедиться, что логическое значение ЛОЖЬ соответствует 0 введите формулу =—А1=0. В А1 введите ЛОЖЬ. Формула вернет ИСТИНА. Отметим, что логическое значение ЛОЖЬ именно соответствует 0, но не равно 0, т.к. формула  =А1=0 вернет ЛОЖЬ, следовательно логическое значение ЛОЖЬ не равно 0. Железная логика!


    Примечание

    : Двойное отрицание «—» — это просто математическая операция, которая приводит к преобразованию логического выражения в числовое, но не приводит к изменению самого значения. Двойное отрицание можно заменить сложением с 0 или возведением в первую степень: =(А1+0)=0.

    Связь функции ЕСЛИ() с другими функциями использующие условия

    EXCEL содержит также другие функции, которые можно применять для анализа данных с использованием условий. Например, для подсчета количества вхождений чисел в диапазоне ячеек используется функция СЧЁТЕСЛИ() , а для сложения значений, удовлетворяющих определенным условиям, используется функция СУММЕСЛИ() .

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

    Пусть данные находятся в диапазоне

    A6:A11

    (см. файл примера)

    Подсчитаем сумму значений, которые больше 10 с помощью функции СУММЕСЛИ() , записав =СУММЕСЛИ(A6:A11;»>10″) . Аналогичный результат (23) можно получить с помощью

    формулы массива

    =СУММ(ЕСЛИ(A6:A11>10;A6:A11)) (для ввода формулы в ячейку вместо

    ENTER

    нужно нажать

    CTRL+SHIFT+ENTER

    )

    Теперь подсчитаем количество вхождений чисел больше 10 в диапазоне ячеек

    A6:A11

    =СЧЁТЕСЛИ(A6:A11;»>10″) . Аналогичный результат (2) можно получить с помощью

    формулы массива

    =СЧЁТ(ЕСЛИ(A6:A11>10;A6:A11))

    Теперь, когда принцип понятен, с помощью функции ЕСЛИ() можно конструировать и другие формулы с условиями. Например, нахождение минимального значения среди чисел больше 10: =МИН(ЕСЛИ(A6:A11>10;A6:A11))

    Понравилась статья? Поделить с друзьями:
  • Как в excel написать формулу с тремя условиями
  • Как в excel написать формулу с дробью
  • Как в excel написать формулу если это равно этому то
  • Как в excel написать формулу если число больше то
  • Как в excel написать формулу для сравнения