Объединение таблиц на нескольких листах в одну на новом листе.

Автор ekkl, 30 января 2014, 21:53

0 Пользователи и 1 гость просматривают эту тему.

ekkl

Есть документ с количеством листов >20. Это список людей в формате имя, год рождения, номер удостоверения и т.д. Лист это список людей в одном нас. пункте (Васюки, Иваново, Петровка и т.д)
Нужно объединить все в одну общую таблицу на новом листе. Пробовал через Данные->объединить, в результате только дни числа формирует.
По некоторой причине не могу выложить этот документ, но если надо, могу предложить "аналог" содержащий "заглушки" вместо имен.
--
Можно просто копи-пасте, но хотелось бы как-то более цивилизовано, так как, очевидно, придется не один раз такое делать.

JohnSUN

Добро пожаловать на форум!
Это не сложно сделать... Если бы сразу "предложил аналог" - было бы действительно проще... А то ведь сейчас, чтобы набросать тебе ответ, сначала нужно будет "родить" книгу с тестовыми данными.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ekkl

Вот, только я не заморачивался с именами и т.д.

[вложение удалено Администратором]

JohnSUN

Хороший образец! Я за то же время набросал чуть больше  ;D
Самый быстрый и простой способ (как для меня) - макрос...
Нажми Alt+F11, выбери макрос, как показано на картинке.
Открой лист Result

[вложение удалено Администратором]
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ekkl

JohnSUN, Спасибо работает.
Но есть один моммент, деже два, которые я не счел важными, и как следствие не упомянул.
1) В начале таблицы есть шапка, которую копировать не нужно. Т.е. данные таблицы начинаются не с 1 строки, а с 11.
2) Есть еще два листа, данные на которых трогать не нужно (исключенные и выписанные)
Просто не думал что решается макросом.

JohnSUN

Вот для этого и просим обычно образец... Если бы шапка на 10 строк была бы в образце - первый момент уже был бы решен... Имена листов исключений какие? Надеюсь не "Аркуш13" и "Аркуш1313"?

Правки в тексте макроса для учета этих моментов будут минимальные, не волнуйся - решим легко...

По первому моменту:
в строке 28 меняешь
oCellRangeByPosition = oSheet.getCellRangeByPosition(0, 0, nEndColumn, 0)
на
oCellRangeByPosition = oSheet.getCellRangeByPosition(0, 10, nEndColumn, 10)
То есть вместо первой строки для заголовка общей таблицы взять 11-ую.
Кроме того аналогичная замена в строке 40, второй параметр "единичку" замени на 11 - брать данные не со второй строки, а с 12-ой.
(Нумерация идёт с нуля, поэтому на первых порах эти несоответствия в цифрах могут сбивать с толку)

По второму моменту:
Достаточно было бы после вычисления sName (имя листа для вписывания в колонку "Исходный лист") добавить проверку
If (sName <> "Исключение1") AND (sName <> "Исключение2") Then
и закрыть этот If оператором EndIf после Next j
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ekkl

Не, не аркушХХ.
Кунівка, Орлик, Соснівка, Дашківка, Озера и т.д. т.е названия сёл, смт. в районе.
Исключения "вибувші" + "вибувші по заяві"
Конечно, можно, вместо count-1 в макросе прописать количество листов. Они идут сначала, а те которые не нужны в конце.
(Вот момент: при перечислении в макросе порядковый номер листа определяется как в книге, или порядком создания? Если второе то вариант не прокатит.)
Просто хотелось бы более универсальный инструмент, так как большая вероятность, что придется не раз делать подобное. Там названия листов могут быть другие и исключения тоже, а может их и не быть в следующий раз.

JohnSUN

Цитата: ekkl от 31 января 2014, 14:48
при перечислении в макросе порядковый номер листа определяется как в книге, или порядком создания?
Как в книге. То есть, если зацепишь ярлык листа и перетащишь в другое место, то номера изменятся - с нуля и сколько их там есть слева направо
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

ekkl

И надеюсь последний вопрос: как перенести макрос в нужный мне документ?
Или еще лучше в шаблон.

JohnSUN

На скольких машинах собираешься его использовать? Если только на своей, то переносить нужно не в шаблон, а в "Мои макросы"

Опять же - Alt+F11, кнопка Управление.
На вкладке Модули разворачиваешь дерево макросов открытого документа, цепляешь нужный модуль мышкой и перетаскиваешь Модуль1 в Мои макросы-Standard (я это обычно делаю с зажатым Ctrl - не переношу модуль, а копирую).
Теперь он будет доступен для любого открытого документа.


Был рад помочь. Ты далеко от форума не уходи - здесь всегда рады помочь, а без свежих вопросов как-то скучновато. "Ты это... заходи, если что..."
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

useb64

Цитата: JohnSUN от 30 января 2014, 23:39
Хороший образец! Я за то же время набросал чуть больше  ;D
Самый быстрый и простой способ (как для меня) - макрос...
Нажми Alt+F11, выбери макрос, как показано на картинке.
Открой лист Result

[вложение удалено Администратором]

добрый день,

у Вас сохранился этот макрос?
Может быть поделитесь?
У меня аналогичная задачка.

С уважением

economist

Вот честно, умиляюсь с подобных задач. Ну ручками можно копи-пастой сделать за 2 минуты!

Ctrl+PageDown - Ctrl+A - Ctrl+X - Ctrl+PageUp -  Ctrl+Стрелка вниз - Ctrl+V (1 лист)
Ctrl+PageDown - Ctrl+A - Ctrl+X - Ctrl+PageUp - Ctrl+PageUp -  Ctrl+Стрелка вниз - Ctrl+V (2 лист) итд
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

useb64

Цитата: economist от 14 февраля 2017, 14:32
Вот честно, умиляюсь с подобных задач. Ну ручками можно копи-пастой сделать за 2 минуты!

Ctrl+PageDown - Ctrl+A - Ctrl+X - Ctrl+PageUp -  Ctrl+Стрелка вниз - Ctrl+V (1 лист)
Ctrl+PageDown - Ctrl+A - Ctrl+X - Ctrl+PageUp - Ctrl+PageUp -  Ctrl+Стрелка вниз - Ctrl+V (2 лист) итд

а чему умиляться-то?
привыкли работать руками - работайте.

114 листов, с каждого листа надо взять 72 ячейки, ну и т.д.
и так каждый день...

макрос хочу использовать как "рыбу" для "своего" макроса.

с уважением

JohnSUN

Цитата: useb64 от 14 февраля 2017, 13:36
у Вас сохранился этот макрос?
В теме не осталось названия файла, пришлось искать по дате создания... А уже когда нашелся - посмотрел на имя файла. Оборжался... "Элементарно, Ватсон!.."
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

kompilainenn

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут