Libreoffice calc: функция, которая удаляет строки
Я новичок в Libreoffice Calc.
Моя функция if / else заполняет ячейки на новом листе.
Функция генерирует много пустых строк на новом листе.
Можно ли удалить эти пустые строки с помощью функции?
Что-то вроде:
=IF(NOT(ISEMPTY(sheet1.A1));sheet2.A1; delete row ???)
Или это нужно делать с помощью макроса?
Любая помощь, с которой я могу начать, очень приветствуется.
1 ответ
Я не уверен, как работает стандартный фильтр, но я только что написал этот код макроса, который должен помочь. Предположения:
- Работает на текущем активном листе
- Проверяет только первый столбец на наличие пустого содержимого или пустой строки
- После более чем 100 пустых строк подряд код остановится. Если вы считаете, что их может быть больше, вы можете установить для cMaxBlankRows большее число, но код будет выполняться дольше, если вы установите слишком большое значение.
const cMaxBlankRows = 100 ' stop processing if there are more than this number of blanks in a row
const cMaxRows = 1048575 ' LibreOffice max number of rows - 1, it is zero based
Sub subDeleteBlankRows()
oDoc = ThisComponent
oSheet1 = oDoc.getCurrentController().getActiveSheet()
iIdx = 0
iConBlank = 0 ' number of continuous blanks
Do While iIdx <= cMaxRows
oCell = oSheet1.getCellByPosition(0,iIdx)
If oCell.getType() = com.sun.star.table.CellContentType.EMPTY OR Len(oCell.getString()) = 0 Then
' found an empty cell, delete the row
oSheet1.Rows.removeByIndex(iIdx,1)
iConBlank = iConBlank + 1
' don't advance iIdx
if iConBlank > cMaxBlankRows Then Exit Do
Else
iIdx = iIdx + 1
iConBlank = 0
End If
Loop
End Sub