Формула если ошибка в сводной таблице

error

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

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

Для того, чтобы скрыть ошибки, необходимо выполнить следующее:

1. Необходимо кликнуть в любом месте сводной таблицы и на вкладке Параметры в группе Работа со сводными таблицами нажать на кнопку в левой части ленты – «Параметры».

1

 2 1

2. В открывшемся окне на вкладе «Разметка и формат» поставить параметр «Для ошибок отображать» и нажать «ОК».

3

 4

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

5

Если материал Вам понравился или даже пригодился, Вы можете поблагодарить автора, переведя определенную сумму по кнопке ниже:
(для перевода по карте нажмите на VISA и далее «перевести»)

Skip to content

Функция ЕСЛИОШИБКА – примеры формул

В статье описано, как использовать функцию ЕСЛИОШИБКА в Excel для обнаружения ошибок и замены их пустой ячейкой, другим значением или определённым сообщением. Покажем примеры, как использовать функцию ЕСЛИОШИБКА с функциями визуального просмотра и сопоставления индексов, а также как она сравнивается с ЕСЛИ ОШИБКА и ЕСНД.

«Дайте мне точку опоры, и я переверну землю», — сказал однажды Архимед. «Дайте мне формулу, и я заставлю ее вернуть ошибку», — сказал бы пользователь Excel. Здесь мы не будем рассматривать, как получить ошибки в Excel. Мы узнаем, как предотвратить их, чтобы ваши таблицы были чистыми, а формулы — понятными и точными.

Итак, вот о чем мы поговорим:

Что означает функция Excel ЕСЛИОШИБКА

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

Синтаксис функции Excel ЕСЛИОШИБКА следующий:

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

Где:

  • Значение (обязательно) — что проверять на наличие ошибок. Это может быть формула, выражение или ссылка на ячейку.
  • Значение_если_ошибка (обязательно) — что возвращать при обнаружении ошибки. Это может быть пустая строка (получится пустая ячейка), текстовое сообщение, числовое значение, другая формула или вычисление.

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

Рассмотрим простой пример:

Чтобы этого не произошло, используйте формулу ЕСЛИОШИБКА, чтобы перехватывать и обрабатывать их нужным вам образом.

Если ошибка, то пусто

Укажите пустую строку (“”) в аргументе значение_если_ошибка, чтобы вернуть пустую ячейку, если обнаружена ошибка:

=ЕСЛИОШИБКА(A4/B4; «»)

Вернемся к нашему примеру и используем ЕСЛИОШИБКА:

Как видите по сравнению с первым скриншотом, вместо стандартных сообщений мы видим просто пустые ячейки.

Если ошибка, то показать сообщение

Вы также можете отобразить собственное сообщение вместо стандартного обозначения ошибок Excel:

=ЕСЛИОШИБКА(A4/B4; «Ошибка в вычислениях»)

Перед вами – третий вариант  нашей небольшой таблицы.

5 фактов, которые нужно знать о функции ЕСЛИОШИБКА в Excel

  1. ЕСЛИОШИБКА в Excel обрабатывает все типы ошибок, включая #ДЕЛ/0!, #Н/Д, #ИМЯ?, #NULL!, #ЧИСЛО!, #ССЫЛКА! и #ЗНАЧ!.
  2. В зависимости от содержимого аргумента значение_если_ошибка функция может заменить ошибки вашим текстовым сообщением, числом, датой или логическим значением, результатом другой формулы или пустой строкой (пустой ячейкой).
  3. Если аргумент значение является пустой ячейкой, он обрабатывается как пустая строка (»’), но не как ошибка.
  4. ЕСЛИОШИБКА появилась в Excel 2007 и доступна во всех последующих версиях Excel 2010, Excel 2013, Excel 2016, Excel 2019, Excel 2021 и Excel 365.
  5. Чтобы перехватывать ошибки в Excel 2003 и более ранних версиях, используйте функцию ЕОШИБКА в сочетании с функцией ЕСЛИ, например как показано ниже: 

