Пауэр квери ошибка dataformat error

Файлы к уроку:

  • Для спонсоров Boosty
  • Для спонсоров VK
  • YouTube
  • VK

Ссылки:

  • Страница курса
  • Плейлист YouTube
  • Плейлист ВК

Описание

Мы собираемся импортировать таблицу с этой страницы. Когда мы пытаемся изменить тип данных для столбцов с датой, то возвращается столбец с ошибкой DateFormat.Error.

Решение

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

С помощь функции Text.Length мы можем убедиться, что длина строки намного больше, чем ожидается. Мы видим 10 символов, но функция возвращает 15.

С помощью функции Text.Start извлечем 1 символ сначала строки. Потом получим код этого символа с помощью функции Character.ToNumber. Получаем 8206.

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

Table.ReplaceValue(
      get_table, 
      Character.FromNumber(8206), 
      "", 
      Replacer.ReplaceText, 
      {
         "Дата начала купонного периода", 
         "Дата выплаты купона", 
         "Дата фиксации списка держателей"
      }
   )

Примененные функции

  • Text.Length
  • Text.Start
  • Character.ToNumber
  • Web.Page
  • Web.Contents
  • Table.SelectRows
  • Table.ReplaceValue
  • Character.FromNumber
  • Replacer.ReplaceText
  • Table.TransformColumnTypes

Код

let
   source = Web.Page(
      Web.Contents(
         "https://www.moex.com/ru/issue.aspx?board=TQCB&code=RU000A102036#/bond_4"
      )
   ), 
   get_table = Table.SelectRows(
      source, 
      each ([ClassName] = "coupon-payment-schedule__table")
   ){0}[Data], 
   cols_replace = Table.ReplaceValue(
      get_table, 
      Character.FromNumber(8206), 
      "", 
      Replacer.ReplaceText, 
      {
         "Дата начала купонного периода", 
         "Дата выплаты купона", 
         "Дата фиксации списка держателей"
      }
   ), 
   cols_types = Table.TransformColumnTypes(
      cols_replace, 
      {
         {"Дата начала купонного периода", type date}, 
         {"Дата выплаты купона", type date}, 
         {"Дата фиксации списка держателей", type date}
      }
   )
in
   cols_types

Этот урок входит в курс Работа с ошибками в Power Query

