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

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

16 Июль 2019, 01:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 41


« Стартовое сообщение: 18 Июль 2012, 14:52 »

И снова здравствуйте  Всё хорошо

Добиваю свой многострадальный бланк. На сей раз, руководство сделало замечание, что в бланк будут добавляться данные не только с одного листа, а с разных и данные в столбцах там отличаются.

Так вот нужна команда, которая бы заменила содержимое столбцов, допустим столбец C переполз на D, столбец J на N и таких замен предполагается штук 5-6. Потому что в одном листе исходнике ФИО клиента в одной колонке, а в другом листе в другой и так далее.

Мой нынешний макрос

1) копирует отмеченные пользователем строки и вставляет их в заранее очищенный лист.
2) Лист Бланк втягивает данные из этого листа формулами ссылками по 1-10 позиций.

если будет какой-то другой способ, с удовольствием принимаю варианты. Пока в голову ничего другого не пришло кроме как того что имеется. Каждый раз с нуля создавать новый бланк макросом не хотелось бы - много таблиц, картинок формата и прочего...
« Последнее редактирование: 25 Июль 2012, 08:09 от Nikem79 » Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #1: 18 Июль 2012, 17:32 »

Так вот нужна команда, которая бы заменила содержимое столбцов, допустим столбец C переполз на D, столбец J на N и таких замен предполагается штук 5-6. Потому что в одном листе исходнике ФИО клиента в одной колонке, а в другом листе в другой и так далее.
Уточни: "переполз" - это "скопировался" или "переместился"? C и D поменялись местам? Или данные в D стали дублями C? Или данные в D затерты данными из C, а сам C очистился?
Мой нынешний макрос
1) копирует отмеченные пользователем строки и вставляет их в заранее очищенный лист.
Круто! Что-то похожее тут уже делали... Кажется, в этой теме

если будет какой-то другой способ, с удовольствием принимаю варианты.
Ну, насчет удовольствия - это ты погорячился. Почему-то все, кому советуют отказаться от Calc'а и попробовать Base для решения похожих задач, огорчаются, обижаются, продолжают бодаться с Calc'ом...
Записан

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

Сообщений: 41


« Ответ #2: 19 Июль 2012, 09:39 »

Думаю поменять местами будет нормально... Хотя не критично, можно и заменой. Вообщем это особой роли не играет, так как из этого листа данные выборочно будут втягиваться в Бланк.
Записан
Nikem79
Участник
**
Offline Offline

Сообщений: 41


« Ответ #3: 19 Июль 2012, 10:13 »

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

Допустим, в исходном документе 5 столбцов под названиями ФИО, Наименование, Кол-во, Цена, Предоплата
пользователь выделяет несколько строк, нажимает правую мышку, запускает макрос.
Макрос спрашивает, "Добавить данные в существующий лист или очистить перед добавлением?"
проверяет есть ли данные в "буферном" листе, если есть и пользователь выбрал "добавить", то
добавляет данные выделенной колонки "ФИО" в колонку "ФИО" на новом листе, данные колонки "Наименование" в колонку "Наименование" и так далее.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #4: 19 Июль 2012, 12:26 »

Действительно, что-то бланк у тебя получается много-много-многострадальный.
Можешь его сюда кинуть? Причем выбери самый "грязный" вариант, где нужно много "перестановок" сделать, выбрать данные в разных местах и т.п. И раскрась ячейки, с которыми нужно работать в разные цвета. Это чтобы потом по ходу обсуждения можно было бы говорить "а зеленую область перенести в колонки C-D-E..."
Записан

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

Сообщений: 41


« Ответ #5: 19 Июль 2012, 13:17 »

да, собственно сделал небольшую копию документа чего хотелось бы сделать http://sellmusic.16mb.com/files/DelMe.ods

Сам оригинал не желательно выкладывать, там личные данные клиентов. Выслал в личку

Конечная цель:

Пользователь выделаяет позиции из одного, а иногда и из нескольких листов, иногда черезстрочно и они заносятся в бланк. Но обычно позиции не составляют общим объёмом больше 10 шт.