=ЕСЛИ(ЕОШИБКА(A4/B4);»Ошибка в вычислениях»;A4/B4)

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

ЕСЛИОШИБКА с функцией ВПР

Часто встречающаяся задача в Excel – поиск нужного значения в таблице в соответствии с определёнными критериями. И не всегда этот поиск бывает успешным. Одним из наиболее распространенных применений функции ЕСЛИОШИБКА является сообщение пользователям, что искомое значение не найдено в базе данных. Для этого вы заключаете формулу ВПР в функцию ЕСЛИОШИБКА примерно следующим образом:

ЕСЛИОШИБКА(ВПР(  );»Не найдено»)

Если искомое значение отсутствует в таблице, которую вы просматриваете, обычная формула ВПР вернет ошибку #Н/Д:

Для лучшего понимания таблицы и улучшения ее внешнего вида, заключите функцию ВПР в ЕСЛИОШИБКА и покажите более понятное для пользователя сообщение:

=ЕСЛИОШИБКА(ВПР(D3; $A$3:$B$5; 2;ЛОЖЬ); «Не найдено»)

На скриншоте ниже показан пример ЕСЛИОШИБКА вместе с ВПР в Excel:

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

=ЕСЛИ(ЕНД(ВПР(D3; $A$3:$B$5; 2;ЛОЖЬ)); «Не найдено»;ВПР(D3; $A$3:$B$5; 2;ЛОЖЬ))

Дополнительные примеры формул Excel ЕСЛИОШИБКА ВПР можно также найти в нашей статье Как убрать сообщение #Н/Д в ВПР?

Вложенные функции ЕСЛИОШИБКА для выполнения последовательных ВПР

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

Предположим, у вас есть несколько отчетов о продажах из региональных отделений вашей компании, и вы хотите получить сумму по определенному идентификатору заказа. С ячейкой В9 в качестве критерия поиска (номер заказа) и тремя небольшими таблицами поиска (таблица 1, 2 и 3), формула выглядит следующим образом:

=ЕСЛИОШИБКА(ВПР(B9;A3:B6;2;0);ЕСЛИОШИБКА(ВПР(B9;D3:E6;2;0);ЕСЛИОШИБКА(ВПР(B9;G3:H6;2;0);»Не найден»)))

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

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

ЕСЛИОШИБКА в формулах массива

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

Допустим, у вас есть Сумма в столбце B и Цена в столбце C, и вы хотите вычислить Количество. Это можно сделать с помощью следующей формулы массива, которая делит каждую ячейку в диапазоне B2:B4 на соответствующую ячейку в диапазоне C2:C4, а затем суммирует результаты:

=СУММ(($B$2:$B$4/$C$2:$C$4))

Формула работает нормально, пока в диапазоне делителей нет нулей или пустых ячеек. Если есть хотя бы одно значение 0 или пустая строка, то возвращается ошибка: #ДЕЛ/0! Из-за одной некорректной позиции мы не можем получить итоговый результат.

Чтобы исправить эту ситуацию, просто вложите деление внутрь формулы ЕСЛИОШИБКА:

=СУММ(ЕСЛИОШИБКА($B$2:$B$4/$C$2:$C$4;0))

