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

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

22 Сентябрь 2017, 19:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как узнать кол-во непустых строк в столбце B?  (Прочитано 490 раз)
0 Пользователей и 1 Гость смотрят эту тему.
joshua
Новичок
*
Offline Offline

Сообщений: 47



« Стартовое сообщение: 6 Июнь 2017, 12:55 »

Господа Магистры, вопрос следующий:
Есть столбец B, в нем заполнены данные, как узнать кол-во непустых ячеек в столбце B?

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

oCell = oSheet.getCellByPosition (4, 0)
oCell.Formula="=CountA(B1:B400000)"
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 316


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 6 Июнь 2017, 14:11 »

В каком из смыслов "непустых"? Точнее, что считать "пустыми ячейками"?
1) Нет ничего
2) Есть формула, но она сейчас возвращает пустую строку
3) Значение вообще-то есть, но за счет хитрого форматирования не отображается
Записан

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

Сообщений: 47



« Ответ #2: 6 Июнь 2017, 14:16 »

В каком из смыслов "непустых"? Точнее, что считать "пустыми ячейками"?
1) Нет ничего
2) Есть формула, но она сейчас возвращает пустую строку
3) Значение вообще-то есть, но за счет хитрого форматирования не отображается
Нет ничего. У меня по сути столбец сплошных данных мне надо знать где он заканчивается на 100- ячейке или на 53000-чной.. Для этого я и хочу подсчитать кол-во значений в столбце.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 316


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 6 Июнь 2017, 14:30 »

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

Upd. Вот пример использования того и другого методов - можешь сравнить результаты на разных наборах данных:
Код:
Sub calcCountOrEmptyCells
Dim oSheets As Variant
Dim oSheet As Variant
Dim nCount As Long
Dim oEmptyRanges As Variant
Dim nLastRow As Long
oSheets = ThisComponent.getSheets()
oSheet = oSheets.getByIndex(0)
Rem Здесь замеряется колонка D, как у тебя в примере
nCount = oSheet.getColumns().getByIndex(3).computeFunction(com.sun.star.sheet.GeneralFunction.COUNT)
oEmptyRanges = oSheet.getColumns().getByIndex(3).queryEmptyCells()
nLastRow = -1
If oEmptyRanges.getCount() > 0 Then nLastRow = oEmptyRanges.getByIndex(oEmptyRanges.getCount()-1).getRangeAddress().StartRow
MsgBox "Compare results: nCount(" + nCount + ") = nLastRow(" + nLastRow + ") ?"
End Sub
« Последнее редактирование: 6 Июнь 2017, 14:50 от JohnSUN » Записан

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

Сообщений: 47



« Ответ #4: 6 Июнь 2017, 15:40 »

Спасибо за помощь!
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!