Страницы: 1
RSS
Power Query при получение данных из Excel теряет нолик
 
Здравствуйте!
Ситуация такая, я загружаю выписку ЕГРЮЛ организации и мне нужно взять оттуда только регистрационный номер. Если номер начинается на "0", то он при импорте в Power Query теряет его
В исходной таблице записан 087703036572, при загрузке в PQ сразу проглатывает первый ноль и получается 87703036572, а надо 087-703-036572
Но если номер в исходном 205307059874, при загрузке в PQ все идет нормально.
Пример прилагаю.

Небольшое замечание, изменить формат в конечной таблице в виде 000-000-000000 не вариант, так как из этого листа будет копироваться в другую форму, где ноль пропадет.
Думаю что надо сделать в виде текста, но как, если в PQ сразу теряет ноль?
 
Всё правильно, т.к. у вас в ячейке есть только числа "87703036572", тут нет 0 спереди.
Добавьте в начало апостроф и 0, чтобы было так "   '087703036572  " и всё нормально работает
 
Доброе время суток
Цитата
Андрей написал:
надо 087-703-036572
Надо, так надо :)
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица4"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"Столбец3", Int64.Type}}),
    toText = Table.TransformColumns(#"Измененный тип", {"Столбец3", each Number.ToText(_, " 000-000-000000"), Text.Type})
in
    toText
 
Можно сперва источник обработать макросом.
Но неужели в PQ нельзя взять с форматом?
 
Добрый вечер.
Андрей VG, здорово, а меня куда то ни туда потянуло, я бы даже сказал в сторону VBA :D
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица4"]}[Content],
    #"Добавлен пользовательский объект" = Table.AddColumn(Источник, "Пользовательский", each if Text.Length(Text.From([Столбец3], "ru-RU"))=11 then 
"0"&Text.From([Столбец3])
else [Столбец3]),
    #"Измененный тип" = Table.TransformColumnTypes(#"Добавлен пользовательский объект",{{"Пользовательский", type text}}),
    #"Удаленные столбцы" = Table.RemoveColumns(#"Измененный тип",{"Столбец3"}),
    #"Измененный тип1" = Table.TransformColumnTypes(#"Удаленные столбцы",{{"Пользовательский", type number}})
in
    #"Измененный тип1"
 
Ну а всёж - можно вытянуть то, что указано форматом?
 
Цитата
Hugo написал: Ну а всёж - можно вытянуть то, что указано форматом?
У Андрея форматом (не Excel, а PQ) и вытянуто, там можно сократить:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица4"]}[Content],
    Result = Table.TransformColumns(Source, {"Столбец3", each Number.ToText(_, " 000-000-000000"), Text.Type})
in
    Result
Изменено: ZVI - 21.10.2020 23:18:12
 
Ну я не спец в PQ, потому и спрашиваю.
Я вижу что из источника вытянуто без нуля, а далее форматом ставится свой ноль.
Ну а если например нужно вытянуть именно то, что задумали эти непонятные программеры 1С или кто там ещё любит в каждую ячейку свой формат пихать?
 
Игорь, в источнике в столбце3 реально - числа, но с форматом ячеек с 12-ю нулями и с выравниванием по левому краю.
Можно было бы просто в источнике применить формат "000-000-000000" и не нужен ни PQ, ни VBA,
но так неинтересно :)
Изменено: ZVI - 21.10.2020 23:55:14
 
Я говорю о другом.
Помню была таблица, где одно значение ну например
123
было в разных ячейках именно форматом представлено
00123
000123
и это были реально разные артикулы, для разных товаров.
Так вот если такое нужно обработать в PQ - как делать?
P.S. Вот тут нашёл кое-что:
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=95399&MID=s
Изменено: Hugo - 22.10.2020 00:03:01
 
В PQ вытягивают все без excel NumberFormat (так устроен PQ), а потом форматируют требуемый столбец вытянутых данных.
Как обработать свойство ячейки .Text в PQ - не знаю, это Максим по ссылке колдовал. Но такой винегрет из форматов не для нормальной обработки, конечно. Это в VBA проще делать.
Изменено: ZVI - 22.10.2020 00:17:22
 
Ну значит будем ждать удобной функции. Жаль.
 
Hugo, можно, если формат исходника xlsx/xlsm. Тогда можно по аналогии с функцией Максима открыть файл как архив и дальше парсить xml'ку потом результат приджойнить к содержимому листа. Если покопаться в постах Андрей Лящук, то он показывал пример как можно вытащить данные по формату и вроде даже комментарии из ячеек таскал. Но это не точно.  :)
Вот эта тема, тут он признак отфильтрованных строк из xml вытянул.
Изменено: PooHkrd - 22.10.2020 00:25:36
Вот горшок пустой, он предмет простой...
 
Ну в VBA мы это проходили, спасибо и Владимиру :)
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=98053&TITLE_SEO=98053-obernut-poluzhirnyy-tekst-v-yacheyke-tegom-strong&MID=810591&tags=&q=BoldToStrong&FORUM_ID%5B0%5D=0&DATE_CHANGE=0&order=relevance&s=%D0%9D%D0%B0%D0%B9%D1%82%D0%B8#message810591
А для PQ значит ждём...
Изменено: Hugo - 22.10.2020 00:35:58
 
Когда в начале загружаете в PQ шагах система сразу подбирает числовой формат шагом "Измененный тип". Если хотите оставить в стандартном текстовом формате, достаточно удалить шаг "Измененный тип".
 
DemonAMT, здесь не тот случай. Тут как раз в исходнике не текст, а число было в ячейке. И PQ его считывал корректно. Но 1С в отчете на эту ячейку накинул формат, который отображает это число с нулями вначале.
Вот горшок пустой, он предмет простой...
 
DemonAMT,  тут речь о другом.
Да и нет в #7 этого изменения типа, но это не решает мой вопрос.
 
Ребята, огромное спасибо!!!
В моем случае что-то менять в исходнике не вариант, т.к. их очень много, они пополняются и удаляются регулярно. Это первый момент.
Второй момент: регистрационный номер всегда (пока всегда) состоит из 12 цифр, что существенно облегчает работу.

В моем случае достаточно этого кода
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица4"]}[Content],
    Result = Table.TransformColumns(Source, {"Столбец3", each Number.ToText(_, " 000-000-000000"), Text.Type})
in
    Result

Огромное спасибо!!!
Изменено: Андрей - 22.10.2020 12:51:40 (Читабельный вид)
Страницы: 1
Наверх