Что делает эта формула? Делит значение в столбце B на значение в столбце C в каждой строке (3500/100, 2000/50 и 0/0) и возвращает массив результатов {35; 40; #ДЕЛ/0!}. Функция ЕСЛИОШИБКА перехватывает все ошибки #ДЕЛ/0! и заменяет их нулями. Затем функция СУММ суммирует значения в итоговом массиве {35; 40; 0} и выводит окончательный результат (35+40=75).

ПримечаниеПомните, что ввод формулы массива должен быть завершен нажатием комбинации  Ctrl + Shift + Enter (если у вас не Office365 или Excel2021 – они понимают формулы массива без дополнительных телодвижений).

ЕСЛИОШИБКА или ЕСЛИ + ЕОШИБКА?

Теперь, когда вы знаете, как использовать функцию ЕСЛИОШИБКА в Excel, вы можете удивиться, почему некоторые люди все еще склоняются к использованию комбинации ЕСЛИ + ЕОШИБКА. Есть ли у этого старого метода преимущества по сравнению с ЕСЛИОШИБКА? 

В старые недобрые времена Excel 2003 и более ранних версий, когда ЕСЛИОШИБКА не существовало, совместное использование ЕСЛИ и ЕОШИБКА было единственным возможным способом перехвата ошибок. Это просто немного более сложный способ достижения того же результата.

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

В Excel 2007 — Excel 2016:

ЕСЛИОШИБКА(ВПР(  ); «Не найдено»)

Во всех версиях Excel:

ЕСЛИ(ЕОШИБКА(ВПР(…)); «Не найдено»; ВПР(…))

Обратите внимание, что в формуле ЕСЛИ ЕОШИБКА ВПР вам нужно дважды выполнить ВПР.  Чтобы лучше понять, расшифруем: если ВПР приводит к ошибке, вернуть «Не найдено», в противном случае вывести результат ВПР.

А вот простой пример формулы Excel ЕСЛИ ЕОШИБКА ВПР:

=ЕСЛИ(ЕОШИБКА(ВПР(D2; A2:B5;2;ЛОЖЬ)); «Не найдено»; ВПР(D2; A2:B5;2;ЛОЖЬ ))

ЕСЛИОШИБКА против ЕСНД

Представленная в Excel 2013, ЕСНД (IFNA в английской версии) — это еще одна функция для проверки формулы на наличие ошибок. Его синтаксис похож на синтаксис ЕСЛИОШИБКА:

ЕСНД(значение; значение_если_НД)

Чем ЕСНД отличается от ЕСЛИОШИБКА? Функция ЕСНД перехватывает только ошибки #Н, тогда как ЕСЛИОШИБКА обрабатывает все типы ошибок.

В каких ситуациях вы можете использовать ЕСНД? Когда нецелесообразно скрывать все ошибки. Например, при работе с важными данными вы можете захотеть получать предупреждения о возможных ошибках в вашем наборе данных (случайном делении на ноль и т.п.), а стандартные сообщения об ошибках Excel с символом «#» могут быть яркими визуальными индикаторами проблем.

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

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

=ЕСНД(ВПР(F3; $A$3:$D$6; 4;ЛОЖЬ); «Не найдено»)

Или подойдет комбинация ЕСЛИ ЕНД для старых версий Excel:

=ЕСЛИ(ЕНД(ВПР(F3; $A$3:$D$6; 4;ЛОЖЬ));»Не найдено»; ВПР(F3; $A$3:$D$6; 4;ЛОЖЬ))

Как видите, формула ЕСНД с ВПР возвращает «Не найдено» только для товара, которого нет в таблице поиска (Сливы). Для персиков она показывает #ДЕЛ/0! что указывает на то, что наша таблица поиска содержит ошибку деления на ноль.

Рекомендации по использованию ЕСЛИОШИБКА в Excel

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

Эти простые рекомендации могут помочь вам сохранить баланс.

  1. Не ловите ошибки без весомой на то причины.
  2. Оберните в ЕСЛИОШИБКА только ту часть формулы, где по вашему мнению могут возникнуть проблемы.
  3. Чтобы обрабатывать только определенные ошибки, используйте другую функцию обработки ошибок с меньшей областью действия:
    • ЕСНД или ЕСЛИ ЕНД для обнаружения только ошибок #H/Д.
    • ЕОШ для обнаружения всех ошибок, кроме #Н/Д.

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

Также рекомендуем:

 

Araik A

Пользователь

Сообщений: 16
Регистрация: 03.10.2019

Всем доброго, товарищи!
В сводной таблице есть вычисляемое поле, в котором присутствует деление.
т.к. в данных есть «0» одна строка сводной выдает #ДЕЛ/0.
Как можно выйти из ситуации?

 

skais675

Пользователь

Сообщений: 2189
Регистрация: 03.06.2014

Ну так вставьте туда формулу IFERROR или ЕСЛИОШИБКА.

 
 

Araik A

Пользователь

Сообщений: 16
Регистрация: 03.10.2019

#4

02.07.2020 09:49:35

Vladimir Chebykin, Спасибо)

