Удаление строк с первой пустой ячейкой.

Автор Dr.Alex, 1 июня 2011, 13:18

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

Dr.Alex

Добрый день , помогите пожалуйста с макросом для решения такой задачи. Собственно суть проблемы в теме. Существует таблица , в которой некоторые ячейки строки (в столбце "A") пустые , эти строки мне нужно удалить. Понимаю что можно конечно отсортировать по первому столбцу , а затем удалить в ручную , но в данном случае это необходимо сделать с помощью макроса.

RFJ

Как найти и удалить все пустые строки в Calc?

Если пустые строки начинаются с пустой ячейки в колонке "А":

http://community.i-rs.ru/index.php/topic,18996.msg105336.html#msg105336

Рыбка Рио

Можно ещё вначале отсортировать, а потом удалить строки.

REM*****BASIC*****
Dim Doc As Object

Sub Main
Doc =ThisComponent
oSheet = Doc.CurrentController.ActiveSheet

oCursor = oSheet.createCursor()
oCursor.gotoStart()
oCursor.gotoEndOfUsedArea(TRUE)
nEndRow = oCursor.RangeAddress.EndRow
'сортируем
Dim aSortFields(0) As New com.sun.star.util.SortField
aSortFields(0).Field = 0
aSortFields(0).SortAscending = TRUE

Dim prop(0) As New com.sun.star.beans.PropertyValue
prop(0).Name = "SortFields"
prop(0).Value = aSortFields()
oCursor.Sort(prop())

'удаляем строки
iRow=nEndRow
While oSheet.getCellByPosition(0,iRow).Formula="" and iRow>0
'oSheet.Rows(iRow).clearContents(1 or 2 or 4 or 8 or 16)'см. http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/CellFlags.html
iRow=iRow-1
Wend
oSheet.Rows.removeByIndex(iRow+1,nEndRow-iRow)

End Sub
ubuntu 12.04 + LibO3.6.0

Dr.Alex

Получилось :).Всем ОГОРОМНОЕ СПАСИБО :beer:

smaharbA

Я конечно далек от мысли... (с)

RFJ


Rubikoff

#6
Добрый день!
Воспользовался вашим макросом он мне очень помог, спасибо, но я заметил проблему,
например у меня имеются строчки:
cdr_log_01_10_2015.log: XXXXXXXXXXX 01-10-15 10:26:12 28 20 16



cdr_log_01_10_2015.log: XXXXXXXXXXX 2210291 01-10-15 10:44:15 181 173 16


cdr_log_01_10_2015.log: XXXXXXXXXXX 2210291 01-10-15 11:22:15 46 38 16




cdr_log_01_10_2015.log: XXXXXXXXXXX 01-10-15 12:05:16 148 126 16

cdr_log_01_10_2015.log: XXXXXXXXXXX 01-10-15 12:56:50 107 90 16

(XXXXXXXXXXX - служебная информация), после применения скрипта строки сортируются рандомно:
cdr_log_01_10_2015.log: XXXXXXXXXXX 01-10-15 10:26:12 28 20 16 - 10:26:12
cdr_log_01_10_2015.log: XXXXXXXXXXX 01-10-15 12:05:16 148 126 16 - 12:05:16
cdr_log_01_10_2015.log: XXXXXXXXXXX 01-10-15 12:56:50 107 90 16 - 12:56:50
cdr_log_01_10_2015.log: XXXXXXXXXXX 01-10-15 10:44:15 181 173 16 - 10:44:15
cdr_log_01_10_2015.log: XXXXXXXXXXX 01-10-15 11:22:15 46 38 16 - 11:22:15
а должны идти в строгом порядке как есть по дате/времени.
подскажите пожалуйста как это исправить?

JohnSUN

Или ввести предварительно вспомогательный столбец с текущими номерами строк, а после выполнения удаления отсортировать по нему (вернуть первоначальный порядок) и удалить его...
Или воспользоваться одним из этих способов
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Rubikoff

#8
Разобрался как пронумеровать строки вот только не понял как это поможет?

JohnSUN

На видео по ссылке это Вариант 2 (в интервале 0:59 - 2:52)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Rubikoff

Спасибо, кажется понял как нужно действовать)