Макросом столбцы в строки

Автор Ivan Martynov, 9 августа 2023, 12:31

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

Ivan Martynov

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

Подскажите как сделать макросом сбор столбцов в строки. Есть таблица (лист "вход"): одна компания = одна строка с показателями по столбцам, необходимо все собрать в один столбец на лист "выход". Пример файла приложил.

bigor

Добрый день.
Можно так:
REM  *****  BASIC  *****
sub test_transform
Sheet1= ThisComponent.Sheets(0) ' лист с таблицей, где берем данные
Sheet2= ThisComponent.Sheets(2) ' лист куда вставляем итоговую таблицу
Range = Sheet1.getCellRangeByPosition(0,0,GetLast(Sheet1,"A1",1),GetLast(Sheet1,"A1",0)) 'задаем диапазон
Data = Range.getDataArray() 'копируем содержимое столбцов в массив

For j=1 To ubound(data) 'цикл по массиву
s=Data(j) 'вытаскиваем из массива j  строку

for k=1 to ubound(s)

if s(k)<>"" then
sheet2.getcellbyposition(0,n+1).string=s(k)&"; " &s(0)
n=n+1
end if

next
next

end sub



'функция определения последнего столбца и строки в неразрывном диапазоне
'параметры Лист, адрес ячейки, которая находится в неразрывном диапазоне, 0 - ищем строку, 1 - ищем столбец
'автор JohnSUN
'
Function getLast(oSheet as Variant, sCellAddress As String, lastColumn As Boolean) As Long
Dim oCursor As Variant
Dim aRAddress As New com.sun.star.table.CellRangeAddress
oCursor = oSheet.createCursorByRange(oSheet.getCellRangeByName(sCellAddress))
oCursor.collapseToCurrentRegion()
aRAddress = oCursor.getRangeAddress()
If lastColumn Then
getLast = aRAddress.EndColumn
Else
getLast = aRAddress.EndRow
EndIf
End Function
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Ivan Martynov

Ух ты, круто, спасибо большое!  :beer: