Заполнение пустых ячеек данными из предыдущей непустой

Автор chastuhin, 16 апреля 2012, 18:11

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

chastuhin

Подскажите plz, как заполнить все встречающиеся пустые ячейки в столбце данными из предыдущей. В Excel это выглядит вот так http://blog.galievr.ru/?p=357
Не нашел подобного вопроса с ответом.

VlhOwn

Выделить диапазон, содержащий непустую ячейку и подлежащие заполнению пустые, и нажать Ctrl-D (или Правка -> Заполнить).

chastuhin

Цитата: VlhOwn от 17 апреля 2012, 09:05
Выделить диапазон, содержащий непустую ячейку и подлежащие заполнению пустые, и нажать Ctrl-D (или Правка -> Заполнить).
Тогда будет заполнен весь столбец данными из этой непустой ячейки. А надо от первой непустой до второй данными из первой, из второй до третьей данными из второй и так далее. Ну собственно ссылочку в вопросе ведь вставил, чтобы непонятно не описывать.

VlhOwn

Цитата: VlhOwn от 17 апреля 2012, 09:05
диапазон, содержащий непустую ячейку и подлежащие заполнению пустые
Выделяйте, заполняйте, выделяйте заполняйте ... большего функционала я не знаю.
Вариант 2. Пишите макрос.

JohnSUN

Суть решения по ссылочке сводится к вставке формулы =<значение сверху> для всех пустых ячеек.
Насколько я знаю, в этих офисах нет простого способа отыскать и выделить пустые ячейки. И это хорошо. Потому как одно дело отыскать их на листе в 256 колонок и 65К строк, и совсем другое - нечаянно запустить этот процесс на миллион строк и тысячу колонок...
Однако задача имеет решение. Не такое быстрое, как в Экселе, но тоже работает.
Для разных офисов последовательность действий немного различается. Дело в том, что OpenOffice.org и LibreOffice по-разному отрабатывают выделение группы ячеек: OpenOffice.org сдвигает "активную ячейку" (которая с черной рамочкой, в которую формулу вписывать надо), а LibreOffice оставляет её на месте.
Для OpenOffice.org:
1. Ctrl+End - перепрыгнуть на последнюю непустую ячейку листа.
2. Стрелка вправо - последняя ячейка первой свободной колонки после данных
3. Ctrl+Shift+стрелка вверх - выделить ячейки этого столбца до самого верха, до первой строки
4. Shift+стрелка вниз - снять выделение с ячейки в первой строке. Дело в том, что наша формула должна ссылаться на "ячейку выше", в первой строке такая формула смысла не имеет
5. = - начинаем ввод формулы
6. стрелка вверх - ввести в формулу адрес ячейки из этого же столбца, но из первой строки.
7. Alt+Enter - заполнить формулами весь выделенный диапазон. Сейчас формула вернет просто ноль, но это временно, сейчас мы добавим значения для формул.
8. Ctrl+End - перепрыгнуть в последнюю заполненную ячейку
9. Home - перепрыгнуть в первую колонку
10. Ctrl+Shift+Home - выделить весь столбец
11. Ctrl+C (или Ctrl+Ins) - скопировать в буфер обмена "разреженные" значения
12. End - перепрыгнуть в конец первой строки
13 Ctrl+Shift+V - "Вставить как...". Здесь нужно выставить два параметра: "Вставить всё" и "Пропуск пустых ячеек" (Alt+я). ОК, в смысле - Enter. Столбец с нужными значениями получен, осталось перенести его на исходное место.
14. Shift+Del (или Ctrl+X) - Home - Shift+Ins (или Ctrl+V)

Описание получилось длинным и скучным, кажется, что так много всего нужно сделать. На самом деле - это очень быстро. Во всяком случае, не дольше чем в Экселе. Чтобы убедиться - см. приложенный мультик.

Для LibreOffice последовательность будет немного другая, но суть остается той же: для всего нужного диапазона вставляем формулу, заменяем некоторые из формул значениями из "разреженного" столбца, переносим результат в нужное место.

Можно попробовать обычным макрорекордером записать эту последовательность в макрос. Насколько я понимаю, главной проблемой будет "Вставить как..."

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

Hasim


JohnSUN

Будешь, наверное, смеяться - уже давно написан, еще в 2006 году.
Там на английском, но все просто. Открываем последний лист TEST_fillBlanks, читаем инструкцию в A1 и выполняем... Убеждаемся, что всё работает правильно и копируем макросы в свою библиотеку...

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

chastuhin

Спасибо, придется всё делать через гемор, типо макрос :-) помноженное на неумение. Буду озадачивать местных программеров :-).

Hasim

Цитата: JohnSUN от 17 апреля 2012, 16:07Будешь, наверное, смеяться - уже давно написан, еще в 2006 году.
Зачем смеяться. Я так думаю, что почти всё уже давно написано. Только найти иногда трудно.

Цитата: JohnSUN от 17 апреля 2012, 17:07
копируем макросы в свою библиотеку...
Так и делаем, велосипед изобретать не стоит.

chastuhin