Цитата
skais675 написал: Ну так вставьте туда формулу IFERROR или ЕСЛИОШИБКА.

Да, спасибо)
Не думал что Вычисляемое поле работает с этими операторами

 

Vladimir Chebykin

Пользователь

Сообщений: 1283
Регистрация: 15.01.2015

#5

02.07.2020 10:05:40

Цитата
Araik A написал:
Не думал что Вычисляемое поле работает с этими операторами

И не будет. Если мне не изменяет память, то вычисляемое поле работает только с самыми простыми формулами типа: СУММ, МИН…
Если я ошибаюсь — поправьте меня

Изменено: Vladimir Chebykin02.07.2020 10:06:25

 

Araik A

Пользователь

Сообщений: 16
Регистрация: 03.10.2019

Нормально сработало)

Изменено: Araik A02.07.2020 12:07:40
(Некорректная вставка скрина)

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14265
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#7

02.07.2020 14:15:53

Цитата
Vladimir Chebykin написал:
типа: СУММ, МИН

Вот как раз с ними — нет. Вычисляемые поля работают только с так называемыми линейными функциями. Т.е. только с теми, которые не обрабатывают диапазоны значений, а требуют в аргументах одну ячейку или константу и ни в коем случае НЕ строго ДИАПАЗОН(типа СУММЕСЛИ).
Поэтому функции ЕСЛИ, И, ИЛИ, НЕ, ЕНД и т.д. работают в вычисляемых полях прекрасно.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 
 

sokol92

Пользователь

Сообщений: 4456
Регистрация: 10.09.2017

Правила составления формул для вычисляемых полей сводных таблиц

здесь

.

Изменено: sokol9202.07.2020 16:19:13

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

sokol92, я вот как-то прочитал эту штуку про вычисляемые поля и понял Power Pivot наше все. А этот костыль, ну его нафиг.

Вот горшок пустой, он предмет простой…

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14265
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#11

02.07.2020 17:58:45

Цитата
PooHkrd написал:
А этот костыль, ну его нафиг

как ни печально, но не все могут себе позволить PowerPivot даже в больших компаниях. Не у всех 2016 офис(и выше), а ставить доп.ПО как правильно низя…

P.S. По ссылке далеко не полный перечень функций, которые не будут правильно работать внутри вычисляемых полей и объектов :)

Изменено: Дмитрий(The_Prist) Щербаков02.07.2020 18:08:19

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

Дмитрий(The_Prist) Щербаков, ИМХО возможности 2016 ПРО+ при правильном использовании отбиваются в первую неделю использования, дальше идут сплошные бонусы. Если мы про зарабатывание денег.

Вот горшок пустой, он предмет простой…

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14265
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#13

02.07.2020 18:16:01

Цитата
PooHkrd написал:
при правильном использовании отбиваются в первую неделю использования

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

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

sokol92

Пользователь

Сообщений: 4456
Регистрация: 10.09.2017

#14

02.07.2020 18:18:29

Цитата
PooHkrd написал:
Power Pivot наше все

А управлять им из среды Excel VBA уже можно?

Владимир

 

Владимир, пивотом пока вроде как нельзя. Квери только чуть-чуть поддается в последних версиях.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

sokol92

Пользователь

Сообщений: 4456
Регистрация: 10.09.2017

Дмитрий, спасибо! Что ж, подождем еще… :)  

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

Владимир, а чем именно вы там хотите управлять, если не секрет? Если нужно загрузить данные, то можно использовать объектную модель управления запросами PQ. Если нужно выгрузить на лист, то можно создавать таблицу и запросом SQL вытаскивать нужные выборки. Или создавать сводную и управлять выборками через её фильтры. Ваш опыт, конечно, с моим не сравним, но моя фантазия ограничивается вот таким.
З.Ы. Хотя, единственно чего очень хотелось бы, но нет из коробки, это итеративное обновление источников, чтобы можно было дописывать данные в таблицы модели. Это очень сильно сэкономило бы время на ожидание.