Номер урока Урок Описание
1 Power Query Ошибки №1. Измененный тип, Неверная фильтрация в UI Почему возникает ошибка Expression.Error Столбец таблицы не найден? Одна из причин — шаг Измененный тип.
Почему в вашей итоговой таблицы не все данные, которые должны там оказаться? Вероятно вы совершили ошибку неверной фильтрации в пользовательском интерфейсе.
2 Power Query Ошибки №2. Фиксированная ширина столбца Excel В этом уроке вы узнаете как отключить автоматическое определение ширины столбцов таблицы Excel при обновлении запроса Power Query.
3 Power Query Ошибки №3. Formula Firewall, запрос ссылается на… Вы работаете в Power Query, но при попытке обновить все возникает ошибка Formula Firewall, запрос ссылается на… Что делать? Как исправить?
4 Power Query Ошибки №4. Доступ к веб-содержимому В этом уроке вы узнаете как избавиться от надоедливого окна доступ к веб-содержимому.
5 Power Query Ошибки №5. Количество столбцов CSV При импорте CSV получается неверное количество столбцов.
6 Power Query Ошибки №6. Не получается изменить тип данных (DataFormat.Error) При попытке изменить тип данных с текстового на дату возникает ошибка DataFormat.Error.
7 Power Query Ошибки №7. Разные имена листов В этом уроке мы решим проблему, когда в ваших источниках нужные вам данные находятся всегда на листах с разными именами.
8 Power Query Ошибки №8. Разные имена листов 2 В этом уроке мы другими способами решим проблему, когда в ваших источниках нужные вам данные находятся всегда на листах с разными именами.
9 Power Query Ошибки №9. Разные имена столбцов, Table.TransformColumnNames В этом уроке мы разберем проблему, когда нам присылают файлы, в которых всегда столбцы названы по-разному.
10 Power Query Ошибки №10. Как развернуть все столбцы В этой задаче мы научимся разворачивать все столбцы табличного столбца не перечисляя каждый из них хардкодом.
11 Power Query Ошибки №11. Подключиться к последнему файлу В этом уроке мы научимся подключаться к самому свежему файлу из нужной нам папки с нужным названием.
12 Power Query Ошибки №12. Консолидация и MissingField.Type Бывает вы ходите выполнить добавление таблиц друг под другом с предварительной обработкой, но получаете ошибку Expression.Error: Столбец таблицы не найден.
13 Power Query Ошибки №13. Удалить пустые столбцы Как без хардкода автоматически удалить пустые столбцы в Power Query, которые есть в импортируемой таблицы. Разберем 2 способа. Один из них прост до безобразия, а для второго понадобится функция Table.Profile.
14 Power Query Ошибки №14. Удалить лишние пробелы В этом уроке мы разберем еще 1 способ удалить лишние пробелы в текстовом столбце Power Query. Для этого мы повторим и изучим несколько новых функций.
Text.SplitAny
List.Select
Character.FromNumber
Text.Combine
15 Power Query Ошибки №15. Плохо структурированный TXT Как быть, если текстовый файл разбивается на столбцы неправильно?
16 Power Query Ошибки №16. При округлении не совпадает общая сумма Разберем ошибку, которая возникает при необходимости разбить число на определенные доли, а результаты округлить до двух знаков после запятой. В такой ситуации может получиться, что сумма слагаемых не будет равняться исходному числу.
17 Power Query Ошибки №17. Удаление дубликатов, Подводные камни Table. Distinct Что может пойти не так при использовании функции удаления дубликатов.
18 Power Query Ошибки №18. Удаление дубликатов 2, Подводные камни Table. Distinct Что может пойти не так при использовании функции удаления дубликатов. Другое решение данной проблемы.
19 Power Query Ошибки №19. Неверная разбивка на столбцы При импорте данных из CSV или TXT разбивка на столбцы происходит неправильно.
20 Power Query Ошибки №20. Пустая таблица при импорте Excel (XLSX, XLS) Вы пытаетесь подключиться к книге Excel, но импортируется пустая таблица.
21 Power Query Ошибки №21. Подключение к PostgreSQL, Установка драйвера Вы пытаетесь подключиться к PostgreSQL и получаете ошибку «Перед использование этого соединителя необходимо установить один или несколько дополнительных компонентов»

Ну, вариантов масса.
Например, я сталкиваюсь с такой ошибкой при импорте файлов, выгруженных из 1С — что-то там нарушено в XML-схеме документа, и он не читается, пока не откроешь и не сохранишь его в Excel. Поэтому, например, при выгрузке из 1С давно уже не выгружаю в Excel, а сразу в текстовый файл и тяну уже из него.
Вариант 2 — в папке лежит еще что-то. например, какой-то файл открыт, Excel создал временный скрытый файл, и вы пытаетесь его открыть.
Вариант 3 — вместе с файлами Excel лежит что-то вообще не Excel.
Вариант 4 — иногда такое бывает при импорте xlsb

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

Запрос Power Query «Из папки»

Viper25

Дата: Понедельник, 19.09.2016, 17:51 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 93


Репутация:

4

±

Замечаний:
20% ±


Excel 2007

Есть два файла.
При настройке запроса Power Query на эти файлы «Из папки» запрос не формируется.

DataFormat.Error: Входные данные не удалось распознать как допустимый документ Excel.
Подробные сведения:
Binary

По отдельности запрос на файлики формируется нормально.
Файлы не могу приложить из-за их размера.
В чем может быть проблема?

 

Ответить

Szekerfehesvar

Дата: Понедельник, 19.09.2016, 21:23 |
Сообщение № 2

Группа: Пользователи

Ранг: Новичок

Сообщений: 29


Репутация:

6

±

Замечаний:
20% ±


Excel 2013

