Вопрос о возможностях Calc

Автор Xy, 23 мая 2012, 10:18

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

Xy

Здравствуйте. Можно ли автоматизировать в Calc процесс поиска крайней заполненной ячейки по конкретной строке? Причём не по всей строке, а по выборочно, например по столбцам начиная с H и далее с шагом 6. Если есть такой способ - подскажите где искать решение. Спасибо.

Yakov

Написать макрос. На StarBasic.


JohnSUN

Но будьте осторожны! Текст макроса-примера по ссылке - это слегка переработанный текст макроса из стандартной библиотеки офиса, Tools. Мало того, что макрос ориентируется на нижнюю правую ячейку области, включающей все заполненные ячейки, возвращает номер строки, а не колонки, так он подвержен еще в результате внесенных правок и дополнительным ошибкам, поскольку пытается получить лист книги по имени, даже не проверив, есть ли такой лист в книге и, вообще, книга ли этот документ.
Но самая главная ошибка возникла в стандартной библиотеке, когда в книгах ООо количество строк перевалило за миллион. Тип возвращаемого функцией значения так и остался Integer, хотя должен был измениться на Long.
Исправить все эти недочеты макроса просто, если о них знать.

Вы могли бы приложить к следующему своему сообщению образец тестовых данных с пояснениями: так данные заполняются по строкам, здесь нужно получить номер (букву?) последней заполненной ячейки, здесь полученное значение будет использоваться для того-то и того-то?... Имея такой файл перед глазами гораздо проще понимать фразы типа
Цитата: Xy от 23 мая 2012, 10:18
по столбцам начиная с H и далее с шагом 6.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Xy

Извиняюсь за собственную дремучесть, однако, как вставить файлик в форум. :)

Yakov

Под текстом ответа есть строка "Вложение"  и кнопка обзор.
Выбираем файл и нажимаем "Отправить"

JohnSUN

Немного подумал над задачей (хоть так и не увидел подробностей проблемы). Наверное, макрос приемлемое решение, но все-таки у него есть несколько недостатков.
Например, пользовательские функции не пересчитываются автоматически при изменении данных в книге. Это в случае, если среди параметров функции нет явной ссылки на изменяемую ячейку. Поэтому нужно принудительно пересчитывать лист через Ctrl+Shift+F9 или идти на ухищрения с функциями RAND() или NOW(). Опять же, нет гарантий, что функция получится достаточно быстрой и книга не начнет тормозить, если будет использован десяток-другой таких формул.
Скорее всего, лучше обойтись встроенными функциями Calc. Да, формулы получаются достаточно громоздкими, но вычисляются быстро и постоянно.

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

Xy

Ну в общем решил обойтись без макросов. Ввёл дополнительную ячейку, в которой прописываю отклонение от текущего столбца. и в команде OFFSET прописал как отклонение по столбцу ссылку на нововведённую ячейку. Получилось удобно)))