Недавно для экспорта таблицы 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