Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как выделить все столбцы в Power Qwery независимо от их количества?
 
Добрый день, друзья!

Прошу Вас помогите с одним вопросом: как в PQ  выделить все столбцы независимо от их количества!? Очень нужно,  помогите. Это нужно при загрузке "Из папки", где иногда попадаются файлы  с немного другой структурой (не 23 столбца, как у всех файлов, а  например 31 столбец). Выделение всех столбцов нужно для того, что бы  потом заполнить вниз, удалить определенное количество верхних строк, и уже потом по названиям столбцов (не "null")  удалить другие столбцы.
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    list = Table.ColumnNames(from),
    fill = Table.FillDown(from,list)
in
    fill
Каждому For свой Next
 
Вы определитесь, вам нужно их именно выделить в редакторе запросов, или все таки передать полный список заголовков таблицы в функцию?
Если, второе, то можно например так:
Код
let
    Source = #table({"1","2","n"},{{1,2,"n"},{null,null,null}}),
    FilledDown = Table.FillDown(Source,Table.ColumnNames(Source))
in
    FilledDown
Вот горшок пустой, он предмет простой...
 
Огромное спасибо за помощь!!! Я совсем профан в PQ еще, выдает какую-то ошибку :( Ниже привел мой код (текст тоже скопирую). Как нужно реализовать функции эти?? (Нужен первый вариант: Нужно выделить все столбцы).

let
   Источник = Excel.Workbook(File.Contents("\\srv1\ОЭиФ\БАНК\Расходный\СББОЛ. Выписка за 2019.07.24 счет 40702810001000100242.xlsx"), null, true),
   #"40702810001000100242_Sheet" = Источник{[Item="40702810001000100242",Kind="Sheet"]}[Data]
in
   #"40702810001000100242_Sheet"
Снимок.PNG (15.46 КБ)
Изменено: Bce_B_CaD - 21 Авг 2019 08:21:11 (Скан в тексте не отобразился корректно (а ввиде текстового кода))
 
Bce_B_CaD, пример выписки приложите. Сотрите всю персональную инфу и деньги, нужна просто структура документа.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
пример выписки приложите.
Тогда сразу два файла если Вы не против! Как раз проблема сразу будет видна. Один файл обычный, а другой с исполлистом на ограничение (картотека). В обычном 23 столбца, а с картотекой 31 столбец.
 
Как то вот так
Код
(YourTable)=>

let
    Source = Excel.CurrentWorkbook(){[Name=YourTable]}[Content],
    LSTHeaders = Table.ColumnNames(Source),
    HowMany = List.Count(LSTHeaders),
    Transformation = Table.TransformColumnTypes( Source, Table.ToRows(Table.FromColumns({LSTHeaders, List.Repeat({type text}, HowMany  )})))
in
    Transformation
или  так

Код
(YourTable) =>

let
    Source = Excel.CurrentWorkbook(){[Name=YourTable]}[Content],
Transformation= Table.TransformColumnTypes(Source,List.Transform(Table.ColumnNames(Source), each {_,type text}))
in
  Transformation
 
Цитата
azma написал:
Как то вот так
Я что-то не так делаю видимо... :-( Я выше писал, что я практически "0" в PQ
Снимок.PNG (10.83 КБ)
 
Биболет Кудаев, вы еще забыли упомянуть что названия листов в разных выгрузках могут быть разные.
Вот универсальный запрос, который при обращении к файлу лезет в первый по порядку попавшийся лист (если он единственный, то значит в него), и сразу же заполняет вниз все столбцы независимо от их количества.
Код
let
    Source = Excel.Workbook(File.Contents("E:\Пример с картотекой.xlsx"), null, true),
    FilteredRows = Table.SelectRows(Source, each ([Kind] = "Sheet")),
    Navigation = FilteredRows{0}[Data],
    FilledDown = Table.FillDown( Navigation, Table.ColumnNames(Navigation) )
in
    FilledDown

Путь к файлу только не забудьте корректный указать.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Table.FillDown( Navigation
После скобки пробел нужен?
Изменено: КБМ - 24 Авг 2019 00:11:53
 
КБМ, не обязательно. Это мой загон, так пробелы ставить, чтобы код читабельнее был.
Вот горшок пустой, он предмет простой...
 
PooHkrd, Да... Класс!!! То что нужно!!! Очень помог!!! Теперь все получится!!!!  
 
Цитата
КБМ написал:
Очень помог
Может помогли?
 
Цитата
Юрий М написал:
Может помогли?
Да, конечно, всем спасибо!!! Правда теперь заполняются значения null в столбцах с суммами... :)... Свод собрал а там 8-0  Пока не знаю что делать...
 
Вы не поняли ))
 
Цитата
Юрий М написал:
Вы не поняли )
Наверно))...

Все получилось дорогие мои!!! Спасибо ВСЕМ )) большое!! несколько хитростей с манипуляцией условными столбцами и фильтрами решили проблему заполнения значений "null" значениями оборотов по счетам (то есть дублирования сумм)
Цитата
PooHkrd написал:
FilledDown = Table.FillDown
Но это было круто!!
Использовал этот вариант, но всем большое спасибо!!! ВСЕМ!! ;)
Страницы: 1
Читают тему (гостей: 1)
Наверх