Você pode resolver isso usando duas macros pequenas (para determinar o nome da última planilha) em combinação com o operador de intervalo e o INDIRECT()
função.
Primeiro, crie a macro a seguir ( Tools
- > Macros
- > LibreOffice Basic
, crie um novo módulo ou use o módulo padrão; cole o seguinte código):
Function LastSheetName()
Dim nSheetCount As Integer
nSheetCount = ThisComponent.getSheets().Count
LastSheetName = ThisComponent.getSheets().getByIndex(nSheetCount - 1).getName()
End Function
Function LastSheetCell(sCell)
LastSheetCell = LastSheetName() & "." & sCell ' notice: sheet/cell separator may be "!"
End Function
Aviso: dependendo das suas configurações de localização, talvez seja necessário substituir o ponto .
na função LastSheetCell()
por um ponto de exclamação:
LastSheetCell = LastSheetName() & "!" & sCell
Com essa macro definida, você pode definir essas funções definidas pelo usuário em sua planilha:
=LASTSHEETNAME() ' returns e.g. "Sheet10" as String
=LASTSHEETCELL("F1") ' returns e.g. "Sheet10.F1" as String
=INDIRECT(LASTSHEETCELL("F1")) ' returns a cell reference to "Sheet10.F1"
Agora, você tem todos os componentes necessários para criar a fórmula final:
=SUM(FirstSheetName.F1:INDIRECT(LASTSHEETCELL("F1"))) ' returns the sum of FirstSheetName.F1; ...; LastSheetName.F1
Observe o :
entre FirstSheetName.F1
e a fórmula que cria a referência à célula da última planilha: essa é a operador de intervalo . Você pode usá-lo para referenciar um intervalo de folhas também. Dos documentos do OOo Calc:
Sheet1.A3:Sheet3.D4: Reference to a cuboid range with 24 cells, 4 column width × 2 row height × 3 sheets depth.