переместить содержимое ячеек F20, G21 соответственно в ячейки F19, G19

Автор Atlant_50, 18 мая 2021, 16:28

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

Atlant_50

Уважаемые умельцы! Прошу Вашей помощи!
Допиливаю макрос (из разных .txt собираю отчет), встала на такое ерунде, что стыдно, но без Вашей помощи мне не обойтись, да и подучиться некоторым вещам полезно.
Есть таблица, в ней строки с заполненными ячейками, адреса ячеек всегда разные
Пример:
С19 = Итого:, E19 = сумма
С20 = Итого1, F20 = сумма
С21 = Итого:, G21 = сумма
Нужно переместить содержимое ячеек F20, G21 соответственно в ячейки F19, G19
И удалить строки с Итого1 и Итого2 (но это уже проще)
Как преобразовать getCellByPosition(5, 17) в getCellByName("F18") не нашла.

Если можно, то подскажите мне, пожалуйста, сразу несколько вариантов перемещения ячеек

пыталась выйти из положения подпорками, но не вышло
Сильно не смейтесь  :roll:

Sub Main1____poigrat'
dim FandR As Object
Dim oSheet         'объект листа
Dim oCellRange      'объект диапазона ячеек
Dim oDataArray      'массив массивов данных диапазона
Dim oCell         'объект ячейки
oDoc=ThisComponent
oSheet =oDoc.Sheets.getByName("32_ОРГ_1251")
oCol = oSheet.getCellRangeByName("C8:G50")
FandR=oSheet.createSearchDescriptor
With FandR
.SearchString= "Итого1"
End With
oCell=oCol.findFirst(FandR)
oCell=oSheet.findFirst(FandR)
'z1=oCell.CellAddress.Column '
z=oCell.CellAddress.Row '(18)
i=5    'column - 5 - F
k=z+1 ' row - 19+1 - получаем F20
'Print z
'Print k
w = "F" + k 'F20
'oCell=oSheet.getCellByPosition(i, z)
'w= oCell.getValue
Print w
oRangeAddress = oSheet.getCellRangeByName("F20:F20").getRangeAddress()
'oRangeAddress = oSheet.getCellRangeByName("сюда хотела вставить w, но болты :( D21:D21").getRangeAddress()
oCellAddress = oSheet.getCellByPosition(5, 18).getCellAddress() 'F19
oSheet.moveRange(oCellAddress, oRangeAddress)
End Sub



bigor

Здравствуйте

Заключайте пожалуйста тексты макросов в теги кнопочка с "решеткой"
Предлагаю макрос решающий Ваш вопрос "в лоб" простым перебором ячеек
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Atlant_50


economist

Цитата: Atlant_50 от 18 мая 2021, 16:28Нужно переместить содержимое ячеек F20, G21 соответственно в ячейки F19, G19
И удалить строки с Итого1 и Итого2 (но это уже проще)
Как преобразовать getCellByPosition(5, 17) в getCellByName("F18") не нашла.

Если вверху самого верхнего макроса написать

Option VBASupport 1
Option Compatible

- появляется возможность писать на VBA, в котором есть удобный краткий синтаксис (короче некуда). Для перестановок удобно:

[F19]=[F20]
[G19]=[G21]
[C19]=""
' имена могут быть не только A1, но и именами диапазонов. Вот еще полезные команды
[имядиапазона].ClearContents
[имядиапазона].ClearFormats
[имядиапазона].ClearComments
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...