всю голову уже сломал, как удобно изъять из нескольких листов  В замешательстве
« Последнее редактирование: 19 Июль 2012, 13:22 от Nikem79 » Записан
Nikem79
Участник
**
Offline Offline

Сообщений: 41


« Ответ #6: 20 Июль 2012, 15:47 »

Слишком сложно?.. Есть какая нибудь функция сортировки столбцов из выделенного фрагмента?..
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #7: 20 Июль 2012, 16:33 »

Она не понадобится. Твоя идея насчет согласования данных по заголовкам столбцов совершенно правильная. Потерпи немного (я на работе, всё-таки)
Записан

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

Сообщений: 41


« Ответ #8: 21 Июль 2012, 12:46 »

* Nikem79 набрался терпения)
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #9: 21 Июль 2012, 22:08 »

"И это правильно..." (с) М.С.Горбачёв
В общем, как-то так.
Вешать вызов макроса на правую кнопку не стал... Как-то не хотелось обычное привычное контекстное меню портить.
Вместо этого сделал две кнопки на отдельной панели управления (см. картинку).

Вообще-то, раз уж макросом данные переносятся, то, наверное, можно было бы обойтись без буферного листа - писать прямо в бланк. Но тебе виднее

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

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

Сообщений: 41


« Ответ #10: 23 Июль 2012, 11:41 »

Спасибо огромное, уже вникаю.
Переносить на прямую в бланк не удобно тем, что иногда в исходниках полная ерунда, которую нужно исправлять. Если Бланк защищать, то на месте исправлять не представится возможным, таким образом испраления для бланка будут возможны в буферном листе. Может быть конечно есть какая-то возможность вносить данные без защиты бланка, но боюсь будут ломать его постоянно, и всё время нужно будет его восстанавливать. Вообщем как-то так...
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #11: 23 Июль 2012, 12:47 »

Да нет, я чуть про другое писал... Имелось в виду, что набросав заготовок в буферный лист, мы их переносим в бланк. Сейчас ты это делаешь формулами. При этом невозможно играться высотой бланка, количеством строк: сколько их надо будет вывести заранее неизвестно, поэтому будут или лишние пустые до подписи, или когда-нибудь не хватит имеющихся.
Лучше бы менеджер просмотрел заготовки в буферном листе, отсортировал их как-то и всё такое, а потом нажал кнопку и запустил отдельный макрос.
А уже этот макрос сформировал бы готовый бланк из нескольких шаблонных кусков (шапка, подпись, строки данных), хранящихся где-то на скрытом листе, и данных с буферного листа, а в самом конце защитил бы лист бланка от изменений... Может быть, даже открыл окно предварительного просмотра с этим листом, чтобы только кнопку Печать нажать осталось...

Тот макрос, который я дал, писался на скорую руку. Поэтому он очень далёк от совершенства... Например, при сборе номеров строк нужно бы проверять, а попадает ли выделенная строка в область с данными (не больше ли номер выделенной строки чем getLastUsedRow()). А то ведь, если выделить ВЕСЬ лист, то макрос сейчас и заведомо пустые строки попытается обработать. А их - больше миллиарда!
Или, например, при перенесении данных информация о заголовках столбцов сейчас считывается каждый раз. А можно было бы хранить прошлый обработанный номер листа и читать заголовки только если этот номер меняется...

В общем, можно было бы улучшать и улучшать...
Записан

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

Сообщений: 41


« Ответ #12: 23 Июль 2012, 13:26 »

Да уже всё работает отлично, не получилось только вывести в отдельный столбец номера выделенных строк... А это актуально. Есть такая возможность? Куда что дописать?..
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

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


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


WWW
« Ответ #13: 23 Июль 2012, 14:11 »

Номера? В смысле - первоначальные? Или сквозная нумерация для получившегося набора?
Записан

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

Сообщений: 41


« Ответ #14: 23 Июль 2012, 14:42 »

в первый столбец SName листа номера для каждой строчки в которых была выделена хотя бы одна ячейка
ну грубо говоря, каждый номер строчки листа это номер заказа. В буферном листе нужны эти номера заказов чтобы ими манипулировать в бланке
Записан
Страниц: 1 2 3 »   Вверх
  Печать  
 
Перейти в:  

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