Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

19 Март 2019, 05:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Объединение таблиц на нескольких листах в одну на новом листе.  (Прочитано 12729 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ekkl
Участник
**
Offline Offline

Сообщений: 47


« Стартовое сообщение: 30 Январь 2014, 20:53 »

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

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 30 Январь 2014, 21:08 »

Добро пожаловать на форум!
Это не сложно сделать... Если бы сразу "предложил аналог" - было бы действительно проще... А то ведь сейчас, чтобы набросать тебе ответ, сначала нужно будет "родить" книгу с тестовыми данными.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ekkl
Участник
**
Offline Offline

Сообщений: 47


« Ответ #2: 30 Январь 2014, 21:41 »

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

[вложение удалено Администратором]
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 30 Январь 2014, 22:39 »

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

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

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ekkl
Участник
**
Offline Offline

Сообщений: 47


« Ответ #4: 31 Январь 2014, 12:08 »

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

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #5: 31 Январь 2014, 13:15 »

Вот для этого и просим обычно образец... Если бы шапка на 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
« Последнее редактирование: 31 Январь 2014, 14:00 от JohnSUN » Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ekkl
Участник
**
Offline Offline

Сообщений: 47


« Ответ #6: 31 Январь 2014, 13:48 »

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

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #7: 31 Январь 2014, 14:03 »

при перечислении в макросе порядковый номер листа определяется как в книге, или порядком создания?
Как в книге. То есть, если зацепишь ярлык листа и перетащишь в другое место, то номера изменятся - с нуля и сколько их там есть слева направо
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
ekkl
Участник
**
Offline Offline

Сообщений: 47


« Ответ #8: 31 Январь 2014, 14:21 »

И надеюсь последний вопрос: как перенести макрос в нужный мне документ?
Или еще лучше в шаблон.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #9: 31 Январь 2014, 17:26 »

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

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


Был рад помочь. Ты далеко от форума не уходи - здесь всегда рады помочь, а без свежих вопросов как-то скучновато. "Ты это... заходи, если что..."
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
useb64
Участник
**
Offline Offline

Сообщений: 7


« Ответ #10: 14 Февраль 2017, 13:36 »

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

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

добрый день,

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

С уважением
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 965


« Ответ #11: 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 лист) итд
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
useb64
Участник
**
Offline Offline

Сообщений: 7


« Ответ #12: 14 Февраль 2017, 18:53 »

Вот честно, умиляюсь с подобных задач. Ну ручками можно копи-пастой сделать за 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
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #13: 14 Февраль 2017, 20:14 »

у Вас сохранился этот макрос?
В теме не осталось названия файла, пришлось искать по дате создания... А уже когда нашелся - посмотрел на имя файла. Оборжался... "Элементарно, Ватсон!.."

Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 613



« Ответ #14: 14 Февраль 2017, 23:07 »

вот вам и "давайте удалим все старые файлы"
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!