通过索引号引用工作表
问题描述:
我使用LibreOffice Calc电子表格来跟踪应收账款的工作情况。每张表单列出发票及其状态(付费,未付款等)以及有关每张发票的信息。我试图创建一个汇总表,列出每张表中的特定数据。手动创建工作表很容易,但我试图“自动化”该过程。如果添加新工作表(或删除工作表),我希望该摘要页面自动更新,因为我向该文件添加和删除帐户。通过索引号引用工作表
我知道LibreOffice为每张表分配一个索引号,我可以在某种公式中引用该索引号,但是我无法找到一个函数,我可以使用该索引号从它内部的单元格获取值时引用该索引号。人们会期望像Sheet(2)这样的函数会引用第二张纸,但是,唉,事实并非如此!
我试过使用间接和地址函数没有成功,但我不知道如果我不理解这些函数或如果他们不适合我想要完成。
答
长期以来,这一直是Calc中缺失的一部分。首选的解决方案是编写用户定义的函数。电子表格公式不能通过索引号访问工作表,但Basic可以。
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给出。
谢谢!我看过几个类似的功能,但似乎没有任何功能。这工作完美。对于使用它的其他人,将address()函数包装在indirect()函数中,以获取指定单元格的值。 –
我刚刚打开了我使用此函数的文件,并且在加载时出现BASIC运行时错误。它说:“找不到属性或方法:getSheets”。一旦我清除了错误弹出窗口,函数使用的每个单元格都有!REF错误。但是,如果我更改公式,然后将其更改回来,它会再次运行。有任何想法吗? –
我通过将功能从标准模块移动到特定于该文件的模块来解决问题。 –