Вот горшок пустой, он предмет простой…

 

sokol92

Пользователь

Сообщений: 4456
Регистрация: 10.09.2017

Мы используем Excel для отображения данных корпоративных систем. Обычные сводные таблицы не сложно генерировать «на лету» с помощью Excel VBA, а вот на расширенные возможности Power Pivot пока остается только облизываться. :)  

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

sokol92, ага, вы хотите управлять связями и создавать меры? Но для этого вроде имеются внешние элементы управления без залезания в модель данных. Получается что для управления этими элементами нет инструментов в ВБА? Блин, не знал. Странно это.

Вот горшок пустой, он предмет простой…

 

sokol92

Пользователь

Сообщений: 4456
Регистрация: 10.09.2017

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

Изменено: sokol9202.07.2020 19:17:37

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

sokol92, ну макрорекодер это ж сила. Все можно подсмотреть. А вообще мы тут увлеклись, я думаю. Если действительно есть интерес, то заходите к нам на

огонёк

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

Вот горшок пустой, он предмет простой…

 

sokol92

Пользователь

Сообщений: 4456
Регистрация: 10.09.2017

#22

06.07.2020 20:23:43

Здравствуйте, Алексей! В подтверждение слов Дмитрия

прочитал

, что

Цитата
The  creation and deletion of the PowerPivot Model (PPM) is triggered by  user exposed actions and cannot be created directly by the developer.

Developer’ы терпеливые, подождем еще лет 10. :)

А все-таки интересно, в чем состоит непреодолимая сложность занесения DAX-формулы (или формулы на языке M для PQ) с помощью макроса по сравнению с занесением этой же формулы через диалоговое окно?

Изменено: sokol9206.07.2020 20:31:04

Владимир

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#23

06.07.2020 23:17:33

Доброе время суток.

Цитата
sokol92 написал:
cannot be created

