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

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

22 Апрель 2021, 23:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3 »   Вниз
  Печать  
Автор Тема: Множественная вставка в несмежные ячейки некоторой формулы  (Прочитано 1497 раз)
0 Пользователей и 1 Гость смотрят эту тему.
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 515



« Ответ #15: 23 Март 2021, 14:16 »

При решении этой задачи с использованием макросов тоже была сложность: как перебрать пустые ячейки и заполнить их. Дело в том, что из коллекции ячеек всегда удаляются пустые ячейки, и надо было организовывать несколько вложенных циклов для перебора всего и вся… Муторно и медленно.
Решение от @sokol92 (ссылка в стартовом сообщении) было тоже «трюковым».

Приведу часть решения: операция присваивания. Разом…
Код:
'   Assigns a value (formula, number, or text) to cells in a rectangular range.
Sub AssignValueToRange(oRange As Object, value)
   ' The .Formula property should cover all input needs, even numbers.
   oRange.getCellByPosition(0, 0).Formula = value  'the lead cell
   With com.sun.star.sheet.FillDirection
      oRange.fillAuto(.TO_BOTTOM, 1)  '0
      oRange.fillAuto(.TO_RIGHT, 1)  '1
   End With
End Sub
« Последнее редактирование: 23 Март 2021, 14:19 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 515



« Ответ #16: 23 Март 2021, 15:20 »

Вот так будет выглядеть лист после вставки формулы во все ячейки выделенного диапазона (A3:B20). Часть данных (те, что чёрного цвета) затёрты (см. ответ #7).


* Снимок экрана от 2021-03-24 06-36-17.png (94.38 Кб, 609x442 - просмотрено 10 раз.)
« Последнее редактирование: 24 Март 2021, 07:12 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 515



« Ответ #17: 23 Март 2021, 15:35 »

Посмотрело более 100 человек.
Не буду томить ожиданием и приведу решение.

Итак, часть данных была затёрта, но в буфере обмена остался скопированный исходный диапазон с данными и пустыми ячейками.
Не снимая выделения, открываем окно специальной вставки (Ctrl+Shift+V), устанавливаем параметр "Пропуск пустых ячеек" и жмём на кнопку "ОК". Это и был наш последний шаг. Готово.

Затёртые данные восстановлены, а формулы в ранее пустых, но теперь заполненных ячейках пересчитались, отобразив правильную информацию. Трюк?

Вот так работает множественная вставка в несмежные ячейки.
Вводить таким способом можно что угодно…
« Последнее редактирование: 23 Март 2021, 15:40 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 250



« Ответ #18: 23 Март 2021, 15:50 »

не уловил. давайте решение по шагам
Записан

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

Пол: Мужской
Сообщений: 515



« Ответ #19: 23 Март 2021, 16:43 »

Хорошо, чуть позже.

Я тут давно уже предлагаю соорудить "копилку" решений. От этого форум только выиграет…
Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 515



« Ответ #20: 23 Март 2021, 18:36 »

Итак, всё ещё раз по порядку применительно к нашему примеру:

1. Ставим курсор в ячейке A3 и выделяем диапазон A3:B20, содержащий незаполненные ячейки;
2. Выполнить команды меню: Правка (Edit) → Копировать (Copy) или нажать клавиши Ctrl+C;
3. Не снимая выделения ввести в ячейку A3 формулу со ссылкой на ячейку выше: =A2
4. Ввести введённую формулу в весь выделенный диапазон, нажав Alt+Enter;
5. Выполнить команды меню: Правка (Edit) → Специальная вставка (Paste Special) → Вставить все данные (Paste all)
или для открытия окна диалога «Специальная вставка» нажать клавиши Ctrl+Shift+V, далее → Пропуск пустых ячеек (Skip empty cells) → OK

Пояснение. Когда мы вставляем формулу в диапазон, мы затираем часть информации. Это не важно, главное – правильная формула легла в пустые ячейки. В данный момент эти пустые ячейки отображают одинаковую (неверную) информацию из-за затёртых данных (наименований категорий и подкатегорий). Но ведь мы их скопировали в буфер обмена, верно? Вставляем обратно, но – внимание: важная деталь! – только исходные данные, кроме пустых скопированных ячеек! Правильно, ведь пустые ячейки (те, что в буфере) уже заполнены нашей формулой на листе. Замещается, то есть восстанавливается, только содержание ранее непустых ячеек. А формулы, которые на них ссылаются, мгновенно пересчитываются.
Готово.

На решение этой задачи у меня "ушло"… полтора года, пока я пытался восстановить утраченную в связи с переходом с MS Excel на LO Calc функциональность.
« Последнее редактирование: 24 Март 2021, 07:24 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 515



« Ответ #21: 23 Март 2021, 18:54 »

@kompilainenn, мы тут с вами два флажка откопали… Как перевели, так и понимаем. Интуитивно непонятно. Возможно, надо проинформировать тех, кто занимается адаптацией интерфейса.

Например:
«Распознавать незаполненные категории»
«Пропуск пустых ячеек в памяти» (буфере обмена данными)
« Последнее редактирование: 23 Март 2021, 18:59 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 515



« Ответ #22: 24 Март 2021, 06:49 »

Появилось время, загрузил демо-скриншоты и исправил ошибки в файле и на скриншоте, прикреплённых к ответам 14 и 16 соответственно.
Для наглядности изначально пустые ячейки отформатированы красным цветом шрифта.
К ответу 20:


* Снимок экрана от 2021-03-24 06-35-41.png (64.93 Кб, 608x443 - просмотрено 7 раз.)

* Снимок экрана от 2021-03-24 06-36-02.png (64.58 Кб, 608x444 - просмотрено 6 раз.)

* Снимок экрана от 2021-03-24 06-36-17.png (94.38 Кб, 609x442 - просмотрено 7 раз.)

* Снимок экрана от 2021-03-24 06-36-43.png (53.4 Кб, 328x547 - просмотрено 7 раз.)
« Последнее редактирование: 24 Март 2021, 07:17 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 515



« Ответ #23: 24 Март 2021, 06:52 »

К ответу 20: продолжение...
После обратной вставки на лист скопированного в буфер диапазона, но только с пропуском пустых (ранее скопированных в буфер) ячеек, которые в данный момент уже заполнены формулами на листе, "ошибки" исправляются.

Итоговый файл с 2-мя листами прикреплён. Сводная таблица обновляется вручную.


* Снимок экрана от 2021-03-24 06-36-49.png (98.99 Кб, 608x442 - просмотрено 7 раз.)

* Снимок экрана от 2021-03-24 06-37-18.png (97.89 Кб, 609x443 - просмотрено 7 раз.)
* Example03 (multiple insert).ods (25.31 Кб - загружено 1 раз.)
« Последнее редактирование: 24 Март 2021, 09:01 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
eeigor
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 515



« Ответ #24: 24 Март 2021, 08:21 »

@kompilainenn, один вопрос:
Получила ли опция "Пропуск пустых ячеек" ("Skip empty cells") окна диалога "Специальная вставка" должное описание в руководстве на русском?
Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 250



« Ответ #25: 24 Март 2021, 09:12 »

Получила ли опция "Пропуск пустых ячеек" ("Skip empty cells") окна диалога "Специальная вставка" должное описание в руководстве на русском?
Всё, что я перевел - доступно на этом форуме в соответствующей теме
Записан

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

Пол: Мужской
Сообщений: 515



« Ответ #26: 24 Март 2021, 11:24 »

Да, информация есть:
«Options – sets the paste options for the clipboard contents.
Skip empty cells – empty cells from the clipboard do not replace target cells. <…>».
В переводе:
Пропуск пустых ячеек – пустые ячейки из буфера обмена не заменяют собой целевые ячейки.

Нет только примера использования.
« Последнее редактирование: 24 Март 2021, 17:33 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
sokol92
Форумчанин
***
Offline Offline

Пол: Мужской
Сообщений: 381


WWW
« Ответ #27: 24 Март 2021, 15:20 »

Симпатичный прием - раньше не обращал внимание на эту опцию вставки.
Записан

Владимир.
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 3 250



« Ответ #28: 24 Март 2021, 16:52 »

Симпатичный прием
Но сама ситуация - костыль костылем
Записан

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

Пол: Мужской
Сообщений: 515



« Ответ #29: 24 Март 2021, 17:14 »

Ну, в Excel для решения этой задачи есть две возможности:
1) выделить пустые ячейки (скриншот) и 2) выполнить вставку в множественный диапазон (Ctrl+Enter).
Вторая задача кажется простой только на вид, но они реализовали это не сразу.
Данный приём делает это! До этого я делал то же, используя целых два "костыля": 1) SelectEmptyCells и 2) FillEmptyCells. Но решение без макросов доступнее.

Кстати, зачем была добавлена эта опция ("Пропуск пустых ячеек"), и где (как) ещё её можно применить, не опираясь на…? Есть идеи?


* 9330D871-4550-4CF5-AFB8-E3A5C98BCEEE.png (43.57 Кб, 490x535 - просмотрено 7 раз.)
« Последнее редактирование: 24 Март 2021, 17:20 от eeigor » Записан

Ubuntu 18.04 LTS • LO 7.1.1.2 Community
Страниц: « 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!