может быть попробуете все таки удалить например из файлов все кроме 1-2 строк или еще как то(архивом например) приложить файл…на данный момент не очень понятно, что там не так

 

Ответить

krosav4ig

Дата: Понедельник, 19.09.2016, 23:45 |
Сообщение № 3

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

Viper25, возможно у файлов разная структура (количество листов, их названия)
попробуйте такой запрос
[vba]

Код

let
    Папка = Folder.Files(«C:folder»),   
    Файлы = Table.SelectRows(
                Папка,
                each
                    Text.StartsWith(_[Extension], «.xls») and
                    not Text.StartsWith(_[Name], «~»)
            ),
    Книги = Table.CombineColumns(
                Table.SelectColumns(
                    Table.AddColumn(
                        Файлы,
                        «Workbook»,  
                        each
                            Table.SelectRows(
                    Excel.Workbook([Content]),
                    each
                    _[Kind] = «Sheet»
                            )
                    ),
                    {«Name», «Folder Path», «Workbook»}
                ),
                {«Folder Path», «Name»},
                Combiner.CombineTextByDelimiter(
                    «»,
                    QuoteStyle.None
                ),
                «File Path»
            ),
    Листы = Table.ExpandTableColumn(
                Книги,
                «Workbook»,
                {«Name», «Data», «Hidden»}
            )
in
    Листы