Ну, тут как бы не всё так грустно, по крайней мере в Excel 365, особенно если про Power Query. С удалением, да в объектной модели Power Pivot, пока швах. С переименованием объектов, забавно Dummy1 :)   Так и не наковырял, как вычисляемый столбец в таблицу подженить :(

Код
Public Sub JustTryIt()
    Dim sPQL As String, wbQuery As WorkbookQuery
    Dim wbConn As WorkbookConnection, pTable As ModelTable
    Dim pMeasuure As ModelMeasure
    sPQL = "let" & vbLf & "    items = {1..100},"
    sPQL = sPQL & vbLf & "    repeat = List.Transform(items, each List.Numbers(1000, 100, 100)),"
    sPQL = sPQL & vbLf & "    members = List.Combine(repeat),"
    sPQL = sPQL & vbLf & "    toTable = Table.FromColumns({members}, type table [Column1 = Int64.Type]),"
    sPQL = sPQL & vbLf & "    add = Table.AddColumn(toTable, ""Column2"", each try 1000 * Number.Random() otherwise null, Number.Type)"
    sPQL = sPQL & vbLf & "in" & vbLf & "    add"
    'create power query query
    Set wbQuery = ThisWorkbook.Queries.Add("TPQLData", sPQL, "This is auto geterated query")
    'change created query
    wbQuery.Formula = "// this is this query description in its code" & vbLf & wbQuery.Formula
    ThisWorkbook.Model.Initialize
    Set wbConn = ThisWorkbook.Connections.Add2("TPQLDataPP", "Add that query to model", "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=TPQLData;Extended Properties=""""", _
    "Select * From [TPQLData]", xlCmdSql, True, False)
    Set pTable = ThisWorkbook.Model.ModelTables(1)
    'excelent change of name
    pTable.Dummy1 wbQuery.Name
    Set pMeasuure = ThisWorkbook.Model.ModelMeasures.Add("Just Sum", pTable, "SUM('" & wbQuery.Name & "'[Column2])", ThisWorkbook.Model.ModelFormatDecimalNumber(True, 2), "created by vba measure")
End Sub

Посмотрю завтра, что из этого в Excel 2016 действует.
Updated
Посмотрел. Код полностью отработал.
P. S. Глючит, если открыто окно Power Pivot.

Изменено: Андрей VG07.07.2020 09:25:20

 

sokol92

Пользователь

Сообщений: 4456
Регистрация: 10.09.2017

Андрей, как всегда, огромное спасибо!

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

#25

07.07.2020 13:12:45

Цитата
Андрей VG написал:
Так и не наковырял, как вычисляемый столбец в таблицу подженить

Посчитать в PQ и подженить!  :D
А на DAX — никак. Не видел я внешних относительно модели кнопок, чтобы формулу столбца внести. В модель затащить таблицу запросом извне — можно. Настроить связи между таблицами — можно. Нужно сделать календарь? Запросом PQ — легко. Пошаманить с подключениями и SQL-запросами к ним, тоже можно.
Но, вот сделать сортировку по другому столбцу, вычисляемый столбец формулами DAX, создать KPI и управлять им. Этого нельзя.

Вот горшок пустой, он предмет простой…

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#26

07.07.2020 19:26:58

Цитата
PooHkrd написал:
Не видел я внешних относительно модели кнопок, чтобы формулу столбца внести

Эк вас, Алексей, на кнопочках то приклинило :)  Есть доказательство того, что есть только однозначная связь между существованием кнопки в интерфейсе и чего-нибудь в объектной модели, только и позволяющее это использовать в VBA?
Предполагаю, что MDX тут путь лежит, но идти туда не охота.

Изменено: Андрей VG07.07.2020 19:27:36

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

#27

07.07.2020 19:46:04

Андрей VG, нет конечно, но очень велика вероятность того, что если кнопка вне управления модели данных имеется, то и при помощи ВБА этим можно управлять. А вот про обратное как раз много где упоминается, что туда ход закрыт. Вы ж знаете, что в ВБА я нуль. Так что обхожусь только общими предположениями на основе логики, которые, кстати, вами же и подтверждаются. ;)

Вот горшок пустой, он предмет простой…

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

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

Синтаксис

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

Аргументы функции ЕСЛИОШИБКА описаны ниже.

  • значение    Обязательный аргумент. Проверяемая на ошибку аргумент.

  • value_if_error    — обязательный аргумент. Значение, возвращаемая, если формула возвращает ошибку. Вычисляются следующие типы ошибок: #N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?или #NULL!.

Замечания

  • Если значение или value_if_error пустая ячейка, то если ЕСЛИЕROR рассматривает его как пустую строковую строку («»).

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

Примеры

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

Котировка

Единиц продано

210

35

55

0

23

Формула

Описание

Результат

=ЕСЛИОШИБКА(A2/B2;»Ошибка при вычислении»)

Выполняет проверку на предмет ошибки в формуле в первом аргументе (деление 210 на 35), не обнаруживает ошибок и возвращает результат вычисления по формуле

6

=ЕСЛИОШИБКА(A3/B3;»Ошибка при вычислении»)

Выполняет проверку на предмет ошибки в формуле в первом аргументе (деление 55 на 0), обнаруживает ошибку «деление на 0» и возвращает «значение_при_ошибке»

Ошибка при вычислении

=ЕСЛИОШИБКА(A4/B4;»Ошибка при вычислении»)

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

0

Пример 2

Котировка

Единиц продано

Отношение

210

35

6

55

0

Ошибка при вычислении

23

0

Формула

Описание

Результат

=C2

Выполняет проверку на предмет ошибки в формуле в первом аргументе в первом элементе массива (A2/B2 или деление 210 на 35), не обнаруживает ошибок и возвращает результат вычисления по формуле

6

=C3

Выполняет проверку на предмет ошибки в формуле в первом аргументе во втором элементе массива (A3/B3 или деление 55 на 0), обнаруживает ошибку «деление на 0» и возвращает «значение_при_ошибке»

Ошибка при вычислении

=C4

Выполняет проверку на предмет ошибки в формуле в первом аргументе в третьем элементе массива (A4/B4 или деление «» на 23), не обнаруживает ошибок и возвращает результат вычисления по формуле

0

Примечание. Если у вас есть текущая версия Microsoft 365 ,вы можете ввести формулу в левую верхнюю ячейку диапазона выходных данных, а затем нажать ввод, чтобы подтвердить формулу как формулу динамического массива. В противном случае формула должна быть введена как формула массива устаревшей. Для этого сначала выберем диапазон вывода, введите формулу в левую верхнюю ячейку диапазона, а затем нажмите CTRL+SHIFT+ВВОД, чтобы подтвердить ее. Excel автоматически вставляет фигурные скобки в начале и конце формулы. Дополнительные сведения о формулах массива см. в статье Использование формул массива: рекомендации и примеры.

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

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

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

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

Привет, друзья. Ошибки в Экселе часто пугают новичков, ведь их исправление не всегда понятно и очевидно. Сегодня поговорим об ошибке, #ДЕЛ/0!, которая иногда появляется там, где её совсем не ждёшь.

Эта ошибка возникает, когда ваша формула пытается произвести деление на ноль. Да, в высшей математике такая операция вернёт «бесконечность», а в большинстве языков программирования – Infinity. Но в Экселе это вызовет ошибку, которая «поломает» все связанные расчёты. Давайте рассмотрим основные причины описанного.

Формула ссылается на пустую ячейку, или нулевое значение

Это простейший случай, который очень легко отследить.

В примере на картинке мы видим, что делитель – пустое значение (или ноль). Это могло случиться из-за того, что:

  • Эта ячейка еще не заполнена, но это будет сделано позднее
  • В ячейке правильное значение, равное нулю

Первое, что нужно сделать – проверить, все ли данные правильно внесены в таблицу, ввести или исправить некорректные величины.

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

Формула среднего значения без подходящих аргументов

Когда вы пользуетесь функциями расчёта среднего значения СРЗНАЧ, СРЗНАЧЕСЛИ, СРЗНАЧЕСЛИМН, программа суммирует элементы и делит сумму на их количество. При том, если подходящих элементов для суммирования в диапазоне нет, их сумма и количество будет равны нулю, функция вернет #ДЕЛ/0!

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

Чтобы это исправить, нужно либо проверить список работников на ошибки и добавить Сидорова, либо применять формулы обхода.

Формула ссылается на ячейку, в которой содержится ошибка

Если ваша формула ссылается на ячейку, в которой ошибка #ДЕЛ/0!, она тоже вернёт эту ошибку. Смотрите, на примере:

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

Обход деления на ноль с помощью функции ЕСЛИ

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

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

=ЕСЛИ(делитель=0; 0; делимое/делитель)

Формула проконтролирует значение делителя. Если он нулевой – вернёт ноль. Если нет – отношение делимого к делителю:

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

Перехват с помощью функции ЕСЛИОШИБКА

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

Если результат выражения – ошибка, функция вернет «значение_если_ошибка». В противном случае, результат вычисления выражения. Вот так:

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

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

А у меня на этом всё. Если у вас что-то не получается по теме статьи – пишите комментарии с вопросами!

Убрать отображение ошибок в сводной таблице

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

Отображение значения массива в сводной таблице
Добрый день уважаемые программисты и специалисты! Подскажите пожалуйста как в exel сделать так.

Как убрать лишние итоги в сводной таблице?
Что-то иногда я умудряюсь находить в давно уже вроде бы изученных «от и до» темах новые затыки.

Отображение определенных филиалов для определенных пользователей в сводной таблице
Здравствуйте! Есть сводная таблица в которой есть колонка «Филиал». Мне нужно чтоб для.

Разные имена колонок в таблице и сводной таблице
Здравствуйте. Есть некая таблица. При построении по этой таблице сводной таблицы, в сводной.

Возможно, вам также будет интересно:

  • Формула если ошибка в excel что это
  • Формула определения средней квадратической ошибки
  • Формула если ошибка в excel примеры несколько
  • Формула обработки ошибок в excel
  • Формула если выдает ошибку знач

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии