Как всегда, очень интересно, Тимур! Мне кажется это одна из самых часто встречаемых задач- замена заголовков.Даже здорово, что Вы возвращаетесь в предыдущие модули! Если будет возможность, рассмотрите пожалуйста еще раз получение данных из папки методами интерфейса. Вроде простая задача - изменить кое что в файле примера, потом распространить изменения на все файлы папки, и прописать относительный путь к ней.. Но у меня все время возникают сложности
Тимур, добрый день! Правильно я понимаю, что предварительно Вы рассказываете про формулу на отметке 6:43 не про Table.TransformColumnNames, а про Table.RenameColumns?
Добрый день, Тимур! Не могли бы Вы еще раз вернуться к теме, рассмотренной в данном видео. Я натолкнулся на трудности при конкатенации заголовков в двух строках.Дело в том , что я пытался склеить заголовки не последовательно, как у Вас , а параллельно, так как у меня они не пустые и мне не подходит объединение с &. У Ник. Павлова есть решение. но двойная трансформация не кажется мне изящным решением...
yadi.sk/i/ME8cBbfJWUiTnQ Вот ссылка, пример чисто условный. Я тренировался на нем, в файле и мои потуги решения .Я Пытался слить заголовки из строк 6 и 7, если смотреть в excele, спасибо за хлопоты, Если Вас не затруднит... мне кажется, это частая задача
Очевидно, файл выгружается из какой-то системы вроде 1С. Кто его выгружает? Вы или кто-то другой? Вы можете как-то влиять на процесс выгрузки файла? Если да, то выгружается файл в формате TXT(UTF-8) или в формате CSV. С файлами XLSX вы должны работать только если нет другого выбора. Обычно во всех системах доступна выгрузка в формате txt. Ниже ответ на ваш вопрос. Скопируйте и вставьте в свой файл. let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Пользовательская2 = List.Zip( {Table.ColumnNames(Источник), Record.ToList(Источник{0})} ), Пользовательская3 = List.Transform( Пользовательская2, each List.ReplaceValue(_, null, "", Replacer.ReplaceValue) ), Пользовательская1 = List.Transform( Пользовательская3, each _{0}& " " & _{1} ), Пользовательская4 = Table.RenameColumns( Источник, List.Zip({Table.ColumnNames(Источник), Пользовательская1}) ) in Пользовательская4
Огромное спасибо, Тимур! Подскажите пожалуйста, а почему из 1С, надо выгружать не в excele? мне казалось это так естественно..... Кстати там есть варианты выгрузки в TXT(UTF-8), TXT(ANSI), документы HTML 2,3,4, электронная таблица UDF. кажите пожалуйста, какой предпочтительнее и почему? Извините за назойливость, хочется понять и разобраться....
@@orfeusmilenium4544 предпочтительнее txt (utf-8). Excel из 1С (и любой другой системы) выгружается коряво: лишние столбцы, непечатные символы и т. д. Вторая причина - скорость обработки файла. TXT обработается в несколько раз быстрее, чем XLSX с тем же содержанием. Подключаться при помощи PQ всегда лучше к txt (utf-8) или csv. Формат xls вообще нужно избегать. Это устаревший формат. Он больше весит, намного дольше обрабатывается.
Тимур здравствуйте. А возможно в определённом файле разделить данные по "слоям" растянуть их в одну строку и склеить? Файл для примера. 1drv.ms/x/s!AvHg5A6Wyul5gcQufq-1r0Rc5MC9YQ
Файлы для спонсоров Boosty: boosty.to/comrade-xl/posts/3032ecb2-9766-40ea-a866-fc87d8f1edb5?share=post_link
Файлы для спонсоров ВК: vk.com/comrade.excel?w=wall-185123800_169
Файлы для спонсоров RUclips: ruclips.net/user/postUgwRTxlBcrccDJSM9CF4AaABCQ
Индивидуальное обучение: comrade-xl.ru/pq-training/
Страница урока на сайте: comrade-xl.ru/2019/07/28/powerquery-123-listzip-zagolovki-2-stroki/
Как всегда, очень интересно, Тимур! Мне кажется это одна из самых часто встречаемых задач- замена заголовков.Даже здорово, что Вы возвращаетесь в предыдущие модули! Если будет возможность, рассмотрите пожалуйста еще раз получение данных из папки методами интерфейса. Вроде простая задача - изменить кое что в файле примера, потом распространить изменения на все файлы папки, и прописать относительный путь к ней.. Но у меня все время возникают сложности
Спасибо!
У меня есть в планах 1 урок по консолидации. Сделаю его с пользовательским интерфейсом.
Cогласен!!!
Тимур, добрый день! Правильно я понимаю, что предварительно Вы рассказываете про формулу на отметке 6:43 не про Table.TransformColumnNames, а про Table.RenameColumns?
Добрый день, Тимур! Не могли бы Вы еще раз вернуться к теме, рассмотренной в данном видео. Я натолкнулся на трудности при конкатенации заголовков в двух строках.Дело в том , что я пытался склеить заголовки не последовательно, как у Вас , а параллельно, так как у меня они не пустые и мне не подходит объединение с &. У Ник. Павлова есть решение. но двойная трансформация не кажется мне изящным решением...
Разместите файлы в облаке и ссылку в ответ на комментарий напишите. Я не понял в чем дело.
yadi.sk/i/ME8cBbfJWUiTnQ Вот ссылка, пример чисто условный. Я тренировался на нем, в файле и мои потуги решения .Я Пытался слить заголовки из строк 6 и 7, если смотреть в excele, спасибо за хлопоты, Если Вас не затруднит... мне кажется, это частая задача
Очевидно, файл выгружается из какой-то системы вроде 1С. Кто его выгружает? Вы или кто-то другой? Вы можете как-то влиять на процесс выгрузки файла?
Если да, то выгружается файл в формате TXT(UTF-8) или в формате CSV. С файлами XLSX вы должны работать только если нет другого выбора.
Обычно во всех системах доступна выгрузка в формате txt.
Ниже ответ на ваш вопрос. Скопируйте и вставьте в свой файл.
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
Пользовательская2 =
List.Zip(
{Table.ColumnNames(Источник),
Record.ToList(Источник{0})}
),
Пользовательская3 =
List.Transform(
Пользовательская2,
each List.ReplaceValue(_, null, "", Replacer.ReplaceValue)
),
Пользовательская1 =
List.Transform(
Пользовательская3,
each _{0}& " " & _{1}
),
Пользовательская4 =
Table.RenameColumns(
Источник,
List.Zip({Table.ColumnNames(Источник), Пользовательская1})
)
in
Пользовательская4
Огромное спасибо, Тимур! Подскажите пожалуйста, а почему из 1С, надо выгружать не в excele? мне казалось это так естественно..... Кстати там есть варианты выгрузки в TXT(UTF-8), TXT(ANSI), документы HTML 2,3,4, электронная таблица UDF. кажите пожалуйста, какой предпочтительнее и почему? Извините за назойливость, хочется понять и разобраться....
@@orfeusmilenium4544 предпочтительнее txt (utf-8).
Excel из 1С (и любой другой системы) выгружается коряво: лишние столбцы, непечатные символы и т. д.
Вторая причина - скорость обработки файла. TXT обработается в несколько раз быстрее, чем XLSX с тем же содержанием. Подключаться при помощи PQ всегда лучше к txt (utf-8) или csv.
Формат xls вообще нужно избегать. Это устаревший формат. Он больше весит, намного дольше обрабатывается.
А можно объединить эти 2 строки для заголовка?
www.screencast.com/t/ATT3ClWkrrr
File: www.dropbox.com/s/ikhstmjk9z4u9cs/firmgru.xlsx?dl=1
Спасибо
Можно!
1. Транспонировать
2. Заполнить вниз
3. Склеить
Спасибо, работает
Тимур здравствуйте. А возможно в определённом файле разделить данные по "слоям" растянуть их в одну строку и склеить?
Файл для примера.
1drv.ms/x/s!AvHg5A6Wyul5gcQufq-1r0Rc5MC9YQ
Здравствуйте! Ответил в прошлом комментарии.
в конце при List.Zip выходит ошибка, может кто помочь?
let
Источник = Excel.Workbook(File.Contents("D:\Хазратхон\Учеба\power bi\Bob\2. Отчетная дата\Портфель\Портфель 01.01.2022.xlsx"), null, true),
#"D:\Хазратхон\Учеба\power bi\Bob\2. Отчетная дата\Портфель\_Портфель 17.12.2021.xlsx" = Источник{[Item="Лист1",Kind="Sheet"]}[Data],
Data = Источник{[Item="Лист1",Kind="Sheet"]}[Data],
#"Добавлен пользовательский объект" = Table.AddColumn(Data, "Дата отчета", each Data{0}[Column2]),
#"Разделить столбец по положению" = Table.SplitColumn(#"Добавлен пользовательский объект", "Дата отчета", Splitter.SplitTextByPositions({0, 10}, false), {"Дата отчета.1", "Дата отчета.2"}),
#"Удаленные столбцы" = Table.RemoveColumns(#"Разделить столбец по положению",{"Дата отчета.2"}),
#"Пониженные заголовки" = Table.DemoteHeaders(#"Удаленные столбцы"),
Лист1 = List.LastN(Record.ToList(#"Пониженные заголовки"{0}),1),
Лист2 = List.FirstN(Record.ToList(#"Пониженные заголовки"{2}),205),
ЗаголовкиЛист = Лист2&Лист1,
Пользовательский1 = #"Пониженные заголовки",
#"Удаленные верхние строки" = Table.Skip(Пользовательский1,3),
Пользовательский2 = Table.RenameColumns(#"Удаленные верхние строки", List.Zip({Table.ColumnNames(#"Удаленные верхние строки"), ЗаголовкиЛист}))
in
Пользовательский2