Страницы: Пред. 1 2
RSS
Power Query - формула Excel для последующего переноса в умную таблицу
 
Цитата
PooHkrd написал:
Без примера, я тоже слабо себе это представляю.
Это и с примером выглядит сложно) Я постараюсь подготовить

Цитата
PooHkrd написал:
Сегодня  такая тема  уже была.
Я что то с синтаксисом не догоняю((
Код
= Table.SelectRows(#"Строки с примененным фильтром", each [Дата2] >=  #date{[Name="fordate"]} and [Дата2] <= #date{[Name="tordate"]}),
Получаю:
Expression.Error: Не удается преобразовать значение типа Function в тип List.
Сведения:
    Value=Function
    Type=Type

или

= Table.SelectRows(#"Строки с примененным фильтром", each [Дата2] >= {[Name="fordate"]} and [Дата2] <= {[Name="tordate"]}),
Получаю:
Expression.Error: Не удается применить оператор < к типам List и Date.
Сведения:
    Operator=<
    Left=List
    Right=25.07.2016
Методом перебора нашел такой вариант:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="fordate"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Column1", type date}}),
    Column1 = #"Измененный тип"{0}[Column1]
in
    Column1
и в дальнейшем можно просто ссылаться на fordate ну и todate соответственно, но мне кажется это каким то странным решением...  
Изменено: VitaliyP - 12.07.2018 20:02:10
 
В итоге:
Код
let
    Источник1 = Excel.CurrentWorkbook(){[Name="fordate"]}[Content],
    #"Измененный тип1" = Table.TransformColumnTypes(Источник1,{{"Column1", type date}}),
    #"Переименованные столбцы1" = Table.RenameColumns(#"Измененный тип1",{{"Column1", "С_даты"}}),
    С_даты = #"Переименованные столбцы1"{0}[С_даты],

    Источник2 = Excel.CurrentWorkbook(){[Name="todate"]}[Content],
    #"Измененный тип2" = Table.TransformColumnTypes(Источник2,{{"Column1", type date}}),
    #"Переименованные столбцы2" = Table.RenameColumns(#"Измененный тип2",{{"Column1", "По_дату"}}),
    По_дату = #"Переименованные столбцы2"{0}[По_дату],
...
    #"Строки с примененным фильтром1" = Table.SelectRows(#"Строки с примененным фильтром", each [Дата2] >= С_даты and [Дата2] <= По_дату),
...

Вставил все в один запрос, меня устраивает)

PooHkrd, пример подготовлю в ближайшее время
 
Зачем все так усложнять? В той теме была ссылка на шикарнейшую статью Дмитрия (The_Prist) Щербакова, в ней прямо конкретная формула приведена, и полностью разобрано как она работает.
Если вам принципиально тащить ячйку в переменную, а потом уже вызывать её, тогда так:
Код
let
    С_даты = Date.From( Excel.CurrentWorkbook(){[Name="fordate"]}[Content]{0}[Column1] )
    По_дату = Date.From( Excel.CurrentWorkbook(){[Name="todate"]}[Content]{0}[Column1] )
    ...

Либо сразу вставляете формулу в выражение фильтра. Но так лучше не делать если значение ячейки будет использоваться в цикле, тогда скрипт будет работать медленнее, чем с объявленными переменными. Если же значение вызывается один раз, то можно и сразу формулой.
Вот горшок пустой, он предмет простой...
 
PooHkrd, Конечно так лучше. Я пытался сам сделать, как по ссылке, но что то не получилось. Я плаваю в программировании, на интуитивном уровне, как получается собираю себе решения, но до оптимизации далеко)
 
Существует Nое количество таких документов с удобным мне административные делением, в каждом документе разное количество листов, каждый является "кварталом".
В ранее приложенном примере есть столбец материалы, которые я заполняю из строки 82 представленного примера столбика соответсвующему нужному адресу и городу.
Я планировал создать два именованных диапазона из 1 и 82 строки, подтягивать их в PQ, удалять каждый второй столбец. Далее их можно сопоставлять с данными из первой таблицы, но дело в том, что данные в первой таблице состоят и 4 составляющих по которым я создаю их уникальность, а в представленном примере я могу взять четвертый компонент статично из названия файла(ну вписать вручную), первые 2 из Адрес, Город, а вот третий компонент у меня отсутствует, тк я его не веду(за ненадобностью) в таблице примере.
Как я понимаю мне надо мне надо в запросе объединить два именованных диапазона, транспонировать их и удалить каждую вторую строку или удалить каждый второй столбец и транспонировать потом. Далее мне надо создать доп. столбец-склейку из Адрес1, Город1)предварительно удалив оттуда ", ")+название файла(ну тут в каждом запросе можно руками вписать), потом такой же столбец склейку создать в основном документе и далее по совпадающим значениям подтягивать соответствующие данные из так сказать строки 82?
Немного страшно выглядит( я правда пока не пробовал это реализовать, но концепт такой.
 
Кладете все файлы в одну папку, делаете запрос к папке, раскрываете данные из файлов. Создадутся 4 запроса, один из них показывает как выглядит каждый файл перед сборкой в единый массив. В этом запросе-примере перекручиваем ваши таблицы в плоский вид. После объединения собираем ключ и через слияние тянем данные в вашу итоговую таблицу.
Подробнее попробую сочинить что-нибудь завтра, сейчас времени нет.
З.Ы. Объединение ячеек в источниках - зло.
Изменено: PooHkrd - 16.07.2018 15:21:50
Вот горшок пустой, он предмет простой...
 
PooHkrd, ну в общем так и планировал, как время свободное будет...
Цитата
PooHkrd написал:
З.Ы. Объединение ячеек в источниках - зло.
Зло, это да, но на момент создания структуры я вообще еще не знал, что такое PQ, а для остальных задач работает четко и по сей день.
 
Во вложении файл с названием Сбор. В нем запрос к папке, он называется "Пример", в этом запросе нужно только изменить адрес папки, который будет на вашем компьютере. Также там папка с двумя вашими файлами, примерами. Смотрите, так вы хотели?
Вот горшок пустой, он предмет простой...
Страницы: Пред. 1 2
Наверх