按索引号引用 sheet
Referencing a sheet by index number
我有一个 LibreOffice Calc spreadsheet,我用它来跟踪工作中的应收账款。每个 sheet 都列出了发票及其状态(已付款、未付款等)以及有关每张发票的信息。我正在尝试创建一个摘要 sheet,其中列出每个 sheet 的某些数据。手动创建 sheet 很容易,但我正在尝试 "automate" 这个过程。如果我在文件中添加和删除帐户时添加新的 sheet(或删除一个),我希望摘要页面自动更新。
我知道 LibreOffice 为每个 sheet 分配了一个索引号,我可以在某种公式中引用该索引号,但是我找不到在获取值时可以用来引用该索引号的函数从它里面的一个细胞。人们会期望像 Sheet(2) 这样的函数会引用第二个 sheet,但是,唉,事实并非如此!
我试过使用间接函数和地址函数但没有成功,但我不确定我是否不理解这些函数或者它们是否不适合我要完成的任务。
长期以来,这一直是 Calc 中缺失的部分。首选的解决方案是编写一个用户定义的函数。 Spreadsheet 公式不能通过索引号访问 sheets 但 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
然后像这样获取第一个sheet单元格A1的相对地址。
=ADDRESS(1,1,4,,SHEETNAME(1))
在 https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=49799 处给出了一个稍微不同的函数。
我有一个 LibreOffice Calc spreadsheet,我用它来跟踪工作中的应收账款。每个 sheet 都列出了发票及其状态(已付款、未付款等)以及有关每张发票的信息。我正在尝试创建一个摘要 sheet,其中列出每个 sheet 的某些数据。手动创建 sheet 很容易,但我正在尝试 "automate" 这个过程。如果我在文件中添加和删除帐户时添加新的 sheet(或删除一个),我希望摘要页面自动更新。
我知道 LibreOffice 为每个 sheet 分配了一个索引号,我可以在某种公式中引用该索引号,但是我找不到在获取值时可以用来引用该索引号的函数从它里面的一个细胞。人们会期望像 Sheet(2) 这样的函数会引用第二个 sheet,但是,唉,事实并非如此!
我试过使用间接函数和地址函数但没有成功,但我不确定我是否不理解这些函数或者它们是否不适合我要完成的任务。
长期以来,这一直是 Calc 中缺失的部分。首选的解决方案是编写一个用户定义的函数。 Spreadsheet 公式不能通过索引号访问 sheets 但 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
然后像这样获取第一个sheet单元格A1的相对地址。
=ADDRESS(1,1,4,,SHEETNAME(1))
在 https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=49799 处给出了一个稍微不同的函数。