Удаление при печати пустых строк

Автор Unycom, 11 января 2018, 08:59

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

Unycom

Всем доброго дня.
Интересует возможность удаления пробелов при выводе на печать.
В ячейке А1 текст, А2-А5 — пустые, А6 — текст. При выводе на печать появляется пробел между А1 и А6, как его удалить?
Пустые ячейки будут разные, в зависимости от расчетов.

Unycom

Типа, если ячейка пустая, то высота равна 0?

kompilainenn

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

Unycom

Цитата: kompilainenn от 11 января 2018, 09:12
автофильтр для этой цели нельзя использовать?
это как?

kompilainenn

Это выделить диапазон, применить автофильтр, выбрать в фильтре только не пустые значения, нажать ОК и увидеть на экране только эти значения, отправить на печать
Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут

Unycom

Цитата: kompilainenn от 11 января 2018, 09:34
Это выделить диапазон, применить автофильтр, выбрать в фильтре только не пустые значения, нажать ОК и увидеть на экране только эти значения, отправить на печать
спасибо, вечером попробую, отпишусь

Unycom

И все таки, есть такая формула, которая задает высоту ячейки, строки? Гулглю и ничего найти не могу.

mikekaganski

Вероятно, не можете, потому что её нет.

Это возможно сделать с помощью макроса, но не встроенными формулами.

Рекомендация @kompilainenn оптимальна.
С уважением,
Михаил Каганский

economist

#8
В Интернете огромное количество (можно сказать миллионы) примеров макросов для Excel (VBA), и в LibreOffice Calc (свой язык макросов StarBasic) - они тоже почти всегда работают, стоит лишь добавить строку вверху модуля вида Option VBASupport 1.

При этом код на VBA в 4-5 раз компактнее и понятнее. Вот пример и файл-вложение с кнопкой (код смотреть в файле по Alt+F11). Код написан за 3 минуты.


Option VBASupport 1

Sub HideEmptyRowsOnColumnA
Application.ScreenUpdating=false
For Each r in [A2:A1000] ' до 1000-й строки
If r.value="" Then r.entirerow.hidden=true
Next
Application.ScreenUpdating=true
End Sub

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Unycom

Цитата: economist от 11 января 2018, 11:49
В Интернете огромное количество (можно сказать миллионы) примеров макросов для Excel (VBA), и в LibreOffice Calc (свой язык макросов StarBasic) - они тоже почти всегда работают, стоит лишь добавить строку вверху модуля вида Option VBASupport 1.

При этом код на VBA в 4-5 раз компактнее и понятнее. Вот пример и файл-вложение с кнопкой (код смотреть в файле по Alt+F11). Код написан за 3 минуты.


Option VBASupport 1

Sub HideEmptyRowsOnColumnA
Application.ScreenUpdating=false
For Each r in [A2:A1000] ' до 1000-й строки
If r.value="" Then r.entirerow.hidden=true
Next
Application.ScreenUpdating=true
End Sub


спасибо, пока ничего не понял, вечером буду разбираться, будут вопросы задам ;)

Unycom

Цитата: economist от 11 января 2018, 11:49
В Интернете огромное количество (можно сказать миллионы) примеров макросов для Excel (VBA), и в LibreOffice Calc (свой язык макросов StarBasic) - они тоже почти всегда работают, стоит лишь добавить строку вверху модуля вида Option VBASupport 1.

При этом код на VBA в 4-5 раз компактнее и понятнее. Вот пример и файл-вложение с кнопкой (код смотреть в файле по Alt+F11). Код написан за 3 минуты.


Sub HideEmptyRowsOnColumnA
Application.ScreenUpdating=false
For Each r in [A2:A1000] ' до 1000-й строки
   If r.value="" Then r.entirerow.hidden=true
Next
Application.ScreenUpdating=true
End Sub
[/code]

Запустил Ваш макрос, выскакивает ошибка:
Ошибка времени выполнения BASIC.
'91'
Переменная типа Object не установлена.
[code]
Option VBASupport 1

Что не так делаю?

Unycom

Цитата: Unycom от 11 января 2018, 22:22
Цитата: economist от 11 января 2018, 11:49
В Интернете огромное количество (можно сказать миллионы) примеров макросов для Excel (VBA), и в LibreOffice Calc (свой язык макросов StarBasic) - они тоже почти всегда работают, стоит лишь добавить строку вверху модуля вида Option VBASupport 1.

При этом код на VBA в 4-5 раз компактнее и понятнее. Вот пример и файл-вложение с кнопкой (код смотреть в файле по Alt+F11). Код написан за 3 минуты.


Sub HideEmptyRowsOnColumnA
Application.ScreenUpdating=false
For Each r in [A2:A1000] ' до 1000-й строки
   If r.value="" Then r.entirerow.hidden=true
Next
Application.ScreenUpdating=true
End Sub
[/code]

Запустил Ваш макрос, выскакивает ошибка:
Ошибка времени выполнения BASIC.
'91'
Переменная типа Object не установлена.
[code]
Option VBASupport 1

Что не так делаю?

Сори, вроде все работает, спасибо. Продолжаю разбираться.

Unycom

Цитата: economist от 11 января 2018, 11:49
В Интернете огромное количество (можно сказать миллионы) примеров макросов для Excel (VBA), и в LibreOffice Calc (свой язык макросов StarBasic) - они тоже почти всегда работают, стоит лишь добавить строку вверху модуля вида Option VBASupport 1.

При этом код на VBA в 4-5 раз компактнее и понятнее. Вот пример и файл-вложение с кнопкой (код смотреть в файле по Alt+F11). Код написан за 3 минуты.


Option VBASupport 1

Sub HideEmptyRowsOnColumnA
Application.ScreenUpdating=false
For Each r in [A2:A1000] ' до 1000-й строки
If r.value="" Then r.entirerow.hidden=true
Next
Application.ScreenUpdating=true
End Sub


Еще раз спасибо за макрос.
Сегодня посидел, разобрался. Научился вставлять макрос, запускать. Завел F5 под запуск макроса, F4 под возврат скрытых строк (оптимальная высота строк)
Но теперь столкнулся со следующим.
Такая ячейка =IF(Лист1.G5="-";"";Лист1.A45) скрывается, а
такая =IF(Лист1.G5="-";"";Лист1.C32)&" "&IF(Лист1.G5="-";"";Лист1.I5) и
такая =IF(Лист1.G5="-";"";Лист1.C3)&" "&IF(Лист1.G5="-";"";Лист1.C33)&" "&IF(Лист1.G5="-";"";Лист1.I5)&" "&IF(Лист1.G5="-";"";Лист1.C45)&" "&IF(Лист1.G5="-";"";TEXT(Лист1.J5;"# ##0 [$руб.-419];-# ##0 [$руб.-419]"))
- нет.
Может подскажете что можно сделать?

Unycom

#13
И еще, в теме писал про удаление строк, правильнее - скрытие.
И скрытие должно происходить, когда в ячейках отсутствует текст (при этом вышеуказанные формулы присутствуют)

Нагуглил кучу аналогичных макросов, но все не то. Вышеуказанный мне подходит больше всего.
Помогите его доработать под скрытие не только пустых строк, но и пустых с формулами.
Заранее спасибо.

economist

#14
Цитата: Unycom от 13 января 2018, 19:03Научился вставлять макрос, запускать.
Это (запуск по требованию) - уже делается кнопкой во вложенном в сообщение #8 файле ODS. Согласен, я его, как и любое другое вложение на Форуме - тоже плохо замечаю.

Что касается скрытия строк с формулами, возвращающими пустой текст "" - мой макрос работает в гостях, тут LO 5422, т.к. строка

If r.value="" Then r.entirerow.hidden=true

проверяет как раз значение (value) ячейки - неважно формулой оно возвращено, или же это просто пустая ячейка.

Но формулы из поста #12 крайне неоптимальны, перемудрены. Автору формул стоит функции AND OR NOT и их русских эквивалентов И ИЛИ НЕ, благо в Инете полно инфы - стоит изучить, а формулы в Calc - в один миг становятся "русскими" благодаря людям в т.ч. с нашего Форума, снятием одного флажка.

Плюс русских формул - не в унижении тру-программистов, а в том что написанное в Интернете - никуда не исчезает, и при первом же примитивном поиске "в Гугле" - помощь в подобных вопросах, подсказанная для Excel - станет помощью в OpenOffice|LibreOffice Calc, убойной силой от не "просто конкурента", а от "лучшей программы в мире", изменившей историю (см. Wikipedia). Сделать недостаток - силой, слабость - преимуществом, причем ключевым - это было просто гениально! Так и должно действовать СПО - нагло, хитро, безбоязненно, точечно. Надо отдать должное - впервые это позволил себе именно OpenOffice...

Странный этот эффект - связан с тем что VBA-программистов, возможно, уже миллиард, это единственная технология, которую не отключат злые админы, им это непросто и тупо "сложновато", ввиду собственного flash-скудоумия и "упрятанности" самой технологии. Этот как "право матерится на кухне" ...  - извиняюсь за аналогию. И если этого вы не делали - плохо, вы не использовали прекрасный момент. Почему же?

Да потому что конкуренция, "битва на смерь". Тру-проггеры те самые, которые на С, JAVA итп (список неполон) - очень сильно (бываете-же!) обласканы славой денег - очень ревностно относятся к тому, когда кто-то "юзверь" - взял да и написал программу безо всякого скилла, просто потому что он знает, что нужно получить, а Интернет у него есть. Если вы думаете что такого не бывает - поверьте: именно это до сих пор определяет расстановку сил в IT, даже в крупных компаниях. Но в продвинутом Google - вам дадут денег за любую инициативу, а в отечественной РН - наверняка нет.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...