Извините за длину этого ответа, но есть много шагов, и я также включил немало скриншотов.Я считаю, что это решение делает то, что вы ищете.
Я начинаю с файлов в папке:
Feb-19.xlsx содержит две вкладки:
Jan-19.xlsx содержит три вкладки:
Я открываю новый файл Excel, затем нажимаю Данные> Новый запрос> Из файла>Из папки «Папка» и введите или используйте кнопку «Обзор», чтобы перейти к папке, в которой находятся файлы.(Когда я перехожу к своей папке OneDrive, в моем пути есть SkyDrive.old, но это моя папка OneDrive, которую вы видели на первом изображении выше.) Затем я нажимаю ОК:
Затем я нажимаю Преобразовать данные:
Появляется:
Я нажимаю Главная> Управление параметрами (слова, со стрелкой раскрывающегося списка)> Новый параметр и настраиваю его следующим образом, и нажимаю ОК.
После нажатия OK появляется:
Вывидно, что я ввел путь к папке, в которой находятся файлы.Я могу изменить это значение параметра позже, если я хочу использовать другой путь к папке.
Чтобы сделать это, я бы нажал на левой панели.Щелчок по нему приведет меня в то же место, где я могу отредактировать значение.
Теперь я нажимаю на запрос, который я уже начал.В настоящее время это единственный другой элемент в левой панели.Нажав на нее, вы снова увидите это на экране:
Я редактирую текст в строке формул, заменяя "C:\Users\MARC_000\SkyDrive.old\Test"
на FolderPath
.В результате получается та же таблица, но в строке формул Folder.Files(FolderPath)
.Теперь вместо использования жестко запрограммированной ссылки в запросе используется значение параметра.
Затем, просто потому, что я этого хочу, я изменил имя запроса на «Основной запрос».Вы можете сделать это, щелкнув запрос в левой панели, а затем изменив имя в разделе СВОЙСТВА в верхней части правой панели.
Далее я выберу Content и Имя столбцы, а затем Главная> Удалить столбцы (слова со стрелкой раскрывающегося списка)> Удалить другие столбцы, чтобы получить это:
Затем я нажимаю кнопку , чтобы объединить файлы в столбце Содержимое , которое вызывает это всплывающее окно.Затем я щелкаю только по папке, и затем OK.
Теперь на левой панели есть еще записи запросов:
Я нажимаю на новый запрос, Преобразовать файл образца из теста , и вижу это:
Я выбираю столбцы Данные и Элемент , а затем Главная> Удалить столбцы (слова со стрелкой раскрывающегося списка)> Удалить другиеСтолбцы, чтобы получить это:
--- СМОТРИТЕ РЕДАКТИРОВАТЬ ВНУТРИ ОТВЕТА, КОТОРЫЙ ЗАМЕНИТ СЛЕДУЮЩИЙ ---
Затем я нажимаю кнопку , чтобы развернуть таблицы в столбце Данные , что вызывает это всплывающее окно.Затем я снимаю флажок рядом с «Использовать исходное имя столбца в качестве префикса» и нажимаю ОК.
--ВЕРНУТЬСЯ ИЗ РЕДАКТИРОВАНИЯ ВНИЗ ОТВЕТА, ЧТОБЫ ПРОДОЛЖИТЬ ---
Что приводит к этому:
Затем я фильтруюпустые значения из столбца Column1 .(Нажмите стрелку вниз в верхней части столбца и отмените выбор пустого значения.)
Затем я нажимаю Добавить столбец> Условный столбец, настраиваю его следующим образом и нажимаю кнопку ОК:
Что дает это:
Затем я выбираю новый Пользовательский столбец и нажимаю Преобразование> Заливка> Вниз, чтобы получить это:
ЗатемЯ отфильтровываю записи «Сводка (Сумма)» и «Сводка (Единицы)» из столбца Столбец1 .(Нажмите стрелку вниз в верхней части столбца и отмените выбор «Сводка (сумма)» и «Сводка (единицы)».) Что приводит к этому:
Теперь я возвращаюсь к основному запросу.Другими словами, нажмите на основной запрос на левой панели.Там будет «проблема».Все, что мне нужно сделать, это удалить последний APPLIED STEP на правой панели: измененный тип.Как только я удаляю это, все хорошо, и я вижу это:
Но я также хочу имена файлов, поэтому я нажимаю на ПРИМЕНЕННЫЙ ШАГ, которыйперед выбранным в данный момент «Расширенным файлом преобразования из теста», поэтому я нажимаю «Удаленные другие столбцы 1», а в строке формул я изменяю код с Table.SelectColumns(#"Filtered Hidden Files1", {"Transform File from Test"})
на Table.SelectColumns(#"Filtered Hidden Files1", {"Transform File from Test", "Name"})
.Это добавляет столбец Имя , и я вижу это:
Затем я возвращаюсь к последнему ПРИМЕНЕННОМУ ШАГУ, который "Расширенный файл преобразования из теста ", и теперь я вижу это:
Затем я нажимаю Преобразование> Использовать первую строку в качестве заголовков и получаю это:
Затем я переименую столбец DE в Лист и Фев-19.xlsx столбец Имя файла .
Затем я отфильтровываю записи "Custname" из столбца Custname .(Нажмите стрелку вниз в верхней части столбца и снимите флажок «Custname».) Что приводит к этому:
Затем я изменил порядок столбцов, чтобы получитьэто:
Затем я выбираю столбец Сводный тип и нажимаю Преобразовать> Группировать по, и заполняю всплывающее окнопоставьте флажок в этом поле и нажмите ОК:
Что приводит к этому (это две ваши таблицы):
Итак, я щелкаю правой кнопкой мыши по Основному запросу на левой панели и выбираю Ссылка.Это дает мне новый запрос с именем Main Query (2), с таблицей, которая выглядит так же, как на последнем изображении выше.Теперь я нажимаю на таблицу в строке Сводка (Единицы) и получаю это:
Затем я повторяю процесс для Сводки (Сумма): Iщелкните правой кнопкой мыши Основной запрос на левой панели, выберите Ссылка, а затем щелкните таблицу в строке Сводка (сумма) нового запроса, чтобы получить это:
Наконец, я переименую два новейших запроса "Сводка (единицы)" и "Сводка (сумма)"
Когда вы закроете и загрузите, это даст вам три новых рабочих листа.По одному на каждый запрос.Если вам не нужен рабочий лист для основного запроса (если вам нужны только сводка (единицы) и сводка (сумма)), то после закрытия, загрузки и возврата в Excel , нажмите Данные>Показать запросы.Затем щелкните правой кнопкой мыши Основной запрос на правой панели и нажмите «Загрузить в», затем выберите «Только создать соединение» и нажмите «Загрузить».Нажмите «Продолжить», когда получите предупреждение о потере данных.
Еще одна последняя вещь: , а не поместите книгу Excel, содержащую этот запрос, в свою исходную папку с файлами, которые она получает.информация от.Держите его отдельно.
--- Изменения для размещения верхних строк с транзакционной информацией ---
Я добавляю следующее для работы с листами, которые могут иметь строкиинформации выше сводных таблиц.Вот что я придумал:
В ответе выше, начиная сразу после шага, на котором я сказал: я выбираю столбцы Data и Item , а затем Home> Удалить столбцы (слова со стрелкой раскрывающегося списка)> Удалить другие столбцы, чтобы получить следующее:
Теперь я добавлю еще один столбец (ДобавитьСтолбец> Пользовательский столбец), и я настроил его следующим образом:
Это дублирует столбец Data , но добавляет индекс в каждой из вложенных таблиц, например:
Затем я добавляю еще один столбец, чтобы определить порядковый номер, связанный с началом каждой сводки в каждой вложенной таблице:
( Возможно, вы захотите найти«Сводка (» или «Сводка (Единицы)» вместо «Сводка» )
Обратите внимание, что он составлен аналогично предыдущему столбцу, поскольку он в основном является дубликатом Indexed столбец, только с добавленным в каждую вложенную таблицу столбцом Сводный индекс .
Затем я добавляю еще один столбец, напримерэто, чтобы определить позицию индекса первой строки первой Сводной таблицы для каждой вложенной таблицы:
и получить это:
Затем я добавляю еще один столбец, подобный этому, чтобы удалить верхние строки, которые мне не нужны в eaВложенная таблица ch:
Что дает мне это:
(Таблица, выбранная на этом изображении, является той, у которой была дополнительная информация вверху.Эта информация исчезла .)
Затем я выбираю TopRowsRemoved и Item столбцы, а затем Домой> Удалить столбцы (слова, с выпадениемстрелка вниз)> Удалить другие столбцы, чтобы получить это:
Затем я нажимаю кнопку , чтобы развернутьтаблицы в столбце TopRowsRemoved (вместо столбца Data , который мы делали ранее), который вызывает это всплывающее окно, которое выглядит точно так же, как и при использованиистолбец Данные .Затем я снимаю флажок рядом с «Использовать исходное имя столбца в качестве префикса» и нажимаю ОК.
Затем я удаляю старыйШаг «Расширенные данные» в разделе «ПРИЛОЖЕННЫЕ ШАГИ» на правой панели.Если я не удаляю шаг «Расширенные данные», я получу сообщение об ошибке, так как он ищет столбец Data , который не существует.В этот раз я не использовал столбец Data .Вместо этого я использовал столбец TopRowsRemoved .
На этом этапе остальная часть моего предыдущего ответа по-прежнему применима, поэтому вернитесь к тому месту, где я написал: ВОЗВРАТ ОТ РЕДАКТИРОВАНИЯ ВНИЗ ОТВЕТА НА ПРОДОЛЖЕНИЕ --- выше.
ВотМой М-код для запроса «Основной запрос»:
let
Source = Folder.Files(FolderPath),
#"Removed Other Columns" = Table.SelectColumns(Source,{"Content", "Name"}),
#"Invoke Custom Function1" = Table.AddColumn(#"Removed Other Columns", "Transform File from Test", each #"Transform File from Test"([Content])),
#"Filtered Hidden Files1" = Table.SelectRows(#"Invoke Custom Function1", each [Attributes]?[Hidden]? <> true),
#"Removed Other Columns1" = Table.SelectColumns(#"Filtered Hidden Files1", {"Transform File from Test", "Name"}),
#"Expanded Transform File from Test" = Table.ExpandTableColumn(#"Removed Other Columns1", "Transform File from Test", {"Column1", "Column2", "Column3", "Column4", "Column5", "Item", "Custom"}, {"Column1", "Column2", "Column3", "Column4", "Column5", "Item", "Custom"}),
#"Promoted Headers" = Table.PromoteHeaders(#"Expanded Transform File from Test", [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"CustName", type text}, {"Opening", type any}, {"In", type any}, {"Out", type any}, {"Closing", type any}, {"DE", type text}, {"Summary (Units)", type text}, {"Feb-19.xlsx", type text}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"DE", "Sheet"}, {"Feb-19.xlsx", "File Name"}, {"Summary (Units)", "Summary Type"}}),
#"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each ([CustName] <> "CustName")),
#"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows",{"File Name", "Sheet", "CustName", "Opening", "In", "Out", "Closing", "Summary Type"}),
#"Grouped Rows" = Table.Group(#"Reordered Columns", {"Summary Type"}, {{"AllData", each _, type table}})
in
#"Grouped Rows"
Вот мой М-код для запроса «Преобразовать файл образца из теста» с изменениями для размещения верхних строк, содержащих информацию о транзакции:
let
Source = Excel.Workbook(#"Sample File Parameter1", null, true),
#"Removed Other Columns" = Table.SelectColumns(Source,{"Data","Item"}),
#"Added Index" = Table.AddColumn(#"Removed Other Columns", "Indexed", each Table.AddIndexColumn([Data],"Index", 0, 1)),
#"Added Custom1" = Table.AddColumn(#"Added Index", "SummaryIndexed", each Table.AddColumn([Indexed],"Summary Index", each try if Text.StartsWith([Column1],"Summary") then [Index] else null otherwise null)),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "IndexMins", each List.Min([SummaryIndexed][Summary Index])),
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "TopRowsRemoved", each Table.RemoveFirstN([SummaryIndexed],[IndexMins])),
#"Removed Other Columns1" = Table.SelectColumns(#"Added Custom3",{"TopRowsRemoved", "Item"}),
#"Expanded TopRowsRemoved" = Table.ExpandTableColumn(#"Removed Other Columns1", "TopRowsRemoved", {"Column1", "Column2", "Column3", "Column4", "Column5", "Index", "Summary Index"}, {"Column1", "Column2", "Column3", "Column4", "Column5", "Index", "Summary Index"}),
#"Filtered Rows" = Table.SelectRows(#"Expanded TopRowsRemoved", each ([Column1] <> null)),
#"Added Custom" = Table.AddColumn(#"Filtered Rows", "Custom", each if Text.StartsWith([Column1],"Summary") then [Column1] else null),
#"Filled Down" = Table.FillDown(#"Added Custom",{"Custom"}),
#"Filtered Rows1" = Table.SelectRows(#"Filled Down", each ([Column1] <> "Summary (Amount)" and [Column1] <> "Summary (Units)"))
in
#"Filtered Rows1"