Недавно для экспорта таблицы OpenOffice пришлось создавать формулу, которая находила бы последнюю дату оплаты. А оплата в ods таблице была разнесена по колонкам, то есть идут колонки Январь, Февраль и т.д., а нам нужно сделать так, чтобы в одной колонке была дата вида гггг.мм.чч

Сделать такое получилось, хотя и остались вопросы, я так и не нашел, как передавать в параметре функции данные типа Range как в MS Excel. Пришлось параметр передавать в виде строки.

=GETLASTDATE(ADDRESS(ROW(CS3);COLUMN(CS3);4))

Дальше код на ooo.Basic - может кому будет полезно, ну или мне еще встретится этот вопрос)

function getLastDate(ByVal Optional sAddress As String) As String
 
 Dim oDoc As Object
 Dim oSheet As Object
 
 oDoc = ThisComponent
 oSheet = ThisComponent.CurrentController.ActiveSheet
 
 
 oStartCell = oSheet.getCellRangeByName(sAddress)
 
nRows = oStartCell.CellAddress.Row
nCols = oStartCell.CellAddress.Column
 
i = nCols
 
Do While i >= 0
oCell = oSheet.getCellByPosition(i, nRows)
sItem = oCell.Formula
if oCell.getType() then
Exit Do
End If
i = i - 1
Loop
 
getLastDate = formatLastDate(oCell)
 
end function
 
function formatLastDate(ByVal Optional Cell As Object) As String
Dim oDoc As Object
Dim oSheet As Object
 
oDoc = ThisComponent
oSheet = ThisComponent.CurrentController.ActiveSheet
 
row = Cell.CellAddress.Row
col = Cell.CellAddress.Column
 
 
oYearCell = oSheet.getCellByPosition(col, 0)
oMonthCell = oSheet.getCellByPosition(col, 1)
 
sMonth = ""
 
Select Case LCase(oMonthCell.Formula)
Case "январь"
sMonth = "01"
Case "февраль"
sMonth = "02"
Case "март"
sMonth = "03"
Case "апрель"
sMonth = "04"
Case "май"
sMonth = "05"
Case "июнь"
sMonth = "06"
Case "июль"
sMonth = "07"
Case "август"
sMonth = "08"
Case "сентябрь"
sMonth = "09"
Case "октябрь"
sMonth = "10"
Case "ноябрь"
sMonth = "11"
Case "декабрь"
sMonth = "12"
End Select
 
 
if sMonth <> "" Then
formatLastDate = oYearCell.Formula & "-" & sMonth & "-" & "01"
Else
formatLastDate = "0000-00-00"
 
End If
 
end function

 

Чтобы сделать комментарий, нужно авторизоваться на сайте!