eeigor
|
При решении этой задачи с использованием макросов тоже была сложность: как перебрать пустые ячейки и заполнить их. Дело в том, что из коллекции ячеек всегда удаляются пустые ячейки, и надо было организовывать несколько вложенных циклов для перебора всего и вся… Муторно и медленно. Решение от @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
|
Вот так будет выглядеть лист после вставки формулы во все ячейки выделенного диапазона (A3:B20). Часть данных (те, что чёрного цвета) затёрты (см. ответ #7).
|
|
« Последнее редактирование: 24 Март 2021, 07:12 от eeigor »
|
Записан
|
Ubuntu 18.04 LTS • LO 7.1.1.2 Community
|
|
|
eeigor
|
Посмотрело более 100 человек. Не буду томить ожиданием и приведу решение.
Итак, часть данных была затёрта, но в буфере обмена остался скопированный исходный диапазон с данными и пустыми ячейками. Не снимая выделения, открываем окно специальной вставки (Ctrl+Shift+V), устанавливаем параметр "Пропуск пустых ячеек" и жмём на кнопку "ОК". Это и был наш последний шаг. Готово.
Затёртые данные восстановлены, а формулы в ранее пустых, но теперь заполненных ячейках пересчитались, отобразив правильную информацию. Трюк?
Вот так работает множественная вставка в несмежные ячейки. Вводить таким способом можно что угодно…
|
|
« Последнее редактирование: 23 Март 2021, 15:40 от eeigor »
|
Записан
|
Ubuntu 18.04 LTS • LO 7.1.1.2 Community
|
|
|
|
eeigor
|
Хорошо, чуть позже.
Я тут давно уже предлагаю соорудить "копилку" решений. От этого форум только выиграет…
|
|
|
Записан
|
Ubuntu 18.04 LTS • LO 7.1.1.2 Community
|
|
|
eeigor
|
Итак, всё ещё раз по порядку применительно к нашему примеру:
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
|
@kompilainenn, мы тут с вами два флажка откопали… Как перевели, так и понимаем. Интуитивно непонятно. Возможно, надо проинформировать тех, кто занимается адаптацией интерфейса.
Например: «Распознавать незаполненные категории» «Пропуск пустых ячеек в памяти» (буфере обмена данными)
|
|
« Последнее редактирование: 23 Март 2021, 18:59 от eeigor »
|
Записан
|
Ubuntu 18.04 LTS • LO 7.1.1.2 Community
|
|
|
eeigor
|
Появилось время, загрузил демо-скриншоты и исправил ошибки в файле и на скриншоте, прикреплённых к ответам 14 и 16 соответственно. Для наглядности изначально пустые ячейки отформатированы красным цветом шрифта. К ответу 20:
|
|
« Последнее редактирование: 24 Март 2021, 07:17 от eeigor »
|
Записан
|
Ubuntu 18.04 LTS • LO 7.1.1.2 Community
|
|
|
eeigor
|
К ответу 20: продолжение... После обратной вставки на лист скопированного в буфер диапазона, но только с пропуском пустых (ранее скопированных в буфер) ячеек, которые в данный момент уже заполнены формулами на листе, "ошибки" исправляются.
Итоговый файл с 2-мя листами прикреплён. Сводная таблица обновляется вручную.
|
|
« Последнее редактирование: 24 Март 2021, 09:01 от eeigor »
|
Записан
|
Ubuntu 18.04 LTS • LO 7.1.1.2 Community
|
|
|
eeigor
|
@kompilainenn, один вопрос: Получила ли опция "Пропуск пустых ячеек" ("Skip empty cells") окна диалога "Специальная вставка" должное описание в руководстве на русском?
|
|
|
Записан
|
Ubuntu 18.04 LTS • LO 7.1.1.2 Community
|
|
|
kompilainenn
|
Получила ли опция "Пропуск пустых ячеек" ("Skip empty cells") окна диалога "Специальная вставка" должное описание в руководстве на русском? Всё, что я перевел - доступно на этом форуме в соответствующей теме
|
|
|
Записан
|
|
|
|
eeigor
|
Да, информация есть: «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
|
Симпатичный прием - раньше не обращал внимание на эту опцию вставки.
|
|
|
Записан
|
Владимир.
|
|
|
kompilainenn
|
Симпатичный прием Но сама ситуация - костыль костылем
|
|
|
Записан
|
|
|
|
eeigor
|
Ну, в Excel для решения этой задачи есть две возможности: 1) выделить пустые ячейки (скриншот) и 2) выполнить вставку в множественный диапазон (Ctrl+Enter). Вторая задача кажется простой только на вид, но они реализовали это не сразу. Данный приём делает это! До этого я делал то же, используя целых два "костыля": 1) SelectEmptyCells и 2) FillEmptyCells. Но решение без макросов доступнее.
Кстати, зачем была добавлена эта опция ("Пропуск пустых ячеек"), и где (как) ещё её можно применить, не опираясь на…? Есть идеи?
|
|
« Последнее редактирование: 24 Март 2021, 17:20 от eeigor »
|
Записан
|
Ubuntu 18.04 LTS • LO 7.1.1.2 Community
|
|
|
|