[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4igВторник, 20.09.2016, 01:15

 

Ответить

Viper25

Дата: Вторник, 20.09.2016, 12:42 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 93


Репутация:

4

±

Замечаний:
20% ±


Excel 2007

Удалось уменьшить файлы.

Сообщение отредактировал Viper25Вторник, 20.09.2016, 14:19

 

Ответить

Viper25

Дата: Вторник, 20.09.2016, 15:28 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 93


Репутация:

4

±

Замечаний:
20% ±


Excel 2007

krosav4ig, структура файлов одинакова, т.к. создавались путем копирования исходника.

 

Ответить

krosav4ig

Дата: Четверг, 22.09.2016, 03:43 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

пробуйте такой вариант
путь к папке для запроса берется из A1, при выделении этой ячейки открывается диалог для выбора папки
Если в папке будут файлы .xls, запрос выдаст ошибку

К сообщению приложен файл:

3077594.xlsm
(31.3 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4igЧетверг, 22.09.2016, 04:01

 

Ответить

Viper25

Дата: Четверг, 22.09.2016, 09:55 |
Сообщение № 7

Группа: Пользователи

Ранг: Участник

Сообщений: 93


Репутация:

4

±

Замечаний:
20% ±


Excel 2007

Хоть головой об стену.
Не формируется запрос «Из папки» на эти два файла.
Не могу понять что с ними.
ХЕЛП!!!

Сообщение отредактировал Viper25Четверг, 22.09.2016, 14:42

 

Ответить

krosav4ig

Дата: Четверг, 22.09.2016, 14:37 |
Сообщение № 8

Группа: Друзья

Ранг: Старожил

Сообщений: 2346


Репутация:

989

±

Замечаний:
0% ±


Excel 2007,2010,2013

Viper25, дело в том, что XLSX — это по сути архив, содержащий определенный набор xml файлов
PQ функция [vba][/vba] (она выполняется при нажатии на кнопочку с двумя стрелками вниз) не может корректно обработать данный тип файлов, и из-за этого на следующем шаге [vba]

Код

Excel.Workbook(#»Комбинированные двоичные значения»)

[/vba] вываливается ошибка
Да и при формате xls не будет корректного результата
Мой файл из предыдущего поста пробовали?


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4igЧетверг, 22.09.2016, 14:42

 

Ответить

Viper25

Дата: Четверг, 22.09.2016, 14:44 |
Сообщение № 9

Группа: Пользователи

Ранг: Участник

Сообщений: 93


Репутация:

4

±

Замечаний:
20% ±


Excel 2007

krosav4ig, пробовал.
Но не понял как его создать.

 

Ответить

Viper25

Дата: Четверг, 22.09.2016, 14:57 |
Сообщение № 10

Группа: Пользователи

Ранг: Участник

Сообщений: 93


Репутация:

4

±

Замечаний:
20% ±


Excel 2007

путь к папке для запроса берется из A1

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

Сообщение отредактировал Viper25Четверг, 22.09.2016, 15:51

 

Ответить

pupkin-terkin

Дата: Вторник, 27.12.2016, 16:41 |
Сообщение № 11

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


Excel 2013

Столкнулся с тем же вопросом (поисковик выдаёт эту тему) — насколько я понял всё дело в том что это путь для добавления txt или csv файлов. При добавлении файлов Excel надо в явном виде указать что импортируемые файлы имеют эту структуру.
Вместо колонки «binary» надо добавить пользовательский столбец с формулой

Код

=Excel.Workbook([Content])

Вот тут ещё пример (выходящий за рамки вопроса) с картинками:
http://www.poweredsolutions.co/2014….y-way-2

Сообщение отредактировал pupkin-terkinВторник, 27.12.2016, 16:42

 

Ответить

telnoff

Дата: Вторник, 12.11.2019, 14:27 |
Сообщение № 12

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Viper25, запоздалый ответ, но пусть он будет тут.
Все дело в том что когда ты указываешь папку откуда нужно взять файлы эксель, то он забирает все файлы. При этом в некторый момент, могут создавать временные файлы в этой же папке (например открыт какой то файл). И запрос автоматом забирает себе в перечень файлов и этот временный файл. Скорее всего там создавался временный файл экселя, начинается наименование файла с ~. И ввиду такого названия он автоматически становился первым в списке. Т.е. тебе нужно отфильтровать таблицу с перечнем файлов до того как эти файлы начнут считываться. Делается это в расширенном редакторе.
В Power Bi есть кое какая хитрая система вспомогательных запросов, ты о них не знаешь, но они создаются автоматически и в ходе работы ссылаются на них, так вот этот автоматический запрос также придется редактировать и ставить дополнительный фильтр на исключение временных файлов.

 

Ответить

Max_828898

Дата: Вторник, 06.04.2021, 08:17 |
Сообщение № 13

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2

Здравствуйте!
Помогите с такой проблемой, при создании запроса из папки, не выводит окно с навигатором, при этом загружает только один файл, т.е. в дальнейшем нет возможности соединить данные всех файлов в одну таблицу. Данный компьютер корпоративный и что либо самостоятельно переустановить невозможно. На домашнем экспериментировал, все получается. Офис установлен на корпоративном и домашнем 2016. При обращении к ИТ специалистам, говорят что Power Qwery установлен корректно, нужно где то отжать какую-нибудь галочку, но при это они не компетентны в данной программе. Где находится эта галочка или как сделать настройку, что бы выдавало окно Навигатор?

К сообщению приложен файл:

0934517.xls
(365.5 Kb)

 

Ответить

Pelena

Дата: Вторник, 06.04.2021, 08:43 |
Сообщение № 14

Группа: Админы

Ранг: Местный житель

Сообщений: 18874


Репутация:

4306

±

Замечаний:
±


Excel 2016 & Mac Excel

Здравствуйте.

при этом загружает только один файл

на третьем скрине видно, что загружено 12 файлов

Где находится эта галочка

посмотрите в параметрах запроса (Создать запрос — Параметры запроса)

И общая рекомендация: загрузите последние обновления. У меня, например, даже окно выбора папки выглядит по-другому


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Max_828898

Дата: Вторник, 06.04.2021, 13:47 |
Сообщение № 15

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2

Создать запрос — Параметры запроса

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

 

Ответить

Pelena

Дата: Вторник, 06.04.2021, 20:04 |
Сообщение № 16

Группа: Админы

Ранг: Местный житель

Сообщений: 18874


Репутация:

4306

±

Замечаний:
±


Excel 2016 & Mac Excel

не выводит окно с навигатором

окно с навигатором можно вывести из редактора PQ, кликнув по кнопке

К сообщению приложен файл:

6478933.jpg
(5.0 Kb)


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Just like any other language, Power Query has its own different types of errors, one of them is DataFormat Error.

Dataformat errors in Power Query are mostly data type errors and do not prevent you from loading data to Power BI, instead the cells will be loaded as blank. The screenshot below shows 3 errors for 78 records when the data is loaded to Power BI.

To audit the error or get more details, do the following:

  1.  Click on View errors from above to go back to Power Query Editor
  2. In Power Query Editor-> Select View tab -> Check Column Quality

For this example, UnitsInStock has 3% error for all rows in that column.

3. Click on Kept Errors under Applied Steps to see only rows with errors, the Kept Errors step is automatically added when you click on View errors from step 1.

Below screenshot show 100% error for the 3 rows.

4. To see details of the error, select the error as seeing below:

For this example, the error occurs because the column data type is Number, but 3 rows in the column has Text values, Power Query return error because it cannot convert the Text values to Numbers.

DataFormat.Error: We couldn’t convert to Number

5. To audit the error, create a custom column using the try expression, from Add column -> Custom Column -> type the expression below. A new Record column will be created.

6. Click on Expand -> Select Error

7. Click Expand again -> Click OK

You will see the Reason, Message and Detail of the error. You can load the error details to Power BI and create an Audit report if needed.

Also, you can use this report to make changes to the affected values at Data source level and reload to Power BI.

8. To replace the errors in Power Query from Advanced Editor, add a line of code to the MQuery with the value to replace with.

For this example, I am replacing all errors with 0. Optionally, you can replace the errors by right clicking the column, then select Replace Error.

Note: Those new values from Power Query will not be updated to your source data.

9. Click on Enable Load to load the data to Power BI if its not enabled by default, right click on the query from the left and select Enable load.

10. Click Close and Apply

The data will now load and apply all changes successfully without errors.

Happy Auditing! 🙂

  • Remove From My Forums
  • Question

  • Hi I have receive a the error «DataFormat.Error — Details: Binary», when I tried to refresh the file with the sources. I already tried to:

    — open the file in Excel directly to test if excel shows restricted Access message,.

    Save As command to confirm whether «Save as type» is the Excel workbook format: (*.xlsx)

    Nothing works. Do you have any idea what it could be?

    Thanks in advance!

    Regards. Alberto.

Answers

  • Can you provide the following details about the origin of the Excel file:

    • How was it created?
      • Excel version?
      • Web service?
    • Is the file password protected?
    • Does the file contain anything other than data, e.g.:
      • Does the file contain any VBA or macros?
      • Does the file contain any connections?
      • Does the file contain any charts, pivot tables or PowerView sheets?
      • Does the file contain a data model?
    • Can you create a similar file with fake data in it that exhibits the problem?

    Thanks, Hadeel

    • Edited by

      Thursday, April 30, 2015 8:31 PM

    • Proposed as answer by
      Ed Price — MSFTMicrosoft employee
      Wednesday, May 6, 2015 6:28 AM
    • Marked as answer by
      Ed Price — MSFTMicrosoft employee
      Saturday, June 6, 2015 3:12 AM

Hi,

Please see the code below (sorry, been trying to edit it but the functionality won’t let me use the code style):

let
Source = Access.Database(File.Contents(«C:UsersNavGanpatDesktopFILENAME.accdb»), [CreateNavigationProperties=true]),
_Blotter = Source{[Schema=»»,Item=»XXX»]}[Data],
#»Filtered Rows2″ = Table.SelectRows(XXX, each true),
#»Removed Columns» = Table.RemoveColumns(#»Filtered Rows2″,{«XXX»}),
#»Merged Queries» = Table.NestedJoin(#»Removed Columns», {«XXX»}, XXX, {«XXX»}, «XXX», JoinKind.LeftOuter),
#»Expanded Static» = Table.ExpandTableColumn(#»Merged Queries», «XXX», {«XXX»}),
#»Removed Columns1″ = Table.RemoveColumns(#»Expanded Static»,{«XXX», «XXX»}),
#»Filtered Rows» = Table.SelectRows(#»Removed Columns1″, each [XXX] < #datetime(2021, 10, 1, 0, 0, 0))
in
#»Filtered Rows»

Thanks,

Naveen

Earlier this month I published a new and very practical Power BI app on Microsoft AppSource. The app audits Excel workbooks and detects changes and errors. To implement the app I needed to resolve key obstacles that are very common when you import Excel workbooks using Power Query. How do you import the data from Excel if you have formula errors in unpredictable cells?

In today’s tutorial, you will learn how to avoid these errors when you import the data from Excel to Power Query. As a bonus, you will also learn to detect the erroneous cells and find out the type of errors and their coordinates, so if needed, you can report back to the owners of the workbooks and ask them to fix these errors.

The Challenge

Let’s examine a very simple table in Excel as shown in the screenshot below (You can download it here). You can see that we have errors in the Price and Amount columns. Formula errors in Excel are very common. Sometimes, these errors are kept by design, sometimes, they are there by mistake.

When you import data from Excel using Power Query, you may find in the preview pane the errors. But oftentimes, when you deal with a very large dataset, you may completely miss them.

If you load the data as-is, without further transformations, Power Query will remove the errors when you load the data. But in many cases, once you start performing transformations on any columns that have errors, you will end up with refresh errors. Let’s try it out.

Import the Excel (here), convert the type of the Price column to Fixed decimal number (or let the auto-detection of column types work its black-magic), and apply any filter on Price. For example, in the screenshot below, I applied a greater than 100 filter.

You can notice that the last row in the preview pane has errors.
Click Close & Apply in Power Query Editor (using Power BI), or Close & Load (If you use Power Query in Excel). You will notice the following error: OLE DB or ODBC error: [DataFormat.Error] Invalid cell value…
If you don’t apply any filter on the Price column, and instead apply a filter on the Amount column, you will see this error on the preview pane.
Loading the query will show a similar error. This time, showing the division by zero error instead of the missing value.

I am sure you have seen these errors before. In the next sections, we will discuss possible solutions.

Removing Rows with Errors

One of the common approaches to resolve the errors is to filter out rows with errors. To do it, you can right-click on the headers of the columns with the errors (In our case, Price and Amount), and select Remove Errors in the shortcut menu.

This step will remove rows that have errors in the selected columns. This approach may be too harsh. Oftentimes, you may know the root cause for the errors and apply some logic that to workaround the errors instead of ignoring the entire rows.

Still, let’s assume that you have no options, and need to remove the errors. We can make your challenge more interesting, and say that you need to remove rows if you find errors in ANY column. How would you approach it?

Looking at the M formula after you removed the errors for columns Price and Amount, you can see that the column names were explicitly called out in the formula, using a list.

= Table.RemoveRowsWithErrors(#"Changed Type", {"Price", "Amount"})

To remove rows with errors for any columns, you can replace the static list with the function Table.ColumnNames. Here is the modified formula:

= Table.RemoveRowsWithErrors(#"Changed Type", Table.ColumnNames(#"Changed Type"))

Note that in the formula above, in my example, I had #”Changed Type” as the last step in Applied Steps, so I used it as the parameter for Table.ColumnNames. When you apply this technique on your own data, you will have a different step name and will need to copy it as the relevant parameter.

Replacing Errors with other Values

A more common approach to handle errors in Power Query and avoid the refresh errors, is to replace the errors with values. For example, you will oftentimes want to replace the errors with nulls.

Replacing the errors for a single column is very discoverable. You right-click on the column’s header and select Replace Errors in the

But in our example, we have two columns with errors. See, what happens when you select both Price and Amount. Right-clicking on one of their headers, will not have an option for Replace Errors. But when something is missing in one UI element, it doesn’t mean that this functionality is not supported. Let’s look for it in the ribbon.

After careful inspection, you can see that in the Transform tab, we have the Replace Errors option after you click the drop-down of Replace Values. We found the hidden functionality.
In the Replace Errors dialog box, you can enter null, or the value you wish to use as a replacement for the errors. Then click OK.

You can see in the formula bar the following line:

= Table.ReplaceErrorValues(#"Changed Type", {{"Price", null}, {"Amount", null}})

We now have a different format in M to replace the errors. You can see a list of pairs. Each pair includes the column name and the null value.

What would you do to replace errors with nulls when you don’t know in which columns you have the errors? Here is the solution using Table.ColumnNames and List.Transform.

= Table.ReplaceErrorValues(#"Changed Type", List.Transform(Table.ColumnNames(#"Changed Type"), each {_,null}))

The formula above gets the list of column names and transform them into the required pairs of column name and null. If you are not sure how it works, don’t worry. You can apply it to any table you have in the future, by clicking the fx button in the formula bar, and then copy the formula above. Don’t forget to replace the two occurrences of #”Changed Type” with the last step name of your table. If you have spaces or special characters in the last step, use the #”…” wrapper.

Detecting Errors

So far we have learned to remove formula errors or replace the errors with values. Now, let’s move to a more advanced scenario. Imagine that after you resolved the errors, you still want to dynamically detect these errors and report them to the Excel workbook’s owner.

In this section, you will learn how to do it.

Note: if this use-case has a very high value for you, you can install my Excel Compare app from AppSource here, and use it to report the errors in Excel.

If you are an advanced Power Query user and wish to detect Excel formula errors in Power Query across many workbooks, you can create the following custom function in Power Query:

(tbl) =>
let
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(tbl, {"ID"}, "Column", "Value"),
    #"Kept Errors" = Table.SelectRowsWithErrors(#"Unpivoted Columns", {"Value"}),
    #"Added Custom" = Table.AddColumn(#"Kept Errors", "Custom", each try [Value]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Value"}),
    #"Expanded Custom" = Table.ExpandRecordColumn(#"Removed Columns", "Custom", {"Error"}, {"Error"}),
    #"Expanded Error" = Table.ExpandRecordColumn(#"Expanded Custom", "Error", {"Reason", "Message", "Detail"}, {"Reason", "Message", "Detail"})
in
    #"Expanded Error"

Name the custom function FnDetectErrorsInWorksheet.

Before you use the function, make sure you have a column ID in the table. If you don’t have one, you can create it using the Add Index button in Add Column tab. To apply the function on your table, you can invoke the FnDetectErrorsInWorksheet on your table. For example, if the table with the errors is represented in the Table query, this formula will do the trick.

= FnDetectErrorsInWorksheet(Table)

How to detect errors step by step

If you want to learn how to detect the errors without the custom function above, let’s show you the steps in the UI. You will find it very easy.

On the Queries pane, select the query with the errors. Right-click on it and select Reference in the shortcut menu. Name the new query Detect Errors.

Right-click on the header of ID column, and select Unpivot Other Columns. Now, all the data in the Excel table is rebuilt as the value and its coordinates. ID represents the row. The Attribute column represents the column name, and the Value column represents the value in the original Excel table. You can see that the Value column contains the errors.

Right-click on the header of the Value column.

In Home tab, select Keep Rows, and then select Keep Errors.

You are now left with the errors only. You already know at this stage where errors are located.

But can you tell what kind of errors were detected? To do it, we will add a custom column. In Add Column tab, click Custom Column.

In the Custom Column dialog box, enter the formula:

try [Value]

This formula returns a record with the details of the error. You can learn more about the try statement here and check out the latest official error handling article here.

It’s time to move on. Click OK and close the Custom Column dialog box.

Click the expand control in the Custom column header.

Select HasError and Error fields and click OK.

Click the expand control in the Error column header. Select the fields Reason, Message, and Detail, and then click OK.

You can now see that we extracted the specific Excel formula errors in the Message column. From here, you only need to load the Detect Errors query and build a nice report to notify your colleagues when they have errors in Excel.

Did you find this tutorial helpful? Do you want to learn more?

Schedule a very special Power BI or Power Query training for your team. Learn more here.

Понравилась статья? Поделить с друзьями:
  • Патчи для исправления ошибок
  • Патчер для amd видеокарт ошибка 43
  • Патч для rx 570 ошибка 43 скачать
  • Патч для far cry 5 от ошибки 000001
  • Патч rx470 ошибка 43