Libreoffice calc: функция, которая удаляет строки

Я новичок в Libreoffice Calc.
Моя функция if / else заполняет ячейки на новом листе.
Функция генерирует много пустых строк на новом листе.
Можно ли удалить эти пустые строки с помощью функции?
Что-то вроде:

      =IF(NOT(ISEMPTY(sheet1.A1));sheet2.A1; delete row ???)

Или это нужно делать с помощью макроса?
Любая помощь, с которой я могу начать, очень приветствуется.

1 ответ

Я не уверен, как работает стандартный фильтр, но я только что написал этот код макроса, который должен помочь. Предположения:

  1. Работает на текущем активном листе
  2. Проверяет только первый столбец на наличие пустого содержимого или пустой строки
  3. После более чем 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
Другие вопросы по тегам