Общая информация о ЕСЛИ (IF)
Функция ЕСЛИ – это одна из самых популярных в Excel функций. В англоязычном Excel, а также в Google Sheets, LibreOffice, OpenOffice, эта функция называется IF. ЕСЛИ (IF) относится к логическим функциям.
Уровень сложности по шкале BRP ADVICE – 2 из 7. Каждая вложенная ЕСЛИ (IF) увеличивает сложность формулы вдвое.
ЕСЛИ (IF) позволяет построить дерево решений, то есть при выполнении условия выполнять одно действие, а при невыполнении – другое. При этом условие должно быть вопросом, имеющим варианты ответа «да / нет» или «верно / неверно» (в терминах Excel, Google Sheets, LibreOffice, OpenOffice это «ИСТИНА / ЛОЖЬ» («TRUE / FALSE»).
Чтобы разобраться c функцией ЕСЛИ (IF), сначала надо разобраться с тем, что такое логические функции.
Что такое логические функции
В Excel, Google Sheets, LibreOffice, OpenOffice и других табличных документах работа логических функций основана на существовании логических параметров. Логических параметров два: первый – ИСТИНА (TRUE), второй – ЛОЖЬ (FALSE).
На основе использования этих логических параметров можно построить дерево решений. В простейшем варианте этого дерева будет задан вопрос, ответом на который может быть ИСТИНА (TRUE) или ЛОЖЬ (FALSE), и дано указание, что делать в каждом из этих двух случаев. Схематически такое дерево решений изображено на рисунке ниже.
Рисунок. Простейшее дерево решений
Логические функции позволяют либо построить такое дерево решений, либо задавать вопрос и получать логический параметр. К первым относятся, например, ЕСЛИ (IF), ЕСЛИОШИБКА (IFERROR). Ко вторым – ЕЧИСЛО (ISNUMBER), И (AND), ИЛИ (OR).
Excel, Google Sheets, LibreOffice, OpenOffice и большинство других программных продуктов позволяет использовать логические параметры ИСТИНА (TRUE) и ЛОЖЬ (FALSE) при выполнении математических операций. Чаще всего, ИСТИНА (TRUE) принимает значение 1, ЛОЖЬ (FALSE) принимает значение 0. Хотя иногда ИСТИНА (TRUE) и ЛОЖЬ (FALSE) принимают другие значения, например, при программировании в VBA ИСТИНА (TRUE) – это -1, а не 1.
Кстати, логические параметры еще называют булевыми в честь английского математика и логика Джорджа Буля.
Функция ЕСЛИ (IF)
Итак, функция ЕСЛИ (IF) позволяет построить дерево решений. У этого дерева решений есть один вопрос на входе и два варианта действий. Вопрос обязательно имеет два варианта ответа: да / нет, верно / неверно или в терминах логических параметров ИСТИНА (TRUE) / ЛОЖЬ (FALSE).
Вопрос и два варианта действий – это и есть три аргумента функции ЕСЛИ (IF).
Первый аргумент функции ЕСЛИ (IF) – логический вопрос. В Excel он называется «лог_выражение». Excel, Google Sheets, LibreOffice, OpenOffice автоматически находят ответ на этот вопрос, и этот ответ должен принять значение ИСТИНА (TRUE) / ЛОЖЬ (FALSE). Что же может дать такой ответ? Самые простые варианты – это классические равенства и неравенства. Например, выражение 12=12 вернет логический параметр ИСТИНА (TRUE), а неравенство 12>40 вернет логический параметр ЛОЖЬ (FALSE).
В логическом вопросе можно использовать равенства (левая и правая часть сравниваются при помощи знака «=»), неравенства (больше – «>», меньше – «<», больше или равно – «>=», меньше или равно «<=»), а также просто не равно – «<>».
Более сложные логические вопросы можно задать с помощью вложенных функций. В результате вычисления таких вложенных функций должен получиться тот самый логический параметр ИСТИНА (TRUE) или ЛОЖЬ (FALSE). К таким функциям относятся, например, ЕЧИСЛО (ISNUMBER), ЕТЕКСТ (ISTEXT), ЕНД (ISNA), И (AND), ИЛИ (OR), в сложных случаях – еще одна ЕСЛИ (IF).
Второй и третий аргумент — это функция ЕСЛИ (IF) должна сделать, когда ответ на вопрос ИСТИНА (TRUE), а когда ЛОЖЬ (FALSE). Функция ЕСЛИ (IF) вычисляет либо только второй аргумент (если ИСТИНА (TRUE)), либо только третий аргумент (если ЛОЖЬ (FALSE)).
Рассмотрим примеры применения функции ЕСЛИ (IF) с одним или несколькими условиями.
Применение ЕСЛИ (IF) с одним условием
Файл-пример №1 вы можете скачать по этой ссылке.
Предположим, в компании установлен план по продажам: каждый менеджер должен продать не менее чем на 1 миллион рублей в месяц. Оклад менеджера по продажам составляет 20 тысяч рублей. При выполнении плана менеджер получает оклад и премию 5% от фактического объема продаж. При невыполнении плана продаж – только оклад.
В конце каждого месяца формируется таблица, содержащая информацию о продажах каждого менеджера. Эта таблица может выглядеть, например, как на рисунке ниже.
Рисунок. Продажи в разрезе менеджеров по продажам за отчетный месяц
При помощи функции ЕСЛИ (IF) эту таблицу можно быстро превратить из простого набора данных о продажах за месяц в отчет, который будет показывать, кто план выполнил, кто нет, и какая будет зарплата у каждого из менеджеров. Такой отчет может выглядеть как на рисунке ниже.
Рисунок. Отчет по результатам работы менеджеров по продажам
Для того чтобы автоматически заполнять столбец «Выполнение плана» и «Зарплата за месяц, руб.» (столбцы E и F соответственно), можно использовать функцию ЕСЛИ (IF).
Пример 1.1 – подстановка текста при помощи ЕСЛИ (IF)
Файл-пример №1 вы можете скачатьпо этой ссылке.
В столбце «Выполнение плана» в ячейке E4 используем вот такую формулу:
=ЕСЛИ(D4>=1000000;»Молодец!»;»План не выполнен:(«)
или для англоязычного Excel, Google Sheets, LibreOffice, OpenOffice:
=IF(D4>=1000000;»Молодец!»;»План не выполнен:(«) .
Кстати, в некоторых версиях Excel, вместо «;» должна использоваться «,».
После этого ячейку можно будет скопировать вниз до конца столбца, и программа в каждой строке напишет, кто молодец, а кто не выполнил план.
Что значат все аргументы ЕСЛИ (IF)?
1. Лог_выражение: D4>=1000000. В нашем примере логический вопрос – это сравнение фактического результата и плана продаж. D4 – это ссылка на ячейку с фактическими продажами этого менеджера. Excel, Google Sheets, LibreOffice, OpenOffice подставляют вместо D4 значение из этой ячейки и проверяют, верно ли указанное неравенство. В результате проверки в формуле получается промежуточный результат, он используется для выбора нужной ветки в дереве решений.
2. Значение_если_истина. На наших схемах это левая ветка дерева решений. В текущем примере значение аргумента – «Молодец!». Этот аргумент показывает, что должна сделать функция ЕСЛИ (IF), когда в результате вычисления первого аргумента получается ИСТИНА (TRUE). В текущем примере необходимо просто написать текст «Молодец!».
Кстати, «Молодец!» у нас написано в кавычках, потому что любой текст внутри формулы должен быть написан в кавычках. Исключением являются только названия функций и именованных диапазонов. В остальных случаях всегда ставьте текст в кавычки.
3. Значение_если_ложь. На наших схемах это правая ветка дерева решений. В текущем примере значение аргумента – «План не выполнен:(«. Этот аргумент показывает, что должна сделать функция ЕСЛИ (IF), когда в результате вычисления первого аргумента получается ЛОЖЬ (FALSE). В текущем примере необходимо просто написать текст «План не выполнен:(».
Здесь мы также указали текст в кавычках, потому что, если не заключать текст внутри формулы в кавычки, возникнет ошибка #ИМЯ? (#NAME?). Исключение – только названия функций и именованных диапазонов.
Что именно делает функция ЕСЛИ (IF) в этом примере?
Во-первых, функция ЕСЛИ (IF) отвечает на логический вопрос (вычисляет первый аргумент). Во-вторых, идет к соответствующей ветке дерева решений. По Александрову П.Ф. получается так:
1. D4>=1000000, следовательно проверяем 1000329>=1000000, выражение верно, значит логический параметр – это ИСТИНА (TRUE).
2. Идем в аргумент Значение_если_истина. Нужно просто подставить текст «Молодец!». Указываем текст в ячейке. Конец расчетов.
Аргумент Значение_если_ложь в этом случае функция ЕСЛИ (IF) игнорирует.
Схематически расчеты выглядят, как на рисунке ниже.
Рисунок. Как работает функция ЕСЛИ (IF), когда логическое выражение возвращает ИСТИНА (TRUE)
По Ильину М.А. получается так:
1. D5>=1000000, следовательно проверяем 848880>=1000000, выражение не верно, значит логический параметр – ЛОЖЬ (FALSE).
2. Идем в аргумент Значение_если_ложь. Нужно просто подставить текст «План не выполнен:(». Указываем текст в ячейке. Конец расчетов.
Аргумент Значение_если_истина в этом случае функция ЕСЛИ (IF) игнорирует.
Схематически расчеты выглядят, как на рисунке ниже.
Рисунок. Как работает функция ЕСЛИ (IF), когда логическое выражение возвращает ЛОЖЬ (FALSE)
А вот этот текст — это ссылка на скачивание примера в Excel 2010-2013. Хотите решить пример онлайн? Оставьте заявку, мы уже работаем над этим.
Как всегда, наши упражнения работают в Excel 2007-2013, а расширенный функционал можно использовать в Excel 2010 и 2013. С его помощью можно начать любое упражнение с начала всего одной кнопкой «Начать заново» на вкладке BRP ADVICE, появляющейся в Excel при открытии наших упражнений. Только не забудьте включить макросы.
Пример 1.2 – вычисление разных формул при помощи ЕСЛИ (IF)
Файл-пример №1 вы можете скачать по этой ссылке.
В столбце «Зарплата за месяц, руб.» в ячейке F4 используем вот такую формулу:
=ЕСЛИ(D4>=1000000;20000+D4*5/100;20000)
или для англоязычного Excel, Google Sheets, LibreOffice, OpenOffice:
=IF(D4>=1000000;20000+D4*5/100;20000) .
Не забывайте, в некоторых версиях Excel, вместо «;» должна использоваться «,».
После этого ячейку можно будет скопировать вниз до конца столбца, и программа в каждой строке напишет зарплату каждого из менеджеров.
Что именно делает функция ЕСЛИ (IF) в этом примере?
Функция ЕСЛИ (IF) отвечает на логический вопрос (вычисляет первый аргумент) и переходит к соответствующей ветке дерева решений. По Александрову П.Ф. получается так:
1. D4>=1000000, следовательно проверяем 1000329>=1000000, выражение верно, значит логический параметр – это ИСТИНА (TRUE).
2. Идем в аргумент Значение_если_истина. Нужно вычислить 20000+D4*5/100 (то есть оклад 20 тысяч и та самая премия 5% от продаж). Получаем 70016, указываем это значение в ячейке. Конец расчетов.
Аргумент Значение_если_ложь в этом случае функция ЕСЛИ (IF) игнорирует.
По Ильину М.А. получается так:
1. D5>=1000000, следовательно проверяем 848880>=1000000, выражение не верно, значит логический параметр – ЛОЖЬ (FALSE).
2. Идем в аргумент Значение_если_ложь. Нужно просто поставить 20000. Указываем число в ячейке. Конец расчетов.
Аргумент Значение_если_истина в этом случае функция ЕСЛИ (IF) игнорирует.
А вот этот текст — это ссылка на скачивание примера в Excel 2010-2013. Хотите решить пример онлайн? Оставьте заявку, мы уже работаем над этим.
Как всегда, наши упражнения работают в Excel 2007-2013, а расширенный функционал можно использовать в Excel 2010 и 2013. С его помощью можно начать любое упражнение с начала всего одной кнопкой «Начать заново» на вкладке BRP ADVICE, появляющейся в Excel при открытии наших упражнений. Только не забудьте включить макросы.
Применение ЕСЛИ (IF) с несколькими условиями
Пример 2 – разные условия в логическом выражении
Файл-пример №2 вы можете скачать по этой ссылке.
В прошлом примере и у менеджеров, и у старших менеджеров был одинаковый план продаж на месяц. Усложним задачу: установим повышенный план старшим менеджерам – 1 миллион 200 тысяч в месяц. Отчет тогда будет выглядеть, как на рисунке ниже.
Рисунок. Отчет по результатам работы менеджеров и старших менеджеров
В этом случае в столбце «Выполнение плана» в ячейке E4 используем вот такую формулу:
=ЕСЛИ(ЕСЛИ(C4=»Старший менеджер»;D4>=1200000;D4>=1000000);»Молодец!»;»План не выполнен:(«)
или для англоязычного Excel, Google Sheets, LibreOffice, OpenOffice:
=IF(IF(C4=»Старший менеджер»;D4>=1200000;D4>=1000000);»Молодец!»;»План не выполнен:(«) .
Не забудьте, в некоторых версиях Excel, вместо «;» должна использоваться «,».
Что именно делает функция ЕСЛИ (IF) в этом примере?
По Александрову П.Ф. получается так:
1. Функция ЕСЛИ (IF) начинает расчет с логического выражения и видит там вложенную функцию ЕСЛИ (IF). Excel, Google Sheets, LibreOffice, OpenOffice сначала считает вложенную функцию.
2. Вложенная функция ЕСЛИ (IF) проверяет логическое выражение: должность менеджера старший менеджер или нет. Александров П.Ф. – это не старший менеджер. Поэтому логическое выражение во вложенной ЕСЛИ (IF) возвращает ЛОЖЬ (FALSE).
3. Вложенная функция ЕСЛИ (IF) переходит к аргументу Значение_если_ложь и сравнивает фактические продажи с планом менеджера по продажам. 1 000 329 больше 1 000 000, поэтому вложенная ЕСЛИ (IF) возвращает логический параметр ИСТИНА (TRUE).
4. Результат вычисления вложенной функции ЕСЛИ (IF) передается в основную функцию. Основная функция ЕСЛИ (IF) видит логический параметр ИСТИНА (TRUE) и переходит к своему (а не к вложенному) аргументу Значение_если_истина. Этот аргумент – просто текст «Молодец!».
Формула с несколькими условиями, то есть с вложенными функциями ЕСЛИ (IF), возвращает в ячейку текст «Молодец!».
Посмотрите построенное дерево решений на схеме ниже.
Рисунок. Дерево решений для функции ЕСЛИ (IF) с несколькими условиями
По Ильину М.А. получается так:
1. Функция ЕСЛИ (IF) начинает расчет с логического выражения и видит там вложенную функцию ЕСЛИ (IF). Excel, Google Sheets, LibreOffice, OpenOffice сначала считает вложенную функцию.
2. Вложенная функция ЕСЛИ (IF) проверяет логическое выражение: должность менеджера старший менеджер или нет. Ильин М.А. – это не старший менеджер. Поэтому логическое выражение во вложенной ЕСЛИ (IF) возвращает ЛОЖЬ (FALSE).
3. Вложенная функция ЕСЛИ (IF) переходит к аргументу Значение_если_ложь и сравнивает фактические продажи с планом менеджера по продажам. 848 880 меньше 1 000 000, поэтому вложенная ЕСЛИ (IF) возвращает логический параметр ЛОЖЬ (FALSE).
4. Результат вычисления вложенной функции ЕСЛИ (IF) передается в основную функцию. Основная функция ЕСЛИ (IF) видит логический параметр ЛОЖЬ (FALSE) и переходит к своему (а не к вложенному) аргументу Значение_если_ложь. Этот аргумент – просто текст «План не выполнен:(».
Формула с несколькими условиями, то есть с вложенными функциями ЕСЛИ (IF), возвращает в ячейку текст «План не выполнен:(».
Посмотрите построенное дерево решений на схеме ниже.
Рисунок. Дерево решений для функции ЕСЛИ (IF) с несколькими условиями
По Незенецеву А.А. получается так:
1. Функция ЕСЛИ (IF) начинает расчет с логического выражения и видит там вложенную функцию ЕСЛИ (IF). Excel, Google Sheets, LibreOffice, OpenOffice сначала считает вложенную функцию.
2. Вложенная функция ЕСЛИ (IF) проверяет логическое выражение: должность менеджера старший менеджер или нет. Незенецев А.А. – это старший менеджер. Поэтому логическое выражение во вложенной ЕСЛИ (IF) возвращает ИСТИНА (TRUE).
3. Вложенная функция ЕСЛИ (IF) переходит к аргументу Значение_если_истина и сравнивает фактические продажи с планом старшего менеджера по продажам. 1 204 346 больше 1 200 000, поэтому вложенная ЕСЛИ (IF) возвращает логический параметр ИСТИНА (TRUE).
4. Результат вычисления вложенной функции ЕСЛИ (IF) передается в основную функцию. Основная функция ЕСЛИ (IF) видит логический параметр ИСТИНА (TRUE) и переходит к своему (а не к вложенному) аргументу Значение_если_истина. Этот аргумент – просто текст «Молодец!».
Формула с несколькими условиями, то есть с вложенными функциями ЕСЛИ (IF), возвращает в ячейку текст «Молодец!».
Посмотрите построенное дерево решений на схеме ниже.
Рисунок. Дерево решений для функции ЕСЛИ (IF) с несколькими условиями
По Соколовой Н.И. получается так:
1. Функция ЕСЛИ (IF) начинает расчет с логического выражения и видит там вложенную функцию ЕСЛИ (IF). Excel, Google Sheets, LibreOffice, OpenOffice сначала считает вложенную функцию.
2. Вложенная функция ЕСЛИ (IF) проверяет логическое выражение: должность менеджера старший менеджер или нет. Соколова Н.И. – это старший менеджер. Поэтому логическое выражение во вложенной ЕСЛИ (IF) возвращает ИСТИНА (TRUE).
3. Вложенная функция ЕСЛИ (IF) переходит к аргументу Значение_если_истина и сравнивает фактические продажи с планом старшего менеджера по продажам. 1 046 625 меньше 1 200 000, поэтому вложенная ЕСЛИ (IF) возвращает логический параметр ЛОЖЬ (FALSE).
4. Результат вычисления вложенной функции ЕСЛИ (IF) передается в основную функцию. Основная функция ЕСЛИ (IF) видит логический параметр ЛОЖЬ (FALSE) и переходит к своему (а не к вложенному) аргументу Значение_если_ложь. Этот аргумент – просто текст «План не выполнен:(».
Формула с несколькими условиями, то есть с вложенными функциями ЕСЛИ (IF), возвращает в ячейку текст «План не выполнен:(».
Посмотрите построенное дерево решений на схеме ниже.
Рисунок. Дерево решений для функции ЕСЛИ (IF) с несколькими условиями
Формула для расчета заработной платы в примере 3
В столбце «Зарплата за месяц, руб.» в ячейке F4 используем вот такую формулу:
=ЕСЛИ(ЕСЛИ(C4=»Старший менеджер»;D4>=1200000;D4>=1000000);20000+D4*5/100;20000)
или для англоязычного Excel, Google Sheets, LibreOffice, OpenOffice:
=IF(IF(C4=»Старший менеджер»;D4>=1200000;D4>=1000000);20000+D4*5/100;20000) .
Не забудьте, в некоторых версиях Excel, вместо «;» должна использоваться «,».
В этом случае функция ЕСЛИ (IF) работает точно так же, как и в ячейке E4.
Пример 4 – разные условия и в логическом выражении, и в ветках дерева решений
Файл-пример №3 вы можете скачатьпо этой ссылке.
Итак, у нас есть менеджеры, есть старшие менеджеры. У старших менеджеров план выше, чем у обычных менеджеров. Для того чтобы такая модель работала, часто необходимо дополнительное стимулирование для старших менеджеров. Например, премия старшего менеджера повышается до 6%. То есть у нас сразу несколько условий:
1. Премия выплачивается только если выполнен план.
2. Если должность старший менеджер, план – 1 миллион 200 тысяч, иначе – 1 миллион.
3. Если должность старший менеджер, премия – 6%, иначе – 5%.
В итоге получается отчет, как на рисунке ниже.
Рисунок. Отчет по результатам работы менеджеров и старших менеджеров
Как решить такую задачу при помощи функции ЕСЛИ (IF)?
В ячейке F4 можно написать такую формулу:
=ЕСЛИ(
ЕСЛИ(C4=»Старший менеджер»;D4>=1200000;D4>=1000000);
20000+D4*ЕСЛИ(C4=»Старший менеджер»;6;5)/100;
20000)
или для англоязычного Excel, Google Sheets, LibreOffice, OpenOffice:
=IF(
IF(C4=»Старший менеджер»;D4>=1200000;D4>=1000000);
20000+D4*IF(C4=»Старший менеджер»;6;5)/100;
20000)
Не забывайте, в некоторых версиях Excel, вместо «;» должна использоваться «,».
Чтобы формулу было проще прочитать и понять, мы разбили ее на несколько строк следующим образом: есть основная функция ЕСЛИ (IF), каждый аргумент этой функции указан в отдельной строке.
На рисунке ниже схематически изображено построенное дерево решений.
Рисунок. Пример дерева решений с несколькими условиями и в логическом выражении, и в других аргументах функции ЕСЛИ (IF)
Частые ошибки при работе с функцией ЕСЛИ (IF)
1. Для функции ЕСЛИ (IF) всегда должен быть указан первый аргумент – логическое выражение и второй аргумент – значение если истина. Третий аргумент необязательный. Пользователи часто забывают указать третий аргумент особенно при работе со сложными формулами, из-за этого в некоторых случаях вместо нужного результата в ячейке появляется логический параметр ЛОЖЬ (FALSE).
2. Сложность формулы очень быстро растет при использовании вложенных ЕСЛИ (IF). Из-за этого очень часто пользователи забывают закрыть скобки вложенных вычислений, не ставят разделитель аргументов («;» или «,»). В зависимости от ошибки формулу в ячейку либо не удается записать, либо она считается неправильно.
3. В сложных формулах с ЕСЛИ (IF) очень тяжело отслеживать правильность расчетов: каждая вложенная функция ЕСЛИ (IF) добавляет в ваше дерево решений один вопрос и минимум две ветки. В среднем человек в уме держит до 7 объектов, получается, что при трех вложенных ЕСЛИ (IF) в уме нужно держать 3 вопроса и 6 веток дерева решений. Контролируемость и надежность формулы стремительно снижается.
Как избежать этих ошибок при работе с функцией ЕСЛИ (IF)? Минимизируйте использование ЕСЛИ (IF) с другими функциями и особенно с вложенными ЕСЛИ (IF). Лучше делайте промежуточные расчеты в соседних ячейках.
Совет: работа со сложными формулами
Часто нам приходится работать со сложными формулами, формулами в которых в одну функцию вложены другие. Как не ошибиться при создании такой формулы? Действуете по следующем алгоритму:
1. Определите конечную цель ваших расчетов: какой результат вы должны получить в итоге.
2. Определите функцию, которая позволяет это сделать.
3. Начинайте создание формулы с этой функции, укажите ее и переходите к работе с аргументами.
4. Если аргумент простой (число, ссылка на ячейку), поставьте его и переходите к следующему аргументу.
5. Если вам необходимо проделать промежуточные вычисления, то определяете конечную цель этих вычислений, функцию и так далее. Обычно, задача промежуточных вычислений – это получить аргумент для основной функции. Помните об этом, так как иногда нужно получить аргумент определенного типа (именно текст, именно число, именно логический параметр или что-то иное).
6. Всегда следите за скобками: как только вы закончили описание функции, закрывайте скобки.
И помните, если формула слишком сложная, лучше сделать промежуточный расчет в соседней ячейке.
Чем дополнить и заменить функцию ЕСЛИ (IF)
Вместо констант в формуле можно использовать именованные диапазоны.
Решение задачи с несколькими условиями можно значительно упростить с помощью использования вложенных функций И (AND), ИЛИ (OR).
Функция ЕСЛИ (IF) иногда может быть заменена на функцию ВПР (VLOOKUP), ГПР (HLOOKUP), ПРОСМОТР(LOOKUP), ЕСЛИОШИБКА (IFERROR), СУММЕСЛИ (SUMIF) или СЧЁТЕСЛИ (COUNTIF).
Быстрые ссылки
Файл-пример №1 «Применение функции ЕСЛИ (IF) с одним условием» вы можете скачать по этой ссылке.
Файл-пример №2 «Применение функции ЕСЛИ (IF) с несколькими условиями» вы можете скачать по этой ссылке.
Файл-пример №3 «Применение функции ЕСЛИ (IF) с несколькими условиями в разных аргументах» вы можете скачать по этой ссылке.
Остались вопросы? Пишите нам в форму обратной связи и записывайтесь на интенсив по Excel или курс по функциям Excel.
Понравилась статья? Узнайте больше раньше других: заходите на нашу страницу в ВКонтакте и подписывайтесь на новости.
Желаем вам успешной работы!
Ваш Виктор Рыбцев
и команда Учебного центра BRP ADVICE.
From The Document Foundation Wiki
- Wiki Home
- Development
- Design
- QA
- Events
- Documentation
- Website
- Localization
- Accessibility
- Marketing
- Diversity
- Wiki Help
- Documentation Home
- Official Publications
- Other Resources
- FAQ
- HowTo
- Macros
- Docs Development
Function name:
IFERROR
Category:
Logical
Summary:
Evaluates one argument and if no error is found, the value of that argument is returned. If an error is found, then a second argument is evaluated, and its value is returned.
Syntax:
IFERROR(Value; Alternative Value)
Returns:
Returns a value whose type depends on the argument selected as the return value.
Arguments:
Value is an expression, or a reference to a cell containing an expression, that is evaluated and returned if no error is found.
Alternative Value is an expression, or a reference to a cell containing an expression, that is evaluated and returned only if an error was found during the evaluation of Value.
- The IFERROR function does not evaluate Otherwise Value if the evaluation of Then Value proceeds without an error. For example, the formula
=IFERROR(23; 1/0)
returns 23. While1/0
might be expected to generate a #DIV0! error, the division is never attempted in this case.
Additional details:
Details specific to IFERROR function
=IFERROR(X; Y)
is semantically equivalent to =IF(ISERROR(X); Y; X)
, except that the former case is more efficient because X is only computed once.
General information about Calc’s logical functions
Note: |
Calc uses the numbers 0 (FALSE) and 1 (TRUE) to represent logical values. For example, enter 1 in a cell that has the default general number format. Then select ▸ on the Menu bar to display the Format Cells dialog, select the Boolean Value option in the Category area of the Numbers tab, and click the OK button. Notice that the number 1 is now displayed as TRUE. To revert to displaying the number 1, repeat the process but select Number instead of Boolean Value.
To enter a logical value into a cell, simply type either TRUE or FALSE (case-insensitive) into the cell. Calc will recognize the logical value, display it in uppercase letters, and change the cell’s format to that appropriate to Boolean values.
Calc functions that produce a logical result return a number, either 0 or 1. In the case of a formula that simply calls such a logical function and is in a cell that has the default general number format, the cell is switched to the Boolean value format and the returned value is displayed as FALSE or TRUE. For example =TRUE()
returns the value 1, which is displayed as TRUE; if you then change the format to a numerical format, it is displayed as the number 1.
Calc functions that test for a logical result always evaluate the expression to be tested and check if it is equal to 0. The value 0 is taken as FALSE and any other value is taken as TRUE. For example, =NOT(0)
returns TRUE and =NOT(57.89)
returns FALSE.
In contrast to Calc, Microsoft Excel has a separate type for logical values — they are not numbers but are sometimes converted to numbers. Take care therefore if you need compatibility.
Examples:
Formula | Description | Returns |
---|---|---|
=IFERROR(2; 5) | Here the first argument contains no error and so the function returns 2. | 2 |
=IFERROR(SQRT(−2); 23) | Here the first argument contains an invalid argument error (Err:502) and so the function returns the value of the second argument. | 23 |
=IFERROR(ASIN(45); 3/0) | Here the first argument contains a #NUM! error and so the function returns the value of the second argument. However, the second argument contains a division by 0 error. | #DIV/0! |
=IFERROR(C8; C9) where cell C8 contains =1/0 and cell C9 contains the text «Error found». | Here the first argument contains a #DIV/0! error and so the function returns the value of the second argument. | «Error found» |
=IFERROR(C8; C9) where cell C8 contains =13 and cell C9 contains the text «Error found». | Here the first argument contains no error and so the function returns its value. | 13 |
AND
FALSE
IF
IFNA
IFS
ISERROR
NOT
OR
SWITCH
TRUE
XOR
ODF standard:
Section 6.15.5, part 2
Equivalent Excel functions:
IFERROR
Блог про LibreOffice
Советы, трюки, хитрости, инструкции, руководства
Страницы
2 октября 2014 г.
LibreOffice Calc: Поиск и возврат значений (функции VLOOKUP и IFERROR)
С Хабра:
«Как известно, знание функции VLOOKUP в MS EXCEL, достаточно чтобы в Москве стать средним аналитиком. Если человек знаком еще и с PIVOT или например знает как убрать дубликаты из списка — все двери в счастливый офисный мир перед ним настежь раскрыты.»
Эта статья является продолжением статьи «Импорт таблицы с сайта». Для диплома мне нужно вычислить ряд показателей. Некоторые из них считаются простым сложением счетов из оборотной ведомости. Но тут две проблемы:
- Счетов очень много;
- Мне нужно проделать это для пяти банков и в динамике за три года, итого 15 раз.
Не буду приводить все свои расчеты, покажу основную суть на небольшом примере.
Постановка задачи
Для расчета мне нужны данные из оборотной ведомости по счетам бухгалтерского учета кредитной организации (пример). Из нее мне нужны только левый столбец с номерами счетов и крайний правый с итоговыми суммами.
Допустим, один из требуемых показателей рассчитывается как сумма счетов: 20210 + 20305 + 30210 + 30233. На деле формула может включать десятки счетов.
Таким образом, мне нужно найти номера этих счетов и узнать сумму на них, а дальше сложить их.
Подготовка данных
Поиск и возврат значения (VLOOKUP)
Итак, чтобы не искать вручную номера счетов и их значения, я воспользовался функцией VLOOKUP. Она выполняет поиск в вертикальном порядке со ссылкой на соседние ячейки справа. Эта функция проверяет, содержится ли определенное значение в первом столбце массива. Функция возвращает значение в той же строке в соседнем столбце. Функцию можно найти в Мастере функций, но я буду вводить её прямо в ячейке.
Синтаксис функции следующий:
=VLOOKUP(Критерий поиска; Массив; Индекс; Порядок сортировки)
Критерий поиска — значение (число, текст или логическое значение), которое надо найти в первом столбце.
Массив — это массив данных, который должен содержать как минимум 2 столбца.
Индекс — номер столбца в массиве, содержащего значения, которые должны быть возвращены. Первый столбец имеет номер 1.
Порядок сортировки — необязательный параметр, который указывает порядок сортировки. Может принимать значение 0 и 1.
В моем случае формула будет иметь следующий вид:
=VLOOKUP(E16;A16:B142;2;0)
В столбце E у меня указаны номера счетов, которые нужно просуммировать для нахождения требуемого показателя. Значения в нём являются критерием поиска. Сам поиск производится в массиве состоящим из столбца А и В. Но поиск идет в столбце А, в котором находятся номера счетов оборотной ведомости.
В качестве индекса у меня указано число 2, это значит, что значения будут браться из второго столбца массива, т.е. из столбца В.
Обработка ошибок (IFERROR)
Проблема решается обертыванием предыдущей формулы в функцию IFERROR, которая проверяет наличие ошибок. В случае их отсутствия она возвращает полученное значения, в противном случае — то значение, которое мы укажем.
=IFERROR(значение; другое значение)
Обертывание выглядит следующим образом:
=IFERROR(VLOOKUP(E16;A16:B142;2;0);0)
Т.е. в случае успеха IFERROR вернет значение, которое найдет VLOOKUP. В случае ошибки вместо #Н/Д будет подставлен 0.
Все секреты Excel-функции ВПР (VLOOKUP) для поиска данных в таблице и извлечения их в другую
Прочитав статью, вы не только узнаете, как найти данные в таблице Excel и извлечь их в другую, но и приёмы, которые можно применять вместе с функцией ВПР.
Батьянов Денис на правах гостевого автора рассказывает в этом посте о том, как найти данные в одной таблице Excel и извлечь их в другую, а также открывает все секреты функции вертикального просмотра.
При работе в Excel очень часто возникает потребность найти данные в одной таблице и извлечь их в другую. Если вы ещё не умеете это делать, то, прочитав статью, вы не только научитесь этому, но и узнаете, при каких условиях вы сможете выжать из системы максимум быстродействия. Рассмотрено большинство весьма эффективных приёмов, которые стоит применять совместно с функцией ВПР.
Даже если вы годами используете функцию ВПР, то с высокой долей вероятности эта статья будет вам полезна и не оставит равнодушным. Я, например, будучи IT-специалистом, а потом и руководителем в IT, пользовался VLOOKUP 15 лет, но разобраться со всеми нюансами довелось только сейчас, когда я на профессиональной основе стал обучать людей Excel.
ВПР — это аббревиатура от вертикального просмотра. Аналогично и VLOOKUP — Vertical LOOKUP. Уже само название функции намекает нам, что она производит поиск в строках таблицы (по вертикали — перебирая строки и фиксируя столбец), а не в столбцах (по горизонтали — перебирая столбцы и фиксируя строку). Надо заметить, что у ВПР есть сестра — гадкий утёнок, которая никогда не станет лебедем, — это функция ГПР (HLOOKUP). ГПР, в противоположность ВПР, производит горизонтальный поиск, однако концепция Excel (да и вообще концепция организации данных) подразумевает, что ваши таблицы имеют небольшое количество столбцов и гораздо большее количество строк. Именно поэтому поиск по строкам нам требуется во много раз чаще, чем по столбцам. Если вы в Excel слишком часто пользуетесь функцией ГПР, то, вполне вероятно, что вы чего-то не поняли в этой жизни.
Синтаксис
Функция ВПР имеет четыре параметра:
=ВПР( ; ; [; ] ), тут:
— искомое значение (редко) или ссылка на ячейку, содержащую искомое значение (подавляющее большинство случаев);
— ссылка на диапазон ячеек (двумерный массив), в ПЕРВОМ (!) столбце которого будет осуществляться поиск значения параметра ;
— номер столбца в диапазоне, из которого будет возвращено значение;
— это очень важный параметр, который отвечает на вопрос, а отсортирован ли по возрастанию первый столбец диапазона . В случае, если массив отсортирован, мы указываем значение ИСТИНА (TRUE) или 1, в противном случае — ЛОЖЬ (FALSE) или 0. В случае, если данный параметр опущен, он по умолчанию становится равным 1.
Держу пари, что многие из тех, кто знает функцию ВПР как облупленную, прочитав описание четвёртого параметра, могут почувствовать себя неуютно, так как они привыкли видеть его в несколько ином виде: обычно там идёт речь о точном соответствии при поиске (ЛОЖЬ или 0) либо же о диапазонном просмотре (ИСТИНА или 1).
Вот сейчас надо напрячься и читать следующий абзац несколько раз, пока не прочувствуете смысл сказанного до конца. Там важно каждое слово. Примеры помогут разобраться.
Как же конкретно работает формула ВПР
- Вид формулы I. Если последний параметр опущен или указан равным 1, то ВПР предполагает, что первый столбец отсортирован по возрастанию, поэтому поиск останавливается на той строке, которая непосредственно предшествует строке, в которой находится значение, превышающее искомое. Если такой строки не найдено, то возвращается последняя строка диапазона.
- Вид формулы II. Если последний параметр указан равным 0, то ВПР последовательно просматривает первый столбец массива и сразу останавливает поиск, когда найдено первое точное соответствие с параметром , в противном случае возвращается код ошибки #Н/Д (#N/A).
Схемы работы формул
ВПР тип I
ВПР тип II
Следствия для формул вида I
- Формулы можно использовать для распределения значений по диапазонам.
- Если первый столбец содержит повторяющиеся значения и правильно отсортирован, то будет возвращена последняя из строк с повторяющимися значениями.
- Если искать значение заведомо большее, чем может содержать первый столбец, то можно легко находить последнюю строку таблицы, что бывает довольно ценно.
- Данный вид вернёт ошибку #Н/Д, только если не найдёт значения меньше или равное искомому.
- Понять, что формула возвращает неправильные значения, в случае если ваш массив не отсортирован, довольно затруднительно.
Следствия для формул вида II
Если искомое значение встречается в первом столбце массива несколько раз, то формула выберет первую строку для последующего извлечения данных.
Производительность работы функции ВПР
Вы добрались до кульминационного места статьи. Казалось бы, ну какая разница, укажу ли я в качестве последнего параметра ноль или единицу? В основном все указывают, конечно же, ноль, так как это довольно практично: не надо заботиться о сортировке первого столбца массива, сразу видно, найдено значение или нет. Но если у вас на листе несколько тысяч формул ВПР (VLOOKUP), то вы заметите, что ВПР вида II работает медленно. При этом обычно все начинают думать:
- мне нужен более мощный компьютер;
- мне нужна более быстрая формула, например, многие знают про ИНДЕКС+ПОИСКПОЗ (INDEX+MATCH), которая якобы быстрее на жалкие 5–10%.
И мало кто думает, что стоит только начать использовать ВПР вида I и обеспечить любыми способами сортировку первого столбца, как скорость работы ВПР возрастёт в 57 раз. Пишу прописью — В ПЯТЬДЕСЯТ СЕМЬ РАЗ! Не на 57%, а на 5 700%. Данный факт я проверил вполне надёжно.
Секрет такой быстрой работы кроется в том, что на отсортированном массиве можно применять чрезвычайно эффективный алгоритм поиска, который носит название бинарного поиска (метод деления пополам, метод дихотомии). Так вот ВПР вида I его применяет, а ВПР вида II ищет без какой-либо оптимизации вообще. То же самое относится и к функции ПОИСКПОЗ (MATCH), которая включает в себя аналогичный параметр, а также и к функции ПРОСМОТР (LOOKUP), которая работает только на отсортированных массивах и включена в Excel ради совместимости с Lotus 1-2-3.
Недостатки формулы
Недостатки ВПР очевидны: во-первых, она ищет только в первом столбце указанного массива, а во-вторых, только справа от данного столбца. А как вы понимаете, вполне может случиться так, что столбец, содержащий необходимую информацию, окажется слева от столбца, в котором мы будем искать. Этого недостатка лишена уже упомянутая связка формул ИНДЕКС+ПОИСКПОЗ (INDEX+MATCH), что делает её наиболее гибким решением по извлечению данных из таблиц в сравнении с ВПР (VLOOKUP).
Некоторые аспекты применения формулы в реальной жизни
Диапазонный поиск
Классическая иллюстрация к диапазонному поиску — задача определения скидки по размеру заказа.
Поиск текстовых строк
Безусловно, ВПР ищет не только числа, но и текст. При этом надо принимать во внимание, что регистр символов формула не различает. Если использовать символы подстановки, то можно организовать нечёткий поиск. Есть два символа подстановки: «?» — заменяет один любой символ в текстовой строке, «*» — заменяет любое количество любых символов.
Борьба с пробелами
Часто поднимается вопрос, как решить проблему лишних пробелов при поиске. Если справочную таблицу ещё можно вычистить от них, то первый параметр формулы ВПР не всегда зависит от вас. Поэтому если риск засорения ячеек лишними пробелами присутствует, то можно применять для очистки функции СЖПРОБЕЛЫ (TRIM).
Разный формат данных
Если первый параметр функции ВПР ссылается на ячейку, которая содержит число, но которое хранится в ячейке в текстовом виде, а первый столбец массива содержит числа в правильном формате, то поиск будет неудачным. Возможна и обратная ситуация. Проблема легко решается переводом параметра 1 в необходимый формат:
=ВПР(−−D7; Продукты!$A$2:$C$5; 3; 0) — если D7 содержит текст, а таблица — числа;
=ВПР(D7 & «»); Продукты!$A$2:$C$5; 3; 0) — и наоборот.
Кстати, перевести текст в число можно сразу несколькими способами, выбирайте:
- Двойное отрицание —D7.
- Умножение на единицу D7*1.
- Сложение с нулём D7+0.
- Возведение в первую степень D7^1.
Перевод числа в текст производится через сцепку с пустой строкой, которая заставляет Excel преобразовать тип данных.
Как подавить выдачу #Н/Д
Это очень удобно делать при помощи функции ЕСЛИОШИБКА (IFERROR).
Например: =ЕСЛИОШИБКА( ВПР(D7; Продукты!$A$2:$C$5; 3; 0); «»).
Если ВПР вернёт код ошибки #Н/Д, то ЕСЛИОШИБКА его перехватит и подставит параметр 2 (в данном случае пустая строка), а если ошибки не произошло, то эта функция сделает вид, что её вообще нет, а есть только ВПР, вернувший нормальный результат.
Массив
Часто забывают ссылку массива сделать абсолютной, и при протягивании массив «плывёт». Помните, что вместо A2:C5 следует использовать $A$2:$C$5.
Хорошей идеей является размещение справочного массива на отдельном листе рабочей книги. Не путается под ногами, да и сохраннее будет.
Ещё более хорошей идеей будет объявление этого массива в виде именованного диапазона.
Многие пользователи при указании массива используют конструкцию вида A:C, указывая столбцы целиком. Этот подход имеет право на существование, так как вы избавлены от необходимости отслеживать тот факт, что ваш массив включает все необходимые строки. Если вы добавите строки на лист с первоначальным массивом, то диапазон, указанный как A:C, не придётся корректировать. Безусловно, эта синтаксическая конструкция заставляет Excel проводить несколько большую работу, чем при точном указании диапазона, но данными накладными расходами можно пренебречь. Речь идёт о сотых долях секунды.
Ну и на грани гениальности — оформить массив в виде умной таблицы.
Использование функции СТОЛБЕЦ для указания колонки извлечения
Если таблица, в которую вы извлекаете данные при помощи ВПР, имеет ту же самую структуру, что и справочная таблица, но просто содержит меньшее количество строк, то в ВПР можно использовать функцию СТОЛБЕЦ() для автоматического расчёта номеров извлекаемых столбцов. При этом все ВПР-формулы будут одинаковыми (с поправкой на первый параметр, который меняется автоматически)! Обратите внимание, что у первого параметра координата столбца абсолютная.
Создание составного ключа через &»|»&
Если возникает необходимость искать по нескольким столбцам одновременно, то необходимо делать составной ключ для поиска. Если бы возвращаемое значение было не текстовым (как тут в случае с полем «Код»), а числовым, то для этого подошла бы более удобная формула СУММЕСЛИМН (SUMIFS) и составной ключ столбца не потребовался бы вовсе.
Это моя первая статья для Лайфхакера. Если вам понравилось, то приглашаю вас посетить мой сайт, а также с удовольствием прочту в комментариях о ваших секретах использования функции ВПР и ей подобных. Спасибо. 🙂
Блог про LibreOffice
Советы, трюки, хитрости, инструкции, руководства
Страницы
2 октября 2014 г.
LibreOffice Calc: Поиск и возврат значений (функции VLOOKUP и IFERROR)
С Хабра:
«Как известно, знание функции VLOOKUP в MS EXCEL, достаточно чтобы в Москве стать средним аналитиком. Если человек знаком еще и с PIVOT или например знает как убрать дубликаты из списка — все двери в счастливый офисный мир перед ним настежь раскрыты.»
Эта статья является продолжением статьи «Импорт таблицы с сайта». Для диплома мне нужно вычислить ряд показателей. Некоторые из них считаются простым сложением счетов из оборотной ведомости. Но тут две проблемы:
- Счетов очень много;
- Мне нужно проделать это для пяти банков и в динамике за три года, итого 15 раз.
Не буду приводить все свои расчеты, покажу основную суть на небольшом примере.
Постановка задачи
Для расчета мне нужны данные из оборотной ведомости по счетам бухгалтерского учета кредитной организации (пример). Из нее мне нужны только левый столбец с номерами счетов и крайний правый с итоговыми суммами.
Допустим, один из требуемых показателей рассчитывается как сумма счетов: 20210 + 20305 + 30210 + 30233. На деле формула может включать десятки счетов.
Таким образом, мне нужно найти номера этих счетов и узнать сумму на них, а дальше сложить их.
Подготовка данных
Поиск и возврат значения (VLOOKUP)
Итак, чтобы не искать вручную номера счетов и их значения, я воспользовался функцией VLOOKUP. Она выполняет поиск в вертикальном порядке со ссылкой на соседние ячейки справа. Эта функция проверяет, содержится ли определенное значение в первом столбце массива. Функция возвращает значение в той же строке в соседнем столбце. Функцию можно найти в Мастере функций, но я буду вводить её прямо в ячейке.
Синтаксис функции следующий:
=VLOOKUP(Критерий поиска; Массив; Индекс; Порядок сортировки)
Критерий поиска — значение (число, текст или логическое значение), которое надо найти в первом столбце.
Массив — это массив данных, который должен содержать как минимум 2 столбца.
Индекс — номер столбца в массиве, содержащего значения, которые должны быть возвращены. Первый столбец имеет номер 1.
Порядок сортировки — необязательный параметр, который указывает порядок сортировки. Может принимать значение 0 и 1.
В моем случае формула будет иметь следующий вид:
=VLOOKUP(E16;A16:B142;2;0)
В столбце E у меня указаны номера счетов, которые нужно просуммировать для нахождения требуемого показателя. Значения в нём являются критерием поиска. Сам поиск производится в массиве состоящим из столбца А и В. Но поиск идет в столбце А, в котором находятся номера счетов оборотной ведомости.
В качестве индекса у меня указано число 2, это значит, что значения будут браться из второго столбца массива, т.е. из столбца В.
Обработка ошибок (IFERROR)
Проблема решается обертыванием предыдущей формулы в функцию IFERROR, которая проверяет наличие ошибок. В случае их отсутствия она возвращает полученное значения, в противном случае — то значение, которое мы укажем.
=IFERROR(значение; другое значение)
Обертывание выглядит следующим образом:
=IFERROR(VLOOKUP(E16;A16:B142;2;0);0)
Т.е. в случае успеха IFERROR вернет значение, которое найдет VLOOKUP. В случае ошибки вместо #Н/Д будет подставлен 0.
ВПР (VLOOKUP)
Производит поиск по первому столбцу диапазона и возвращает значение из найденной ячейки.
Примеры использования
ВПР(10003; A2:B26; 2; ЛОЖЬ)
Синтаксис
ВПР(запрос; диапазон; индекс; [отсортировано])
запрос – критерий, по которому выполняется поиск ( например, 42 , » кошка» или I24 ).
диапазон – диапазон, в первом столбце которого будет производиться поиск по запросу .
индекс – номер столбца (от начала диапазона ), из которого нужно взять искомое значение.
- Если индекс не попадает в интервал от 1 до числа столбцов в диапазоне , возвращается ошибка #ЗНАЧЕН! .
отсортировано – по умолчанию [ ИСТИНА ]. Указывает, отсортированы ли данные в столбце, в котором производится поиск (первом столбце из указанного диапазона). Как правило, рекомендуемое значение – ЛОЖЬ.
Если для параметра отсортировано указать значение ЛОЖЬ (рекомендуется), возвращается только точное совпадение. Если таких совпадений несколько, возвращается значение для первого из них. Если точных совпадений нет, возвращается ошибка #Н/Д .
Если для параметра отсортировано не выбрано значение или выбрано ИСТИНА , возвращается значение, ближайшее к запрошенному (меньшее либо равное). Если все значения в столбце поиска больше указанного, возвращается ошибка #Н/Д .
Примечания
Если для параметра отсортировано не выбрано значение или выбрано ИСТИНА , а первый столбец диапазона не отсортирован, функция может вернуть неверное значение. Если результаты ВПР вызывают сомнение, убедитесь, что для последнего параметра указано значение ЛОЖЬ. Такая конфигурация подходит для большинства случаев. Если же данные в столбце отсортированы и вы хотите оптимизировать поиск, укажите значение ИСТИНА.
При поиске чисел или дат убедитесь, что первый столбец в диапазоне не отсортирован по текстовым значениям. К примеру, правильно отсортированные числа должны располагаться в порядке (1; 2; 10; 100). Если их отсортировать как текст, порядок будет иным: (1; 10; 100; 2). При неверном типе сортировки функция может вернуть неправильное значение.
Запросы на основе регулярных выражений НЕ поддерживаются. В этих случаях нужно использовать функцию QUERY .
ВПР работает быстрее, если данные в диапазоне отсортированы и для параметра отсортировано указано значение ИСТИНА .
Также для поиска можно использовать шаблоны с подстановочными знаками. Знаки «?» и «*» подставляются в запрос . При этом знак вопроса обозначает один символ, а звездочка – набор символов. Если вы хотите найти вопросительный знак или звездочку в тексте, введите перед искомым символом тильду (
), чтобы указать, что это не подстановочный знак. А если нужно найти тильду, введите ещё одну.
Похожие функции
QUERY : Выполняет запросы на базе языка запросов API визуализации Google.
ГПР : Производит поиск по первой строке диапазона и возвращает значение из найденной ячейки.
Примеры
ВПР ищет в первом столбце номер студента и возвращает соответствующую оценку.
ВПР ищет в первом столбце приблизительное значение дохода (параметр отсортировано имеет значение ИСТИНА ) и возвращает соответствующую ему ставку налога.
Если по запросу найдено несколько равных значений, ВПР возвращает первое из них.
ВПР (функция ВПР)
Совет: Попробуйте использовать новую функцию кслукуп — улучшенную версию функции ВПР, которая работает в любом направлении и возвращает точные совпадения по умолчанию, упрощая и удобную в использовании, чем его предшественник.
ФУНКЦИЯ ВПР используется, если нужно найти элементы в таблице или диапазоне по строкам. Например, можно найти цену на автомобильную часть по номеру детали или получить имя сотрудника на основе его кода сотрудника.
Совет: Чтобы получить дополнительную справку о функции ВПР, просмотрите эти видео с YouTube от экспертов сообщества Excel!
Самая простая функция ВПР означает следующее:
= ВПР (необходимые условия для поиска, номер столбца в диапазоне, содержащий возвращаемое значение, возвращаемое приближенное или точное соответствие — обозначено как 1/истина или 0/ложь).
Совет: Секрет функции ВПР состоит в организации данных таким образом, чтобы искомое значение (Фрукт) отображалось слева от возвращаемого значения, которое нужно найти (Количество).
Используйте функцию ВПР для поиска значения в таблице.
ВПР(искомое_значение, таблица, номер_столбца, [интервальный_просмотр])
= ВПР (A2; A10: C20; 2; ИСТИНА)
= ВПР (a2; сведения о клиенте)! А:Ф, 3, ЛОЖЬ)
Значение для поиска. Значение, которое вы хотите найти, должно находиться в первом столбце диапазона ячеек, указанного в аргументе table_array .
Например, если Таблица-массив охватывает ячейки B2: D7, то lookup_value должен находиться в столбце B.
Искомое_значение может являться значением или ссылкой на ячейку.
Диапазон ячеек, в котором будет выполнен поиск искомого_значения и возвращаемого значения с помощью функции ВПР. Вы можете использовать именованный диапазон или таблицу, а вместо ссылок на ячейки можно использовать имена в аргументе.
Первый столбец в диапазоне ячеек должен содержать lookup_value. Диапазон ячеек также должен содержать возвращаемое значение, которое нужно найти.
Номер столбца (начиная с 1 для самого левого столбца table_array), содержащего возвращаемое значение.
Логическое значение, определяющее, какое совпадение должна найти функция ВПР, — приблизительное или точное.
Приближенное соответствие: 1/истина предполагает, что первый столбец в таблице отсортирован либо в числовом формате, либо в алфавитном порядке, а затем будет искать ближайшее значение. Это способ по умолчанию, если не указан другой. Например, = ВПР (90; a1: B100; 2; истина).
Точное совпадение: 0/ложь осуществляет поиск точного значения в первом столбце. Например, = ВПР («Смит»; a1: B100; 2; ложь).
Начало работы
Для построения синтаксиса функции ВПР вам потребуется следующая информация:
Значение, которое вам нужно найти, то есть искомое значение.
Диапазон, в котором находится искомое значение. Помните, что для правильной работы функции ВПР искомое значение всегда должно находиться в первом столбце диапазона. Например, если искомое значение находится в ячейке C2, диапазон должен начинаться с C.
Номер столбца в диапазоне, содержащий возвращаемое значение. Например, если в качестве диапазона задано значение B2: D11, число B должно быть первым столбцом, а в качестве второго — «C» и т. д.
При желании вы можете указать слово ИСТИНА, если вам достаточно приблизительного совпадения, или слово ЛОЖЬ, если вам требуется точное совпадение возвращаемого значения. Если вы ничего не указываете, по умолчанию всегда подразумевается вариант ИСТИНА, то есть приблизительное совпадение.
Теперь объедините все перечисленное выше аргументы следующим образом:
= ВПР (искомое значение; диапазон с искомым значением; номер столбца в диапазоне с возвращаемым значением, приближенное соответствие (истина) или точное совпадение (ложь)).
Примеры
Вот несколько примеров использования функции ВПР.
Пример 1
Пример 2
Пример 3
Пример 4
Пример 5
Вы можете использовать функцию ВПР для объединения нескольких таблиц в одну, если одна из них имеет общие поля. Это может быть особенно удобно, если вам нужно предоставить доступ к книге пользователям более ранних версий Excel, которые не поддерживают функции работы с данными с несколькими таблицами в качестве источников данных — путем объединения источников в одну таблицу и изменения источника данных компонента данных на новый. Таблица, функция данных может использоваться в более ранних версиях Excel (при условии, что сама функция данных поддерживается в более ранней версии).
Здесь в столбцах A-F и H есть значения или формулы, которые используют только значения на листе, а остальные столбцы используют функцию ВПР и значения столбца A (клиентский код) и столбец B (юрист) для получения данных из других таблиц.
Скопируйте таблицу с общими полями на новый лист и присвойте ей имя.
Чтобы открыть диалоговое окно Управление связями, нажмите кнопку данные > работа с данными > связей .
Для каждой из перечисленных связей обратите внимание на следующее:
Поле, связывающее таблицы (в диалоговом окне отображаются в круглых скобках). Это lookup_value формулы функции ВПР.
Имя связанной таблицы подстановки. Это table_array формулы функции ВПР.
Поле (столбец) в связанной таблице подстановки с данными, которые вы хотите добавить в новый столбец. Эти сведения не отображаются в диалоговом окне Управление связями. чтобы узнать, какое поле вы хотите извлечь, вам потребуется ознакомиться со связанной таблицей подстановки. Вы хотите отметить номер столбца (A = 1) – это col_index_num в формуле.
Чтобы добавить поле в новую таблицу, введите формулу ВПР в первом пустом столбце с помощью сведений, собранных в действии 3.
В нашем примере столбец G использует юрист ( lookup_value) для получения данных о тарифных курсах из четвертого столбца (col_index_num = 4) из таблицы судебные тблатторнэйс ( table_array) с формулой = ВПР ([@Attorney], tbl_Attorneys, 4, ложь).
В формуле также могут использоваться ссылки на ячейки и ссылки на диапазоны. В нашем примере это было бы = ВПР (a2; «Юристы»! А:Д, 4, ложь).
Продолжайте добавлять поля, пока не будут созданы все нужные поля. Если вы пытаетесь подготовить книгу с функциями данных, которые используют несколько таблиц, измените источник данных функции данных в новой таблице.
Содержание
- Не работает OpenOffice
- unixforum.org
- Не работает openoffice (Невозможно запустить приложение. Язык пользовательского интерфейса не)
- Не работает openoffice
- Re: Не работает openoffice
- Re: Не работает openoffice
- Re: Не работает openoffice
- Re: Не работает openoffice
- OpenOffice не запускается — Вокруг-Дом — 2021
- Table of Contents:
- Недостаточно памяти
- Шаг 1
- Шаг 2
- Шаг 3
- Конфликт программного обеспечения
- Тестирование на конфликт антивирусного программного обеспечения
- Шаг 1
- Шаг 2
- Шаг 3
- Разблокировка OpenOffice
- Шаг 1
- Шаг 2
- Вирус или вредоносная инфекция
- Коррумпированный профиль пользователя
- Неисправное обновление или установка
- Как устранить неполадки компьютера, который не запускается
- Мой DVD-привод не запускается автоматически
- Мой компьютер не запускается и издает звуковой сигнал
- Word не запускается (Октябрь 2021).
- Возможные ошибки в OpenOffice
- Распространенные ошибки при работе в OpenOffice: причины и способы устранения
- Общая ошибка ввода – вывода
- Невозможно записать файл
- Ошибка при сохранении документа – доступ запрещен
- Ошибка нет пары
- Отсутствует оператор
- Отсутствует переменная
- Циклическая ссылка
Не работает OpenOffice
При попытке запустить файл OpenOffice или LibreOffice ничего не происходит и программа не открывается.
Open Office и Libre Office это бесплатные офисные программы, аналоги программы Microsoft Office. В их состав входит:
Open Office и Libre Office
Платный вариант
Microsoft Office
Редактор текстов (Writer)
Microsoft Word Редактор таблиц (Calc) Microsoft Excel Графический редактор (Draw), Программа для разработки слайд-шоу(Impress) Microsoft Power Point Программа для управления базами данных.(Base) Microsoft Access Редактор формул (Math)
Скачать бесплатную офисную программу можно на официальном сайте: www.openoffice.org/ru/download/ и https://ru.libreoffice.org/download
Как решить проблему с запуском ОпенОфис:
Самая частая проблема с запуском это зависание процессов soffice.exe и soffice.bin
Проверяем так ли это:
Щелкаем правой кнопкой мыши на панели задач – ‘Запустить диспетчер задач’ или запускаем напрямую Выполнить (Найти) taskmgr.exe.
Переходим на вкладку “Процессы”:
Видим множество запущенных процессов soffice.exe и soffice.bin. Закрываем их все выбрав процесс и нажав кнопку “Завершить процесс”. Будьте аккуратны и не закройте какой-нибудь другой нужный процесс. После закрытия всех процессов программа OpenOffice должна запускаться.
Если не получилось, возможна необходима проверка на вирусы
Для проверки и лечения вирусов используйте утилиты (к примеру Cureit от Dr WEB или Kaspersky Virus Removal Tool от лаборатории Касперского). Запуск утилит лучше осуществлять с загрузочной флешки или диска.
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
Не работает openoffice (Невозможно запустить приложение. Язык пользовательского интерфейса не)
Модератор: /dev/random
Не работает openoffice
Сообщение _malic » 03.07.2009 16:33
Re: Не работает openoffice
Сообщение _malic » 01.11.2009 18:16
Прошло полгода и наступил на те же грабли .
Все тоже самое только версии офиса другие .
Переустановка не помогает. Работает только если установить в ручную Инфра сборку в домашнюю директорию и оттуда запускать бинарик офиса. Гугл молчит. Я в шоке .
Хелп ми .
ps
В прошлый раз ничего умнее полной переустановки не придумал. Решения не нашел.
Re: Не работает openoffice
Сообщение Bizdelnick » 01.11.2009 18:30
/.ooo3 в такой же ситуации помогло. Тогда оно после обновления началось.
в консол и вку́пе (с чем-либо) в общем в ообще |
в течени е (часа) нович ок нюанс п о умолчанию |
приемл емо пробле ма проб овать тра фик |
Re: Не работает openoffice
Сообщение BIgAndy » 01.11.2009 18:40
Re: Не работает openoffice
Сообщение _malic » 01.11.2009 18:57
Ничего не обновлял. Ошибка проявляется после некорректного закрытия офиса.
В терминал ругается мало .
/.ooo3 в такой же ситуации помогло.
У меня если снести, то начинает ругаться на
Источник
OpenOffice не запускается — Вокруг-Дом — 2021
Table of Contents:
Когда OpenOffice не запускается, есть несколько возможных причин. В некоторых случаях проблема может быть связана с вашим компьютером, например, из-за нехватки памяти или антивирусного программного обеспечения, блокирующего OpenOffice. Иногда причиной может быть поврежденный профиль OpenOffice или неудачное обновление.
Недостаточно памяти
В то время как любой современный компьютер может комфортно запускать OpenOffice в большинстве условий, многозадачность с ресурсоемкими программами может быть причиной сбоя при запуске OpenOffice. Веб-браузеры с большим количеством интерактивного контента, графические редакторы, медиаплееры и онлайн-игры могут занимать значительные объемы памяти. В этих случаях в Windows также может появиться сообщение о том, что у вас недостаточно памяти для запуска OpenOffice.
Шаг 1
Шаг 2
После запуска компьютера закройте все ненужные программы. Это включает в себя приложения, работающие в системном трее.
Шаг 3
Конфликт программного обеспечения
Программы, конфликтующие с OpenOffice, могут иногда вызывать сбой запуска OpenOffice. Наиболее распространенным типом конфликта программного обеспечения является антивирусная программа или программа брандмауэра, блокирующая доступ к OpenOffice, обычно в результате предполагаемой подозрительной онлайн-активности OpenOffice.
Тестирование на конфликт антивирусного программного обеспечения
Шаг 1
Отключите компьютер от Интернета.
Шаг 2
Выключите антивирусное программное обеспечение.
Шаг 3
Попробуйте запустить OpenOffice. Если OpenOffice запускается без проблем, значит, ваше антивирусное программное обеспечение блокирует OpenOffice.
Разблокировка OpenOffice
Шаг 1
Перезапустите антивирусное программное обеспечение.
Шаг 2
Создайте исключение в вашем программном обеспечении безопасности для OpenOffice. Ниже приведены некоторые ссылки на эту процедуру для нескольких популярных антивирусных программ.
Вирус или вредоносная инфекция
Вирус или вредоносное ПО может быть причиной того, что OpenOffice не открывается, особенно если вы заметили, что другие программы также не запускаются. Если вы подозреваете вирусную или вредоносную инфекцию, запустите антивирусную проверку с помощью продукта, подобного Конфликт программного обеспечения раздел, а также инструмент для защиты от вредоносных программ, таких как Malwarebytes, Spybot и SuperAntiSpyware. Если при сканировании обнаруживаются какие-либо инфекции, поместите их в карантин или удалите и перезагрузите компьютер; затем попробуйте запустить OpenOffice.
Коррумпированный профиль пользователя
Поврежденные профили пользователей являются еще одним распространенным фактором, когда OpenOffice не запускается. Каждый раз, когда вы используете OpenOffice, создается профиль, содержащий ваши предустановки, настройки и все установленные расширения. Когда этот профиль поврежден, OpenOffice не может загрузить его правильно и, таким образом, вылетает, прежде чем он даже запустится. Единственное решение этой проблемы — создать новый профиль.
кредит: Изображение предоставлено Microsoft.
Нажмите Окна-X и выберите Проводник из меню опытного пользователя.
кредит: Изображение предоставлено Microsoft.
Перейдите в следующую папку:
C: Users YourWindowsUsername AppData Roaming OpenOffice 4
кредит: Изображение предоставлено Microsoft.
Щелкните правой кнопкой мыши пользователь папку и выберите удалять.
Неисправное обновление или установка
Если OpenOffice перестал работать после недавнего обновления или переустановки, возможно, проблема связана с ошибкой, возникшей в процессе установки или обновления. Если обновление или установка не завершены должным образом, неполный или поврежденный код может легко вызвать сбой OpenOffice при попытке его загрузить. В этих случаях удаление, а затем переустановка OpenOffice, как правило, является единственным решением.
Как устранить неполадки компьютера, который не запускается
Компьютер, который не запускается, может вызывать тревогу и приводить в бешенство, особенно если вы находитесь в крайнем сроке или вы не выполняете резервное копирование всех своих данных (как мы все склонны .
Мой DVD-привод не запускается автоматически
Мой компьютер не запускается и издает звуковой сигнал
Обычно плохо, когда ваш компьютер не запускается; часто хуже, когда оно не начинается и начинает подавать звуковой сигнал. Компьютер, который не запускается и делает .
Word не запускается (Октябрь 2021).
Источник
Возможные ошибки в OpenOffice
Что представляет собой общая ошибка ввода вывода в OpenOffice, и как ее исправить? С этим вопросом сталкиваются пользователи, кто впервые испытал определенные проблемы, при работе с этим вариантом программного обеспечения. На практике речь идет про аппаратный сбой, вызванный той или иной неполадкой в работе системы. Так как столкнуться с этой бедой может каждый, но далеко не все знают, как справляться в этой ситуации, здесь предстоит наглядно разобрать все наиболее важные моменты.
Распространенные ошибки при работе в OpenOffice: причины и способы устранения
Перед тем как углубляться в подробности, предварительно предстоит обратить внимание на общие вопросы, которые могут возникать у юзеров при работе с этим программным обеспечением. На практике, чаще всего появляются следующие моменты, в которых не так просто разобраться:
- Общая ошибка ввода или вывода значений в приложении.
- Невозможно записать файл на жесткий диск или другой носитель.
- Запрет доступа для сохранения документа в память устройства.
- Сбой, при отсутствии корректной и актуальной пары.
- Отсутствует оператор, и как следствие подключение.
- Нет переменной и корректного значения для расчета.
- Циклическая или неправильно составленная ссылка на ресурс.
В настоящее время, это довольно распространенные варианты ошибок, а также соответствующие вопросы, с которыми часто сталкиваются неопытные пользователи, кто еще не успел освоиться и привыкнуть к работе с этим современным и многофункциональным программным обеспечением.
Важно! Не стоит забывать о том, что здесь были представлены лишь простейшие неполадки в работе приложения, которые можно устранить самостоятельно, если четко и последовательно выполнять конкретные действия.
Общая ошибка ввода – вывода
Это достаточно распространенный аппаратный сбой, который символизирует о том, что файл был поврежден вследствие его повреждения или заражения вредоносным программным обеспечением. В данном случае вы можете попытаться запустить саму утилиту, и при помощи ее инструментов открыть этот файл, однако результат не гарантирован. В остальном, такие ошибки не подлежат исправлению, если только у вас не получится вылечить каталог при помощи антивирусной утилиты, если он в действительности оказался пораженным вирусом.
Невозможно записать файл
С такой ошибкой приходится сталкиваться в том случае, когда пользователь задает неверное или недопустимое имя для файла, которое не может быть ему присвоено системой по объективным причинам. В данном случае, вы можете корректно переименовать название, либо поменять формат сохраняемого объекта. Как правило, этих манипуляций вполне достаточно, чтобы впоследствии прекратилось появление этого аппаратного сбоя, выдаваемого программным обеспечением OpenOffice при попытке записать файл на носитель.
Ошибка при сохранении документа – доступ запрещен
Такой сбой появляется в ситуации, когда у вашей учетной записи недостаточно прав для сохранения документа в том или ином пространстве жесткого диска. Имеется вероятность, что администратор ограничил места на устройстве, к которым пользователь имеет прямой доступ. Именно поэтому, чтобы впоследствии не происходил аппаратный сбой, предстоит сохранять документ там, где вы можете это сделать. Иными словами, в утилите необходимо прописать корректный путь для записи.
Ошибка нет пары
В данном случае речь идет про аппаратную ошибку при вводе значений. Не стоит забывать о том, что у некоторых знаков в обязательном порядке должна быть пара, в противном случае система распознает сбой, о чем незамедлительно вас уведомит. Именно поэтому, для устранения проблемы, необходимо лишь проверить корректность указанных значений, присутствует вероятность, что вы где-то упустили скобку, либо иной парный знак, чего делать нельзя, иначе теряется смысл, а непосредственный расчет становится невозможным.
Отсутствует оператор
Здесь речь идет о моментах, когда пользователь упускает определенный важный знак при построении математического выражения. Иными словами, если вы построили алгоритм «=2(1+3)», то система автоматически выдаст вам уведомление, что отсутствует оператор, или простым языком вспомогательный знак при построении выражения. Здесь также необходимо проверить корректность ввода всех символов, чтобы впоследствии исключить возможность повторного проявления ошибки. В данном случае на указанном примере должно измениться следующее: «=2*(1+3)». Только в этой ситуации система распознает и примет параметры.
Отсутствует переменная
В данном случае речь идет про символ, который по какой-либо причине пропустил пользователь в момент построения выражения. Иными словами, два знака не могут идти друг за другом, так как теряется смысл математического построения, о чем и уведомляет вас утилита. Рассматривая на примере, можно выделить такой момент, как «“=2*+3». Разумеется, такой ввод данных можно назвать некорректным, а программа в свою очередь уведомляет вас об этом, ссылаясь на то, что, по всей видимости, вы пропустили значение, либо по ошибке поставили два знака одновременно.
Циклическая ссылка
У этой ошибки имеется внутренний код 522, что свидетельствует об отсутствии цикла. Иными словами, формула начинает ссылаться на себя, и говорить о том, что не были заданы необходимые параметры. Чтобы разрешить этот аппаратный сбой, вам потребуется перейти в раздел Сервис, выбрать параметры, и после применить корректные значения. Это позволит впоследствии не допустить появления подобной помарки и соответствующих трудностей при последующем построении. Следует обязательно сохранить все внесенные изменения.
Важно! Все ошибки имеют определенный внутренний код, используя который вы сможете без особых затруднений найти подробное описание, а кроме того методики разрешения возникших проблем.
При работе с таким программным обеспечением как Опен Офис, могут возникать различные трудности, которые нередко отображаются в виде ошибок во всплывающем окне. На практике, не стоит паниковать раньше времени, так как к ним очень часто приводят неправильные действия пользователя. На практике, все что здесь требуется, это найти соответствующее описание проблемы. А после руководствуясь этими моментами внести определенные изменения, что с высокой долей вероятности поможет при разрешении проблемы.
Источник
Автор leonidlucko, 29 апреля 2019, 13:08
0 Пользователи и 1 гость просматривают эту тему.
Здравствуйте, уважаемые форумчане! Я учусь в 8 классе и при выполнении задания по информатике у меня появились трудности, помогите пожалуйста!
Задание: Ученики перед поступлением в гимназию сдают математику, русский и английский языки. Проходной балл – 12. По математике для поступления нужно получить не менее 4 баллов. Составить отчет о поступлении. Исходные данные см вложение.
Когда я посчитал в отдельном столбце сумму баллов и принялся составлять отчёт о поступлении, в мастере функций произошла ошибка 508 (см вложение). Покурив мануалы, я узнал что эта ошибка появляется когда отсутствует скобка: например, есть закрывающие скобки, но нет открывающих скобок. Но проверив скобки, я понял что всё на месте! Помогите, пожалуйста, Д/з надо срочно сдать, но эта ошибка всё портит!
Слова «Поступил» и «Не поступил» в формуле должны быть в кавычках.
Ну, и решение нужно додумать: те, кто набрал больше 12 баллов, не попадут в гимназию, бедняжки; а те, кто получил пятёрки по русскому и английскому, но двойку по математике, прекрасно пройдут.
Цитата: mikekaganski от 29 апреля 2019, 13:18
Ну, и решение нужно додумать: те, кто набрал больше 12 баллов, не попадут в гимназию, бедняжки; а те, кто получил пятёрки по русскому и английскому, но двойку по математике, прекрасно пройдут.
Спасибо вы правы, когда я составлял формулу я об этом тоже думал, но решил попробовать хотя бы так. В итоге моя формула выглядит так: =ЕСЛИ(E3<12;»не поступил»;ЕСЛИ(B3>=4;»поступил»;»не поступил»)) В общем, Иванов — горе-математик не поступил!
Очхор.
Это можно упростить:
=ЕСЛИ(И(E3>=12;B3>=4);"поступил";"не поступил")
- Форум поддержки пользователей LibreOffice, Apache OpenOffice
-
►
Главная категория -
►
Calc -
►
Проблема с логической функцией «ЕСЛИ». (Ошибка: 508)
Содержание
- xlsxwriter и LibreOffice не показывает результат формулы
- 1 ответов
- Коды ошибок в LibreOffice Calc
- Libreoffice Writer пропадают формулы
- Лучи гнева.
- LibreOffice: страшный сон бухгалтера
- Введение
- Изменения с последней проверки в 2015 году
- Не дай себя обмануть
- Как не надо использовать массивы и векторы
- Как дважды ошибиться в макросах
- Опечаточки и copy-paste
- Странные циклы
- Странные условия
xlsxwriter и LibreOffice не показывает результат формулы
Я пытаюсь создать файл Excel с простой формулой:
созданный файл отлично работает в Excel, но при открытии в LibreOffice Calc формула не оценивается. Мне нужно повторно ввести числовые значения, и тогда это сработает.
что я делаю не так?
1 ответов
XlsxWriter не вычисляет результат формулы и вместо этого сохраняет значение 0 в качестве результата формулы. Затем он устанавливает глобальный флаг в файле XLSX сказать, что все формулы и функции должны быть пересчитаны при открытии файла. Это метод, рекомендованный в документации Excel, и в целом он отлично работает с приложениями электронных таблиц. Однако приложения, которые не имеют возможности для расчета формулы, такие как Excel Viewer или некоторые мобильные приложения будут отображать только 0 результатов.
Что касается того, почему пересчет не происходит автоматически, из ask.libreoffice.org ответ:
LibreOffice намеренно не пересчитывает старые электронные таблицы, потому что, поскольку формулы обновляются от версии к версии или между различными программами электронных таблиц, результаты могут быть разными. Перейти к инструментам-параметры-LibreOffice Calc, в разделе «пересчет при загрузке файла» измените два раскрывающихся списка: «Excel 2007 и новее» и «электронная таблица ODF (не сохраненная LibreOffice)» на «всегда пересчитывать». Нажмите кнопку ОК, закройте электронную таблицу и LibreOffice. Теперь откройте файл в LibreOffice, и вы увидите, что Формулы пересчитаны.
также перейдите в меню Сервис-содержимое ячейки и убедитесь, что Автокалькуляция выбранный.
Я подтвердил, что настройка «всегда пересчитывать «или» приглашение » работала для мне. Кроме того, вы всегда можете нажать control-shift-F9.
Источник
Коды ошибок в LibreOffice Calc
В следующей таблице описываются коды ошибок для LibreOffice Calc. Если ошибка происходит в ячейке, содержащей курсор, сообщение об ошибке отображается в строке состояния .
Ширины ячейки не хватает для отображения содержимого.
Символ в формуле недействителен.
Недопустимый аргумент функции. Например, отрицательное число в функции SQRT() (в этом случае следует использовать IMSQRT()).
Недопустимая операция с плавающей запятой
Вычисление приводит к переполнению определенного диапазона значений.
Ошибка в списке параметров
Недопустимый параметр функции, например, текст вместо числа или доменная ссылка вместо ссылки на ячейку.
Ошибка: нет пары
Отсутствует скобка: например, есть закрывающие скобки, но нет открывающих скобок.
Отсутствует оператор: например, в выражении «=2(3+4) * » нет оператора между символами «2» и «(«.
Нет переменной, например, в случае, когда два оператора стоят рядом «=1+*2».
Функция требует большего количества переменных, например, AND() и OR().
Слишком длинная формула
Компилятор: общее количество внутренних токенов (то есть операторов, переменных, скобок) в формуле превышает 8192.
Слишком длинная строка
Компилятор: идентификатор в формуле по размеру превышает 64 КБ. Интерпретатор: результат строковой операции по размеру превышает 64 КБ.
Операция сортировки, предпринятая на слишком большом количестве числовых данных (максимально 100000), или переполнение стека вычислений.
Внутренняя ошибка синтаксиса
В стеке вычислений предполагается матрица, но она недоступна.
Внутренняя ошибка синтаксиса
Неизвестный код: например, документ с новой функцией загружен в старую версию, не содержащую этой функции.
Внутренняя ошибка синтаксиса
Нет результата (в ячейке отображается #ЗНАЧЕН!, а не Ошибка:519)
Формула возвращает значение, не соответствующее определению, или ячейка, на которую ссылается формула, содержит текст вместо числа.
Внутренняя ошибка синтаксиса
Компилятор создал неизвестный код компиляции.
Внутренняя ошибка синтаксиса
Формула прямым или косвенным образом ссылается на себя, и не настроен параметр Циклы в разделе LibreOffice — Параметры Сервис — Параметры — LibreOffice Calc — Вычислить.
Процедура вычисления не сходится
Функция потеряла подбираемое значение или циклические ссылки не доходят до минимальных изменений для заданного максимального числа шагов.
недопустимые ссылки (вместо Ошибка:524 в ячейке содержится #ССЫЛ!)
Компилятор: не удалось определить имя описания столбца или строки. Интерпретатор: в формуле отсутствует столбец, строка или лист, содержащий ссылочную ячейку.
недопустимые имена (вместо Ошибка:525 ячейка содержит #ИМЯ?)
Идентификатор не может быть оценен (например, нет допустимой ссылки, нет допустимого доменного имени, нет подписи столбца/строки, нет макроса, неправильный десятичный разделитель, не найдена надстройка).
Внутренняя ошибка синтаксиса
Устарела, уже не используется, но может возникнуть из старых документов, если результатом является формула из домена.
Интерпретатор: ссылки (например, ссылка ячейки на ячейку) чрезмерно инкапсулированы.
Деление на ноль
Оператор деления/если знаменатель равен 0.
Эта ошибка возвращается некоторыми функциями, например:
VARP с менее чем 1 аргументом
STDEVP с менее чем 1 аргументом
ВАР с менее чем 2 аргументами
STDEV с менее чем 2 аргументами
STANDARDIZE с stdev=0
NORMDIST с stdev=0
Вложенные массивы не поддерживаются
Ошибка: Размер массива или матрицы
Неподдерживаемое содержимое встроенного массива
Внешнее содержимое отключено
Происходит, если встречается функция, требующая (повторной) загрузки внешних источников, а пользователь еще не подтвердил перезагрузку внешних источников.
Источник
Libreoffice Writer пропадают формулы
Иногда вставленная формула пропадает, а вместо нее остается просто прямоугольник. В этом году мне что-то с электроникой не везет. Доверять ответственную работу технике нельзя.
Ну и ССЗБ, что латехом не пользуешься!
напишите: номер версии libreoffice и последовательность действий, при которой наблюдается данная ошибка.
4.3.4.1 Какая последовательность? Просто пропадают неожиданно и все.
А почему в либре формулы работают чирижопу?
4.3.4.1 Какая последовательность? Просто пропадают неожиданно и все.
4.3.3.2. все работает. последовательность нужна для написания отчета об ошибке авторам, без неё ты просто пришел поныть.
Потому что либре- и прочие говноохфисы — порнография для абсолютных неосиляторов. А им пофиг, как формула выглядит: они все равно не понимают, что эта формула значит!
последовательность нужна для написания отчета об ошибке авторам
Вот тебе последовательность воспроизведения другой ошибки:
- открой LibreOffice Calc;
- выбери ячейку, контекстное меню, «формат ячейки»;
- во вкладке «обрамление» добавь сплошные границы дефолтной линией;
- во вкладке «выравнивание» поставь угол поворота текста 1 градус;
- примени изменения, нажав OK;
- наблюдай графические искажения.
Багу уже года полтора, наверное, если не больше. Описан, не исправлен.
Тут только ныть и остаётся, всё равно остальное не действует.
а в чем бага? в «выравнивании» есть Reference edge, поставь третий пункт. или я тебя не понял?
а в чем бага? в «выравнивании» есть Reference edge, поставь третий пункт. или я тебя не понял?
Да, третий пункт «чинит». Но это засовывание головы в песок. Ни при каких настройках выравнивания текста ободок не должен так выпирать, это баг.
Вот, кстати, ссылка: https://www.libreoffice.org/bugzilla/show_bug.cgi?id=35510 . Ему уже три с половиной года, оказывается.
а как оно должно выглядеть для первых двух пунктов? на что надо это исправить?
а как оно должно выглядеть для первых двух пунктов? на что надо это исправить?
Когда я поворачиваю текст на один градус, я ожидаю, что он повернётся на один градус, но при этом останется внутри ячейки. И ожидаю, что на границы ячейки поворот никак не будет влиять. Сейчас же текст и границы выбрасывает далеко в сторону.
В багзилле (ссылка была в сообщении выше) есть два вложения-скриншота, «как выглядит» и «как ожидается».
Доверять ответственную работу технике нельзя.
А людям — и подавно. И вообще, 4.3.4.* ещё нестабильна, о чём плач-то? Кстати, как обстоит дело с аппаратным ускорением графики?
Лучи гнева.
Потребовалось набить определённое не самое малое количество формул. И тут эта свистопляска. Самое интересное, что картинка объекта сохраняется, но если попытаться её отредактировать, то в формуле пусто. При сохранении в формат docx вместо формул пусто.
Обновляю версию из debian experimental до 4.4.2-rc2, надеюсь поможет.
P.S. грош цена переведённым комментариям исходного кода с немецкого на английский язык, если на ровном месте пропадают данные.
Я не знаю, как там в Дебиане, но в Убунте сборка жутко падучая и какая-то кривая. Правда, формулы у меня не пропадали. Но иногда они рендерятся крайне странно.
Но, конечно, когда возникает такой баг с формулами, лучше всего сделать копию документа и посмотреть, что там происходит в оригинальном XML.
Обновляю версию из debian experimental до 4.4.2-rc2, надеюсь поможет.
Не помогает, увы.
Если с тебя требуют doc, пиши сразу в MSOffice. Если не требуют, пиши в latex.
Спасибо, буду иметь в виду, но вывод очевиден. Пока лучше обходить либру стороной.
Если с тебя требуют doc, пиши сразу в MSOffice.
Нюанс, что требуют docx, но docx с формулами, собственно, в либре набираю исключительно формулы, сохраняю в docx, дальше судьба документа меня не интересует — не мой фронт работы.
При сохранении в формат docx вместо формул пусто.
Это, как раз, возможно. По форматам полной совместимости никто не обещал.
Это, как раз, возможно. По форматам полной совместимости никто не обещал.
Нет, нет. Тут не в конвертере дело. Пропадают формулы, у которых
картинка объекта сохраняется, но если попытаться её отредактировать, то в формуле пусто.
Единственное, что радует. Пропадают, кажется, только новые формулы, старые не исчезают.
Как оказалось, по крайней мере в AOO, при такой последовательности действий по умолчанию (растяжение текста относительно нижней части канта) поворачивается не только текст, но и скашиваются боковые грани обрамления, что наглядно видно, если поставить угол поворота, например, 30 градусов. Поэтому сам текст на самом деле остаётся внутри обрамлённой области, отрисовка которой вываливается за пределы «ячейки». Похоже, что это фича такая. Поэтому при малом угле наклона «ромб» обрамления сильно вытягивает. Остаётся непонятным, с чего это вдруг боковые грани обрамления вообще меняют угол при повороте текста?
Это точно. Ло вообще непредсказуем своим поведением.
Ну надо же, почти два года прошло с того сообщения, я и забыть успел. А в свежем (5.2.3.1) LibreOffice всё ещё воспроизводится.
Ага. Не помню, было ли это тогда, но сейчас при выборе угла есть ещё выбор привязки. Можно выбрать привязку к нижней кромке, верней кромке и к середине. По умолчанию выбрана привязка к нижней кромке, что и приводит к такому выбросу. Если поменять на привязку к центру, поведение становится ожидаемым.
Непонятно, зачем только по умолчанию стоит привязка к кромке.
В libreoffice 5.2.3.3 формулы пропадают. Причем все симптомы те же, что описал человек, создавший тему. Последовательность действий установить не удается.
Источник
LibreOffice: страшный сон бухгалтера
LibreOffice — мощный офисный пакет, который бесплатен для частного, образовательного и коммерческого использования. Его разработчики делают замечательный продукт, который во многих сферах используется в качестве альтернативы Microsoft Office. Команде PVS-Studio всегда интересно взглянуть на код таких известных проектов и попробовать найти в них ошибки. В этот раз сделать это было легко. Проект содержит много ошибок, которые могут привести к серьёзным проблемам. В статье будут рассмотрены некоторые интересные дефекты, найденные в коде.
Введение
LibreOffice — очень крупный C++ проект. Поддерживать проект такого объёма — сложная задача для команды разработчиков. И, к сожалению, складывается впечатление, что качеству кода LibreOffice не удаётся уделять достаточного внимания.
С одной стороны, проект просто огромный, не каждый инструмент статического или динамического анализа осилит анализ 13к файлов исходного кода. Столько файлов участвует в сборке офисного пакета вместе со сторонними библиотеками. В основном репозитории LibreOffice хранится около 8к файлов исходного кода. Такой объём кода создаёт проблемы не только разработчикам:
С другой стороны, у проекта много пользователей и требуется найти и исправить как можно больше ошибок. Каждая ошибка может причинять боль сотням и тысячам пользователей. Поэтому большой размер кодовой базы не должен становиться поводом отказаться от использования тех или иных инструментов, способных обнаружить ошибки. Думаю, читатель уже догадался, что речь идёт о статических анализаторах кода :).
Да, использование статических анализаторов не гарантирует отсутствия ошибок в проекте. Однако такие инструменты, как PVS-Studio, способны найти большое количество ошибок ещё на этапе разработки и тем самым уменьшить объём работ, связанных с отладкой и поддержкой проекта.
Давайте посмотрим, что можно найти интересного в исходных кодах LibreOffice, если взять статический анализатор кода PVS-Studio. Возможности запуска анализатора обширны: Windows, Linux, macOS. Для написания этого обзора использовался отчёт PVS-Studio, созданный при анализе проекта на Windows.
Изменения с последней проверки в 2015 году
В марте 2015 года был выполнен первый анализ LibreOffice («Проверка проекта LibreOffice») с помощью PVS-Studio. С тех пор офисный пакет сильно развился как продукт, но внутри всё также содержит множество ошибок. А некоторые паттерны ошибок вообще не поменялись с тех пор. Вот, например, ошибка из первой статьи:
V656 Variables ‘aVRP’, ‘aVPN’ are initialized through the call to the same function. It’s probably an error or un-optimized code. Consider inspecting the ‘rSceneCamera.GetVRP()’ expression. Check lines: 177, 178. viewcontactofe3dscene.cxx 178
Эта ошибка исправлена, но вот что нашлось в самой последней версии кода:
V656 Variables ‘aSdvURL’, ‘aStrURL’ are initialized through the call to the same function. It’s probably an error or un-optimized code. Consider inspecting the ‘pThm->GetSdvURL()’ expression. Check lines: 658, 659. gallery1.cxx 659
Как вы могли заметить, едва различимые составные имена функций до сих пор являются источником ошибок.
Ещё один интересный пример из старого кода:
V656 Variables ‘nDragW’, ‘nDragH’ are initialized through the call to the same function. It’s probably an error or un-optimized code. Consider inspecting the ‘rMSettings.GetStartDragWidth()’ expression. Check lines: 471, 472. winproc.cxx 472
Этот фрагмент кода действительно содержал ошибку, которая сейчас исправлена. Но ошибок в коде меньше не становится… Сейчас выявлена похожая ситуация:
V656 Variables ‘defaultZoomX’, ‘defaultZoomY’ are initialized through the call to the same function. It’s probably an error or un-optimized code. Consider inspecting the ‘pViewData->GetZoomX()’ expression. Check lines: 5673, 5674. gridwin.cxx 5674
Ошибки вносятся в код буквально по аналогии.
Не дай себя обмануть
V765 A compound assignment expression ‘x -= x — . ‘ is suspicious. Consider inspecting it for a possible error. swdtflvr.cxx 3509
Вот такой вот интересный «Hack» был найден с помощью диагностики V765. Если упростить строку кода с комментарием, то можно получить неожиданный результат:
И в чём тогда заключается Hack?
Ещё один пример на эту тему:
V567 The modification of the ‘nCount’ variable is unsequenced relative to another operation on the same variable. This may lead to undefined behavior. stgio.cxx 214
Выполнение кода в таких ситуациях может зависеть от компилятора и стандарта языка. Почему бы не переписать этот фрагмент кода проще, понятнее и надёжнее?
Как не надо использовать массивы и векторы
По какой-то причине кто-то понаделал множество однотипных ошибок при работе с массивами и векторами. Давайте разберём эти примеры.
V557 Array overrun is possible. The ‘nPageNum’ index is pointing beyond array bound. pptx-epptooxml.cxx 1168
Последним валидным индексом должно являться значение, равное size() — 1. Но в этом фрагменте кода допустили ситуацию, когда индекс nPageNum может иметь значение mpSlidesFSArray.size(), из-за чего происходит выход за пределы массива и работа с элементом, состоящим из «мусора».
V557 Array overrun is possible. The ‘mnSelectedMenu’ index is pointing beyond array bound. checklistmenu.cxx 826
Интересно, что в этом фрагменте кода написали проверку индекса более понятно, но при этом допустили такую же ошибку.
V557 Array overrun is possible. The ‘nXFIndex’ index is pointing beyond array bound. xestyle.cxx 2613
А эта ошибка вдвойне интереснее! В отладочном макросе написали правильную проверку индекса, а в другом месте снова сделали ошибку, допустив выход за пределы массива.
Теперь рассмотрим ошибку иного рода, не связанную с индексами.
V554 Incorrect use of shared_ptr. The memory allocated with ‘new []’ will be cleaned using ‘delete’. dx_vcltools.cxx 158
Этот фрагмент кода содержит ошибку, приводящую к неопределённому поведению программы. Дело в том, что память выделяется и освобождается разными способами. Для правильного освобождения памяти необходимо было объявить поле класса таким образом:
Как дважды ошибиться в макросах
V568 It’s odd that the argument of sizeof() operator is the ‘bTextFrame? aProps: aShapeProps’ expression. wpscontext.cxx 134
К сожалению для многих разработчиков, аргументы макросов ведут себя не как аргументы функций. Игнорирование этого факта часто приводит к ошибкам. В случаях #1 и #2 используется почти одинаковая конструкция с использованием тернарного оператора. Но в первом случае — макрос, во втором — функция. Однако это только вершина проблемы.
В случае #1 анализатор на самом деле обнаружил следующий код с ошибкой:
Это наш цикл с макросом SAL_N_ELEMENTS. Оператор sizeof не вычисляет выражение в тернарном операторе. В данном случае выполняется арифметика с размером указателей, результатом которой являются значения, далёкие от реального размера указанных массивов. На вычисление неправильных значений дополнительно влияет и разрядность приложения.
Но потом оказалось, что существует 2 макроса SAL_N_ELEMENTS! Т.е. препроцессор раскрыл не тот макрос, как же это могло произойти? Нам поможет определение макроса и комментарии разработчиков:
Другая версия макроса содержит безопасную шаблонную функцию, но что-то пошло не так:
- Безопасный макрос не включился в код;
- Другим макросом всё равно невозможно пользоваться, т.к. успешное инстанцирование шаблонной функции выполняется только если в тернарный оператор передать массивы одинакового размера. А в этом случае использование такого макроса теряет смысл.
Опечаточки и copy-paste
V1013 Suspicious subexpression f1.Pitch == f2.CharSet in a sequence of similar comparisons. xmldlg_export.cxx 1251
Ошибка является достойным кандидатом для пополнения статьи «Зло живёт в функциях сравнения», если мы когда-нибудь решим её обновить или расширить. Думаю, вероятность найти такую ошибку (пропуск f2.Pitch) самостоятельно крайне мала. А вы как считаете?
V501 There are identical sub-expressions ‘mpTable[ocArrayColSep] != mpTable[eOp]’ to the left and to the right of the ‘&&’ operator. formulacompiler.cxx 632
Результатом бездумного копирования стал такой фрагмент кода. Возможно, условное выражение просто продублировано лишний раз, но всё равно в коде не место таким неоднозначностям.
V517 The use of ‘if (A) <. >else if (A) <. >‘ pattern was detected. There is a probability of logical error presence. Check lines: 781, 783. mysqlc_databasemetadata.cxx 781
В результате копирования условных выражений, в коде была допущена ошибка, из-за которой значение 8 для переменной nColumnSize никогда не выставляется.
V523 The ‘then’ statement is equivalent to the ‘else’ statement. svdpdf.hxx 146
Тут перепутали функции min() и max(). Наверняка из-за этой опечатки в интерфейсе что-то странно масштабируется.
Странные циклы
V533 It is likely that a wrong variable is being incremented inside the ‘for’ operator. Consider reviewing ‘i’. javatypemaker.cxx 602
Выражение ++i в цикле выглядит очень подозрительно. Возможно, там должно быть ++j.
V756 The ‘nIndex2’ counter is not used inside a nested loop. Consider inspecting usage of ‘nIndex’ counter. treex.cxx 34
Есть какая-то ошибка во внутреннем цикле for. Т.к. переменная nIndex не изменяется, происходит перезаписывание одних и тех же двух элементов массива на каждой итерации. Скорее всего, везде вместо nIndex должна была использоваться переменная nIndex2.
V1008 Consider inspecting the ‘for’ operator. No more than one iteration of the loop will be performed. diagramhelper.cxx 292
Цикл for намеренно ограничивается до 1 итерации. Непонятно, зачем это сделано именно таким способом.
V612 An unconditional ‘return’ within a loop. pormulti.cxx 891
Пример более простого странного цикла из одной итерации, который лучше переписать на условный оператор.
Ещё несколько таких мест:
- V612 An unconditional ‘return’ within a loop. txtfrm.cxx 144
- V612 An unconditional ‘return’ within a loop. txtfrm.cxx 202
- V612 An unconditional ‘return’ within a loop. txtfrm.cxx 279
Странные условия
V637 Two opposite conditions were encountered. The second condition is always false. Check lines: 281, 285. authfld.cxx 281
Анализатор обнаружил противоречивые сравнения. Что-то с этим фрагментом кода явно не так.
Такой же код замечен и в этом месте:
- V637 Two opposite conditions were encountered. The second condition is always false. Check lines: 1827, 1829. doctxm.cxx 1827
V590 Consider inspecting this expression. The expression is excessive or contains a misprint. fileurl.cxx 55
Проблема приведённого фрагмента кода заключается в том, что первое условное выражение не влияет на результат всего выражения.
По мотивам подобных ошибок я даже написал теоретическую статью: «Логические выражения в C/C++. Как ошибаются профессионалы».
V590 Consider inspecting this expression. The expression is excessive or contains a misprint. unoobj.cxx 1895
Сразу не понять, в чём проблема данного условия, поэтому из препроцессированного файла был выписан развёрнутый фрагмент кода:
Получилось так, что ни одно число не входит одновременно в 4 диапазона, заданных в условии числами. Разработчики допустили ошибку.
Источник