Подскажите, пожалуйста, можно ли как-нибудь не очень сложно добавить в запрос столбец, в котором будут номера строк с исходного листа Excel.
Номер строки листа Excel в Power Query, вытащить
13.10.2017 17:35:26
|
|
|
|
13.10.2017 17:50:03
Сразу после загрузки из источника в редакторе запросов на ленте вкладка "Добавить столбец" в нем меню "Столбец индекса", там можно выбрать начальный индекс и шаг индексации.
Если начальный индекс =0, и шаг =1 то строка кода будет выглядеть так (два последних параметра в этом случае не обязательны, если их не вводить, результат не изменится):
Изменено:
Вот горшок пустой, он предмет простой...
|
|||
|
|
13.10.2017 18:10:41
Я прошу прощения, если я неправильно поняла, кривыми руками проверено - получается не то. Но нужен не порядковый номер записи в запросе.
Нужен номер строки Эксель из исходного листа каждого исходного файла. Данные выгружаются из 10 файлов, в каждом файле по таблице, из первого, допустим, в запрос попадают строки с 1 по 10, из второго с 28 по 31 - строки разные и файлов много.
Изменено: |
|
|
|
13.10.2017 18:21:24
Доброе время суток
|
|||
|
|
13.10.2017 18:24:49
Если вы выгружаете данные из папки и собираете друг под друга под одной шапкой, то вам нужно открыть для редактирования запрос-пример под названием типа "Преобразовать пример двоичного файла из ХХХХХ". Этот запрос формирует PQ, в нем указывается что нужно сделать с каждым одиночным файлом прежде чем собрать его вместе с остальными. Вот в него нужно добавить шаг с индексированием, тогда получите нужный результат.
Но тут да, нужно учитывать замечание Андрея, если данные берутся из умных таблиц, то пронумеруются именно строки в этих таблицах, а не в файлах.
Изменено:
Вот горшок пустой, он предмет простой...
|
|
|
|
13.10.2017 18:27:25
Если данные выгружаются именно из таблиц, то там напрямую никак, так как выгружается именно таблица и никакой информации о том, в каком месте она стоит, не импортируется.
Если данные из листа - возможны варианты. По умолчанию PQ загружает из листа Excel только использованный диапазон, в терминах VBA это называется UsedRange. Соответственно строки выше и левее его не импортируются. Подробно об этом Вариантов обхода минимум три, правда, первые два из них требуют редактирования исходных файлов. 1) если ячейку А1 отформатировать как-то в каждом файле, например, цветом, или еще как-то, то она станет левой верхней ячейкой использованного диапазона. Тогда будет импортирован диапазон начиная с А1 и в вашем втором файле строки с данными станут 28-31, а не 1-3. 2) пронумеровать строки при помощи формулы =СТРОКА() в каком-нибудь столбце прямо в файле. 3) при помощи функций Power Query лезть внутрь файла xlsx, раскапывать внутреннюю структуру и в параметре dimension XML-файла соответствующего листа смотреть, какой диапазон считается UsedRange. Дальше путем несложных подсчетов определить, какой номер у первой строки/столбца импортируемых данных. Решение есть, оно не самое простое внешне, но вполне рабочее. Есть вариант получать UsedRange при помощи VBA и куда-нибудь его писать. Но это уже выходит за рамки Power Query. А самый главный вопрос - зачем вам это?
F1 творит чудеса
|
|
|
|
13.10.2017 18:40:30
upd - когда я писала вопрос, не видела двух предыдущих сообщений, спасибо большое, буду изучать.
А, например, если значения брать не из умной таблицы, а прямо "с листа", и фильтровать потом. Получится, что в выгрузке из каждого файла до фильтрации все выгружается с первой строки листа и до конца таблицы. Можно как-то просто выгрузку каждого файла пронумеровать отдельно? "Источник" - папка, так что хоть я кнопкой индексный столбец добавляю, хоть отсюда строку копирую - получается странное.
Изменено: |
|
|
|
13.10.2017 18:44:23
|
|
|
|
13.10.2017 18:46:51
Да, спасибо за советы большое, я дополнила сообщение, я не видела его и Ваш ответ, когда писала предыдущее сообщение.
|
||||
|
|
|||
Читают тему (гостей: 1)