Страницы: 1
RSS
Сборка файлов с листов с Expression.Error
 
Добрый день! При сборке файлов с листов выскакивает ошибка. В таблице данные преобразовала в числа, все равно ошибка. Помогите,пжлста, разобраться
Код
Expression.Error: Не удается преобразовать значение типа Table в тип Binary.
Подробные сведения:
    Value=Table
    Type=Type
 
Вы немного напутали. У вас подключение к таблицам в файле, а не к разным файлам. Excel.Workbook требует на вход именно файл Excel и в данном случае не нужен совсем.

Вам нужно просто развернуть первый столбец, выбрав нужные столбцы, например:
Код
// Запрос1
let
    Источник = Excel.CurrentWorkbook(),
    #"Expanded {0}" = Table.ExpandTableColumn(Источник, "Content", {"Номенклатура", "Нач. сальдо деб.", "Деб. оборот", "Д10", "Д20", "Д26", "60", "Д91", "Д97", "Кред. оборот", "К10", "К20", "К23", "К25", "К26", "К44", "К91", "К94", "К97", "Кон. сальдо деб.", "Д25", "К8", "Д23"}, {"Номенклатура", "Нач. сальдо деб.", "Деб. оборот", "Д10", "Д20", "Д26", "60", "Д91", "Д97", "Кред. оборот", "К10", "К20", "К23", "К25", "К26", "К44", "К91", "К94", "К97", "Кон. сальдо деб.", "Д25", "К8", "Д23"})
in
    #"Expanded {0}"
F1 творит чудеса
 
Спасибо, Максим Зеленский! Это я уже придумала или затупила, неудачно. Во второй таблице Склад741 содержится уникальный столбец К08, поэтому при разворачивании его нет. В таком случае возможно поможет только создание  функции.
 
kristina S, недавно же вам давал ссылку на отличную статью Дмитрия Щербакова на данную тему. В комментах там есть и мой вариант, для вашей ситуации привожу код с адаптацией:
Код
let
    Источник = Excel.CurrentWorkbook(),
    Разворачиваем = Table.ExpandTableColumn(Источник, "Content", List.Union( List.Transform( Источник[Content], (x) => Table.ColumnNames(x) ) ) )
in
    Разворачиваем

Еще можно так:
Код
let
    Источник = Excel.CurrentWorkbook(),
    Разворачиваем = Table.Combine( Table.AddColumn(Источник, "addName", each let a = [Name] in Table.AddColumn([Content], "Name", each a ))[addName] )
in
    Разворачиваем
Изменено: PooHkrd - 12.03.2019 13:24:13
Вот горшок пустой, он предмет простой...
 
С использованием
Код
=Excel.Workbook([Content])
Не получилось поэтому варианту  нет одного уникального столбца. Возьму Ваш код. Что-то не-то делаю!
 
Код
Разворачиваем = Table.ExpandTableColumn(Источник, "Content", List.Union( List.Transform( Источник[Content], (x) => Table.ColumnNames(x) ) ) )
Вот это вводится в редакторе запросов или вручную? Наверное у меня версия PQ времен гражданской войны. Например, что бы развернуть столбец List нужен пользовательский столбец с Text.Combine.
Благодарна за помощь.
 
Сам шаг с разворачиванием столбцов можно формировать вручную, а уже в получившейся формуле вместо 3 аргумента, который представляет из себя список с перечислением столбцов нужно вставить формулу, указанную ниже, а 4-й аргумент нужно вообще стереть
Код
List.Union( List.Transform( Источник[Content], (x) => Table.ColumnNames(x) ) )

этот код сканирует заголовки из всех таблиц столбца [Content] при помощи Table.ColumnNames() и создает из них список. Получившийся список передается в функцию List.Union, которая удаляет все дубликаты названий и формирует окончательный список всех заголовков таблиц, который в результате и передается в функцию Table.ExpandTableColumn() в качестве третьего аргумента.
Можете на примере такого запроса посмотреть по шагам что и как работает:
Код
let
    Источник = Excel.CurrentWorkbook(),
    #"Добавлен пользовательский объект" = Table.AddColumn(Источник, "Заголовки", each Table.ColumnNames([Content])),
    Заголовки = #"Добавлен пользовательский объект"[Заголовки],
    Пользовательская1 = List.Union( Заголовки ),
    Пользовательская2 = Table.ExpandTableColumn(Источник, "Content", Пользовательская1 )
in
    Пользовательская2
Изменено: PooHkrd - 12.03.2019 13:50:47
Вот горшок пустой, он предмет простой...
 
С Вашим кодом собрала 10 таблиц с разными колонками за 1 мин. Скопировала, сохраню. Попытаюсь осмыслить. Спасибо за объяснение. Светлая и одаренная голова у Вас. Еще раз благодарю за помощь.
 
Цитата
kristina S написал:
Попытаюсь осмыслить.
Сам алгоритм очень подробно описан в статье Дмитрия, по ссылке что я давал выше - обязательно вдумчиво почитайте. Я эту логику просто слегка по-другому реализовал. Принцип абсолютно тот же.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх