按索引编号引用工作表

时间:2017-10-11 00:36:28

标签: spreadsheet libreoffice-calc

我有一个LibreOffice Calc电子表格,用于跟踪工作中的应收账款。每张表都列出了发票及其状态(付款,未付款等)以及每张发票的信息。我正在尝试创建一个摘要表,列出每张表中的某些数据。手动创建工作表很容易,但我正在尝试“自动化”该过程。如果我在添加和删除帐户到文件时添加新工作表(或删除一个工作表),我希望摘要页面自动更新。

我知道LibreOffice为每个工作表分配了一个我可以在某种公式中引用的索引号,但是当从其中的单元格中获取值时,我找不到可以用来引用该索引号的函数。人们会期望像Sheet(2)这样的函数会引用第二张表,但是,唉,事实并非如此!

我尝试过使用间接和地址功能但没有成功,但我不确定我是否不理解这些功能,或者它们是否适合我想要完成的功能。

1 个答案:

答案 0 :(得分:1)

长期以来,这一直是Calc的一个缺失部分。首选解决方案是编写用户定义的函数。电子表格公式不能按索引号访问工作表,但Basic可以访问工作表。

以下功能来自https://ask.libreoffice.org/en/question/16604/how-do-i-access-the-current-sheet-name-in-formula-to-use-in-indirect/

Function SheetName(Optional nSheet)
If IsMissing(nSheet) Then
    SheetName = ThisComponent.getCurrentController().getActiveSheet().getName()
Else
    SheetName = ThisComponent.getSheets().getByIndex(nSheet-1).getName()
EndIf
End Function

然后像这样获得第一个单元格A1的相对地址。

=ADDRESS(1,1,4,,SHEETNAME(1))

https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=49799给出了稍微不同的功能。