Предположим, у меня есть это это Cells:Обратный порядок столбцов в Libre офисе известково
А потом по какой-то причине я хочу, чтобы автоматически изменить порядок столбцов, чтобы стать чем-то вроде этого:
любая помощь будет оценена!
Предположим, у меня есть это это Cells:Обратный порядок столбцов в Libre офисе известково
А потом по какой-то причине я хочу, чтобы автоматически изменить порядок столбцов, чтобы стать чем-то вроде этого:
любая помощь будет оценена!
Итак, это подход с использованием Libreoffice Basic и API Libreoffice.
sub ReverseColumns()
oThisWorkbook = ThisComponent
oActiveSheet = oThisWorkbook.CurrentController.ActiveSheet
oRow1 = oActiveSheet.getRows().getByIndex(0)
aFilledCellsRow1 = oRow1.queryContentCells(1+2+4+16).getRangeAddresses()
if ubound(aFilledCellsRow1) = -1 then exit sub
lLastFilledColumnRow1 = aFilledCellsRow1(ubound(aFilledCellsRow1)).EndColumn
c = 0
for i = lLastFilledColumnRow1 to 1 step -1
oCellTargetColumn = oActiveSheet.getCellByPosition(c, 0)
oRangeAddressTargetColumn = oCellTargetColumn.RangeAddress
oActiveSheet.insertCells(oRangeAddressTargetColumn, com.sun.star.sheet.CellInsertMode.COLUMNS)
oCellTargetColumn = oActiveSheet.getCellByPosition(c, 0)
oCellAddressTargetColumn = oCellTargetColumn.CellAddress
oRangeSource = oActiveSheet.Columns.getByIndex(lLastFilledColumnRow1 + 1)
oRangeAddressSource = oRangeSource.RangeAddress
oActiveSheet.moveRange(oCellAddressTargetColumn, oRangeAddressSource)
c = c + 1
next
end sub
Это первый определяет последний заполненный столбец в строке 1. Процесс обратного преобразования столбцов будет выполнен до этой колонки.
Для изучения макрокоманд в LibreOffice начать здесь: https://wiki.documentfoundation.org/Macros
Я не знаю, где я делаю это неправильно, что этот макрос останавливается для меня «БАЗОВАЯ синтаксическая ошибка. Ожидается следующее: Sub.' – SirSaleh
Это означает, что ключевое слово 'Sub' ожидается, но не найдено. Вы видели, как мой код начинается с 'sub ReverseColumns()' в первой строке? –
Да! И я проверяю его в своем коде! У меня тоже есть, Но ошибка существует. – SirSaleh
В случае, если кто здесь хочет изменить порядок строк (вместо столбцов) ... Я взял код макроса posted by @Axel-Richter и редактировал его, так это делает именно это:
sub ReverseRows()
oThisWorkbook = ThisComponent
oActiveSheet = oThisWorkbook.CurrentController.ActiveSheet
oColumn1 = oActiveSheet.getColumns().getByIndex(0)
aFilledCellsColumn1 = oColumn1.queryContentCells(1+2+4+16).getRangeAddresses()
if ubound(aFilledCellsColumn1) = -1 then exit sub
lLastFilledRowColumn1 = aFilledCellsColumn1(ubound(aFilledCellsColumn1)).EndRow
c = 0
for i = lLastFilledRowColumn1 to 1 step -1
oCellTargetRow = oActiveSheet.getCellByPosition(0, c)
oRangeAddressTargetRow = oCellTargetRow.RangeAddress
oActiveSheet.insertCells(oRangeAddressTargetRow, com.sun.star.sheet.CellInsertMode.ROWS)
oCellTargetRow = oActiveSheet.getCellByPosition(0, c)
oCellAddressTargetRow = oCellTargetRow.CellAddress
oRangeSource = oActiveSheet.Rows.getByIndex(lLastFilledRowColumn1 + 1)
oRangeAddressSource = oRangeSource.RangeAddress
oActiveSheet.moveRange(oCellAddressTargetRow, oRangeAddressSource)
c = c + 1
next
end sub
Как этот вопрос связан с программированием? Вставьте новый пустой столбец 'A' слева перед старым столбцом' A'. Вырезать/Вставить последний столбец 'D'. Теперь вырезаем/вставляем столбец 'B' в пустой столбец' D'. Удалите пустой столбец 'B'. –
@AxelRichter Спасибо за ваш комментарий. Но я думаю, что есть недоразумение. Эти 3 столбца являются всего лишь примером. Я хочу сделать это для большого количества столбцов. Так что Cut и Paste не то, что я ищу. Вероятно, это может быть связано с программированием. – SirSaleh
Итак, какой язык программирования должен использоваться? –