Добрый день , помогите пожалуйста с макросом для решения такой задачи. Собственно суть проблемы в теме. Существует таблица , в которой некоторые ячейки строки (в столбце "A") пустые , эти строки мне нужно удалить. Понимаю что можно конечно отсортировать по первому столбцу , а затем удалить в ручную , но в данном случае это необходимо сделать с помощью макроса.
Как найти и удалить все пустые строки в Calc?
Если пустые строки начинаются с пустой ячейки в колонке "А":
http://community.i-rs.ru/index.php/topic,18996.msg105336.html#msg105336 (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
Получилось :).Всем ОГОРОМНОЕ СПАСИБО :beer:
финдал с !. предлагали ?
Добрый день!
Воспользовался вашим макросом он мне очень помог, спасибо, но я заметил проблему,
например у меня имеются строчки:
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
а должны идти в строгом порядке как есть по дате/времени.
подскажите пожалуйста как это исправить?
Или ввести предварительно вспомогательный столбец с текущими номерами строк, а после выполнения удаления отсортировать по нему (вернуть первоначальный порядок) и удалить его...
Или воспользоваться одним из этих способов (https://youtu.be/inxTQ2vkQTI)
Разобрался как пронумеровать строки вот только не понял как это поможет?
На видео по ссылке это Вариант 2 (в интервале 0:59 - 2:52)
Спасибо, кажется понял как нужно действовать)