Jun 13 2021
07:37 PM
Hello everyone,
I’m trying to merge multiple excel files into one spreadsheet using Power Query, but I receive the following error when doing so:
An error occurred in the ‘Transform File’ query. Expression.Error: The key didn’t match any rows in the table.
Details:
Key=
Item=Client Lists
Kind=Sheet
Table=
Now a bit of information on my data sheets. The workbooks I’m trying to combine are tabled and also contain 2 tabs each. I’m trying to specifically combine 1 of the tabs from each sheet. In the Power Query navigator, it shows the options of ‘Table’ and the named tab I want to focus on.
I tried to separate the 1 specific tab into one book and ensured all of my books have the exact same headers. When I try to combine I still receive the same error.
Do I have to un-table my sheets? Or do I have to create a new book for the specific sheet I’m looking to combine? Please help!
-
All Discussions -
Previous Discussion -
Next Discussion
17 Replies
Jun 14 2021
01:40 AM
@Ozz_Kozz
I guess you use From Folder connector. For it both files shall have the same structure. If you select ‘Client Lists’ sheet for sample (first) file, sheet with the same name shall be in another file. If you combine based on structured tables, they shall have the same name in all files.
Jun 21 2021
02:17 PM
@Ozz_Kozz
The column data types on both table must be the same.
What kind of join did you select in your merge query?
cheers
Jun 21 2021
03:08 PM
@Sergei Baklan,
So which is it that’s creating the error message since you already re-created the error
Jun 21 2021
03:11 PM
@Yea_So
That’s in my very first answer above
Jun 21 2021
03:29 PM
@Sergei Baklan
Yes and I my response was to supplement your response and make sure that the data type details and my join type question is not overlooked by the user which is not mentioned in your response.
«I guess you use From Folder connector. For it both files shall have the same structure. If you select ‘Client Lists’ sheet for sample (first) file, sheet with the same name shall be in another file. If you combine based on structured tables, they shall have the same name in all files.»
Aug 03 2021
10:22 AM
I had a similar problem and for me the solution was simple. I just made the names of the worksheets in each workbook identical. I had 10 excel files, eg. USA.xlsx, China.xlsx, UK.xlsx, etc, each with one worksheet. I simply renamed the worksheet in each file as «SomeName» and that solved my problem.
Aug 27 2021
04:36 AM
@PGonzaga You are a genius. Simple and fast solution. Thanks you mate.
Sep 14 2021
06:41 PM
@Ozz_Kozz I built couple of PQs, one for Master and other for comparison. Now when I merged queries for vlookup, I’m getting the same error and that’s what I expected as there were no matching records. I want to go to next step and work on those records, but PQ doesn’t allow me to Close & Load due to this. Does anyone overcome this or what’s the work around?
Oct 19 2021
06:38 AM
It worked for me, thanks!
May 17 2022
01:25 PM
@Ozz_Kozz
I found this video on Ewetoob, on how to fix this. Very easy.
Basically, the worksheets within each book have different names, PQ is looking for the same name. You can have it look by an index number instead, probably 0 if there’s only one sheet in each workbook.
Open the editor. Select «Transform Sample File» in the Queries Pane (left side).
Select «Navigation» in the Applied Steps pane (right side).
Change the formula to
= Source{0}[Data]
That should fix it!
Jun 03 2022
04:08 PM
@PGonzaga
The simplest solution to a common problem experienced by most people the first time they try to use Power Query to merge Excel documents.
Just make the name of the worksheet the same in each file containing data. That is all.
How many pages full of incomprehensible and complicated answers that were impossible to implement did I have to get through just to find this simple answer? Lots.
Jun 03 2022
04:15 PM
I’ve been struggling for three hours trying to combine 56 Excel spreadsheets with over 26,000 records and this is the first answer that fixed the problem first-try. Thank you x1.000!
Mar 04 2023
05:13 AM
@Sergei Baklan
I have the same error, However Im simply trying to load and save the power query from a single excel file, having only one worksheet. In fact it is from one of the Tutorials and sample files from Kevin Stratvert. All simple tutorial steps followed. single file, single works sheet «Order Data». No merge step required. However same error. Is there a bug with using the Folder Source connection? Thanks for any reply.
KR, alx
Mar 09 2023
04:08 AM
@alxjcbs
Do you use From Folder connector? Are there any other files in this folder? On which step do you have an error?
Собственно сабж. P/S/ я конечно, пожалуй, не умру от переработки, ежели просмотрю глазками 20 файлов в папке. Но это же не наш метод ) Компьютер никогда не заменит человека (©️ Hannibal Lecter) |
|
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
И вам здрасьте. Вот горшок пустой, он предмет простой… |
Сергей Евдокимов Пользователь Сообщений: 442 (Win’11-Excel’21/365) |
#3 10.03.2021 10:21:14
Ставка не сработала. Отныне вы несостоятельный должник. Прошу покинуть казино. Компьютер никогда не заменит человека (©️ Hannibal Lecter) |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#4 10.03.2021 10:52:40
Какое замечательное описание. Под это подходит и — файл содержит данные структуры png изображения, а в нём пытаются найти лист с заданным именем. |
||
Сергей Евдокимов Пользователь Сообщений: 442 (Win’11-Excel’21/365) |
#5 10.03.2021 11:24:05
Совершенно верно, Андрей. Вот понять бы, как ошибку впредь находить по-умному. Например, указывал бы где запрос на файл с этой ошибкой… Изменено: Сергей Евдокимов — 10.03.2021 11:27:31 Компьютер никогда не заменит человека (©️ Hannibal Lecter) |
||
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
Сергей Евдокимов, показали б вы еще запрос. Вот горшок пустой, он предмет простой… |
Xel Пользователь Сообщений: 393 |
#7 10.03.2021 12:14:37
С этой — это чтобы показывал, где просто что-то как-то не так? http://button.dekel.ru/ |
||
Сергей Евдокимов Пользователь Сообщений: 442 (Win’11-Excel’21/365) |
#8 10.03.2021 13:10:29
Точно можно кликать ? Я нынче мнительный стал, (аки недоверчевый) Прикрепленные файлы
Изменено: Сергей Евдокимов — 10.03.2021 13:20:26 Компьютер никогда не заменит человека (©️ Hannibal Lecter) |
||
Сергей Евдокимов Пользователь Сообщений: 442 (Win’11-Excel’21/365) |
#9 10.03.2021 13:19:56
Запрос-то полностью рабочий. Проблема была в исходном файле (одном из множества). Убрал кривой файл, все заработало. Я вообще про принцип. Как искать такие ошибки ? Чиво крутить, што жать ? (если дело не в запросе) Компьютер никогда не заменит человека (©️ Hannibal Lecter) |
||
StepanWolkoff Пользователь Сообщений: 1252 |
#10 10.03.2021 14:00:12
Если вы делаете загрузку однотипных файлов из папки с помощью функции, то на шаге добавления функции видно будет где ошибка. Прикрепленные файлы
|
||
Сергей Евдокимов Пользователь Сообщений: 442 (Win’11-Excel’21/365) |
#11 01.10.2022 06:03:16
Именно так и делаю. Где ошибка — вижу. А причину ее появления пронять/устранить — не могу. Были файлы формата .xlsx Все прекрасно работало. Подскажите, плиз, советом добрым.
ДОПОЛНЕНИЕ: всё, помощи не надо. Ошибка пропала. Один в один переписал функцию, но на основе файла .xlsb Изменено: Сергей Евдокимов — 01.10.2022 06:34:02 Компьютер никогда не заменит человека (©️ Hannibal Lecter) |
|||||
I figured out the cause of my problem and the solution. The issue is that the row in my template query was being referenced incorrectly (i.e., the primary key between the template query and the regular query is wrong, and it has hard-coding of sheet names). To fix that, I had to remove all other columns in the template query table except the Data column, as described here. (It’s odd that no MS documentation on combining multiple Excel files discusses this very important step.)
For comparison, here is my former (incorrect) M code:
Transform Sample File:
let
Source = Excel.Workbook(Parameter1, null, true),
#"Sample_Sheet" = Source{[Item="sample",Kind="Sheet"]}[Data],
#"Promoted Headers" = Table.PromoteHeaders(#"Sample_Sheet", [PromoteAllScalars=true])
in
#"Promoted Headers"
test:
let
Source = Folder.Files("C:some folder path"),
#"Filtered Hidden Files1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
#"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File", each #"Transform File"([Content])),
#"Renamed Columns1" = Table.RenameColumns(#"Invoke Custom Function1", {"Name", "Source.Name"}),
#"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File"}),
#"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File", Table.ColumnNames(#"Transform File"(#"Sample File"))),
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Table Column1",{{"Source.Name", type text}, {"ID", type text}, {"Name", type text}})
in
#"Changed Type"
And here is my new (correct) code:
Transform Sample File:
let
Source = Excel.Workbook(Parameter1, null, true),
#"Removed Columns" = Table.RemoveColumns(Source,{"Name", "Item", "Kind", "Hidden"}),
Data = #"Removed Columns"{0}[Data],
#"Promoted Headers" = Table.PromoteHeaders(Data, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"ID", type text}, {"Name", type text}})
in
#"Changed Type"
test:
let
Source = Folder.Files("C:some folder path"),
#"Filtered Hidden Files1" = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true),
#"Invoke Custom Function1" = Table.AddColumn(#"Filtered Hidden Files1", "Transform File", each #"Transform File"([Content])),
#"Renamed Columns1" = Table.RenameColumns(#"Invoke Custom Function1", {"Name", "Source.Name"}),
#"Removed Other Columns1" = Table.SelectColumns(#"Renamed Columns1", {"Source.Name", "Transform File"}),
#"Expanded Table Column1" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File", Table.ColumnNames(#"Transform File"(#"Sample File")))
in
#"Expanded Table Column1"
Notice the ‘Removed Columns’ step in the new template query. This is the «secret sauce» to the key problem. Also notice that I kept all default steps after my ‘Data’ step (i.e., ‘Promoted Headers’ and ‘Changed Type’) in my template query. This is because all of my sheets have the same schema. If this weren’t true, then I would need to move those steps to the regular query.
Обработка ошибок в Power Query с помощью попытки в противном случае — советы и рекомендации по Power BI №32
Я пытаюсь загрузить (объединить) несколько файлов Excel в Power BI (версия от октября 2019 г.). В каждом файле всего 1 лист. Каждый лист имеет 1 диапазон, и каждый диапазон имеет одинаковую схему для всех файлов. (Хотя названия листов разные.) Имя образца листа — «200704».
Вот мои шаги:
- Получить данные папку подключить
- укажите путь к папке
- Объединить и загрузить
- выберите один из файлов в качестве моего файла образца; щелкните имя файла как мой Параметр1; нажмите ОК
После того, как я нажму «ОК», курсор немного покрутится, а затем остановится. Ничего не произошло. Итак, я перехожу в Edit Queries Edit Queries. В моем запросе данных есть предупреждающий символ, который гласит:
Произошла ошибка в запросе «Преобразовать файл». Expression.Error: ключ не соответствует ни одной строке в таблице.
Подробности: Ключ = Элемент = 200704 Вид = Лист Таблица = [Таблица]
Как мне исправить эту ошибку?
Если это поможет, Power BI сгенерирует для меня 5 запросов со следующей структурой:
- Преобразовать файл из данных [2]
- Вспомогательные запросы [3]
- Параметр1 (образец файла)
- Образец файла
- Преобразовать файл
- Файл-образец преобразования
- Другие запросы [1]
- данные
Интересно, что если это помогает диагностировать проблему, если я установил образец файла = Первый файл или если я вручную установил образец файла для своего первого файла, в диалоговом окне выдается следующая ошибка, но она не показывает, какой запрос ошибочен. когда я пытаюсь просмотреть / отредактировать запрос.
Не удалось сохранить изменения на сервере. Возвращена ошибка: «Ошибка OLE DB или ODBC: [Expression.Error] Ключ не соответствует ни одной строке в таблице ..».
И, конечно же, когда я пытаюсь загрузить этот файл (или любой файл в папке, если на то пошло) индивидуально (через соединение с Excel), он загружается успешно. Итак, что-то должно быть не так с кодом M в моем подключении к папке.
- Вы пытались выяснить, есть ли что-нибудь в вашем
200704
лист отличается от любых других листов в папке? Структура, форматирование и т. Д.
Я выяснил причину своей проблемы и решение. Проблема в том, что на строку в моем запросе шаблона ссылались неправильно (т.е. первичный ключ между запросом шаблона и обычным запросом неверен, и в нем жестко заданы имена листов). Чтобы исправить это, мне пришлось удалить все другие столбцы в таблице запроса шаблона, кроме столбца данных, как описано здесь. (Странно, что никакой документации MS по объединению нескольких файлов Excel не обсуждает этот очень важный шаг.)
Для сравнения вот мой бывший (неверный) M-код:
Файл-образец преобразования:
let Source = Excel.Workbook(Parameter1, null, true), #'Sample_Sheet' = Source{[Item='sample',Kind='Sheet']}[Data], #'Promoted Headers' = Table.PromoteHeaders(#'Sample_Sheet', [PromoteAllScalars=true]) in #'Promoted Headers'
контрольная работа:
let Source = Folder.Files('C:some folder path'), #'Filtered Hidden Files1' = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true), #'Invoke Custom Function1' = Table.AddColumn(#'Filtered Hidden Files1', 'Transform File', each #'Transform File'([Content])), #'Renamed Columns1' = Table.RenameColumns(#'Invoke Custom Function1', {'Name', 'Source.Name'}), #'Removed Other Columns1' = Table.SelectColumns(#'Renamed Columns1', {'Source.Name', 'Transform File'}), #'Expanded Table Column1' = Table.ExpandTableColumn(#'Removed Other Columns1', 'Transform File', Table.ColumnNames(#'Transform File'(#'Sample File'))), #'Changed Type' = Table.TransformColumnTypes(#'Expanded Table Column1',{{'Source.Name', type text}, {'ID', type text}, {'Name', type text}}) in #'Changed Type'
А вот мой новый (правильный) код:
Файл-образец преобразования:
let Source = Excel.Workbook(Parameter1, null, true), #'Removed Columns' = Table.RemoveColumns(Source,{'Name', 'Item', 'Kind', 'Hidden'}), Data = #'Removed Columns'{0}[Data], #'Promoted Headers' = Table.PromoteHeaders(Data, [PromoteAllScalars=true]), #'Changed Type' = Table.TransformColumnTypes(#'Promoted Headers',{{'ID', type text}, {'Name', type text}}) in #'Changed Type'
контрольная работа:
let Source = Folder.Files('C:some folder path'), #'Filtered Hidden Files1' = Table.SelectRows(Source, each [Attributes]?[Hidden]? <> true), #'Invoke Custom Function1' = Table.AddColumn(#'Filtered Hidden Files1', 'Transform File', each #'Transform File'([Content])), #'Renamed Columns1' = Table.RenameColumns(#'Invoke Custom Function1', {'Name', 'Source.Name'}), #'Removed Other Columns1' = Table.SelectColumns(#'Renamed Columns1', {'Source.Name', 'Transform File'}), #'Expanded Table Column1' = Table.ExpandTableColumn(#'Removed Other Columns1', 'Transform File', Table.ColumnNames(#'Transform File'(#'Sample File'))) in #'Expanded Table Column1'
Обратите внимание на шаг «Удаленные столбцы» в новом шаблоне запроса. Это «секретный соус» к ключевой проблеме. Также обратите внимание, что я сохранил все шаги по умолчанию после моего шага «Данные» (т.е. «Продвинутые заголовки» и «Измененный тип») в моем шаблоне запроса. Это потому, что все мои листы имеют одинаковую схему. Если бы это было не так, мне пришлось бы переместить эти шаги в обычный запрос.
- Это решение требуется, когда в книгах используются разные имена листов. В противном случае достаточно простого «Объединить и загрузить».
- У меня возникли проблемы с загрузкой данных из Smartsheet, и я использовал ваш ответ для навигации по своим справочным вопросам. Сначала я загрузил данные из нового расположения моих справочных таблиц. Во-вторых, я скопировал код навигации в существующие таблицы. Я получил сообщение об ошибке, спрашивающее, хочу ли я «отредактировать настройки» для источника данных, поскольку они не давали таблиц из исходной папки, из которой я загрузил справочные таблицы. Затем я смог получить доступ к возможности редактировать ссылку и просмотрел папки, чтобы найти расположение моих новых таблиц. В-третьих, я удалил все повторяющиеся таблицы, в результате
Tweet
Share
Link
Plus
Send
Send
Pin
У меня есть десятки файлов Excel с похожей таблицей (означает: одно и то же имя, одинаковые заголовки, разное содержимое). Я хотел бы объединить все данные из этих таблиц в одну большую таблицу для дальнейшей обработки.
Я делал это много раз, прежде чем использовать эти шаги (у меня не английская версия, поэтому строки могут немного отличаться):
Power Query
>From file
(вLoad external data
Раздел)>From folder
- В диалоговом окне со списком файлов Excel в папке
Combine and load
- В окне
Combine files
выберите желаемое имя таблицы.
Теперь у меня обычно получается одна большая объединенная таблица. Но за один комплект я получаю [Expression.Error]: The key did not match any rows in the table
В окне редактора запросов есть несколько файлов, загруженных ОК, а затем он заканчивается целой строкой, заполненной Error
.
Это можно легко обойти, установив флажок «Пропускать файлы с ошибками» в step 3
, но я хотел бы знать, какие файлы вызывают эту ошибку.
Как их найти?