Страницы: 1
RSS
Номер строки листа Excel в Power Query, вытащить
 
Подскажите, пожалуйста, можно ли как-нибудь не очень сложно  добавить в запрос столбец, в котором будут номера строк с исходного листа Excel.

 
Сразу после загрузки из источника в редакторе запросов на ленте вкладка "Добавить столбец" в нем меню "Столбец индекса", там можно выбрать начальный индекс и шаг индексации.
Если начальный индекс =0, и шаг =1 то строка кода будет выглядеть так (два последних параметра в этом случае не обязательны, если их не вводить, результат не изменится):
Код
= Table.AddIndexColumn(Источник, "Индекс", 0, 1)
Изменено: PooHkrd - 13.10.2017 17:53:49
Вот горшок пустой, он предмет простой...
 
Я прошу прощения, если я неправильно поняла, кривыми руками проверено - получается не то. Но нужен не порядковый номер записи в запросе.

Нужен номер строки Эксель из исходного листа каждого исходного файла. Данные выгружаются из 10 файлов, в каждом файле по таблице, из первого, допустим, в запрос попадают строки с 1 по 10, из второго с 28 по 31 - строки разные и файлов много.
Изменено: Xel - 13.10.2017 18:11:19
 
Доброе время суток
Цитата
Xel написал:
в котором будут номера строк с исходного листа Excel.
В общем случае - это не возможно. Пусть умная таблица начинается с 33 строки. Power Qeury вернёт только её строки и строку заголовка. Так что либо вы номер строки добавляете в ней формулой, либо "ручками" указываете начальный номер в функции, как показал PooHkrd.
 
Если вы выгружаете данные из папки и собираете друг под друга под одной шапкой, то вам нужно открыть для редактирования запрос-пример под названием типа "Преобразовать пример двоичного файла из ХХХХХ". Этот запрос формирует PQ, в нем указывается что нужно сделать с каждым одиночным файлом прежде чем собрать его вместе с остальными. Вот в него нужно добавить шаг с индексированием, тогда получите нужный результат.
Но тут да, нужно учитывать замечание Андрея, если данные берутся из умных таблиц, то пронумеруются именно строки в этих таблицах, а не в файлах.
Изменено: PooHkrd - 13.10.2017 18:28:06
Вот горшок пустой, он предмет простой...
 
Если данные выгружаются именно из таблиц, то там напрямую никак, так как выгружается именно таблица и никакой информации о том, в каком месте она стоит, не импортируется.
Если данные из листа - возможны варианты. По умолчанию PQ загружает из листа Excel только использованный диапазон, в терминах VBA это называется UsedRange. Соответственно строки выше и левее его не импортируются. Подробно об этом я писал тут.

Вариантов обхода минимум три, правда, первые два из них требуют редактирования исходных файлов.

1) если ячейку А1 отформатировать как-то в каждом файле, например, цветом, или еще как-то, то она станет левой верхней ячейкой использованного диапазона. Тогда будет импортирован диапазон начиная с А1 и в вашем втором файле строки с данными станут 28-31, а не 1-3.
2) пронумеровать строки при помощи формулы =СТРОКА() в каком-нибудь столбце прямо в файле.
3) при помощи функций Power Query лезть внутрь файла xlsx, раскапывать внутреннюю структуру и в параметре dimension XML-файла соответствующего листа смотреть, какой диапазон считается UsedRange. Дальше путем несложных подсчетов определить, какой номер у первой строки/столбца импортируемых данных. Решение есть, оно не самое простое внешне, но вполне рабочее.

Есть вариант получать UsedRange при помощи VBA и куда-нибудь его писать. Но это уже выходит за рамки Power Query.

А самый главный вопрос - зачем вам это?
F1 творит чудеса
 
upd - когда я писала вопрос, не видела двух предыдущих сообщений, спасибо большое, буду изучать.


А, например, если значения брать не из умной таблицы, а прямо "с листа", и фильтровать потом. Получится, что в выгрузке из каждого файла до фильтрации все выгружается с первой строки  листа и до конца таблицы.
Можно как-то  просто выгрузку каждого файла пронумеровать отдельно?

"Источник" - папка, так что хоть я кнопкой индексный столбец добавляю, хоть отсюда строку копирую - получается странное.
Изменено: Xel - 13.10.2017 18:46:06
 
Xel, вам вроде бы PooHkrd об этом и написал
F1 творит чудеса
 
Да, спасибо за советы большое, я дополнила сообщение, я не видела его и Ваш ответ, когда писала предыдущее сообщение.
Страницы: 1
Читают тему (гостей: 1)
Наверх