2017-10-11 88 views
1

我使用LibreOffice Calc電子表格來跟蹤應收賬款的工作情況。每張表單列出發票及其狀態(付費,未付款等)以及有關每張發票的信息。我試圖創建一個彙總表,列出每張表中的特定數據。手動創建工作表很容易,但我試圖「自動化」該過程。如果添加新工作表(或刪除工作表),我希望該摘要頁面自動更新,因爲我向該文件添加和刪除帳戶。通過索引號引用工作表

我知道LibreOffice爲每張表分配一個索引號,我可以在某種公式中引用該索引號,但是我無法找到一個函數,我可以使用該索引號從它內部的單元格獲取值時引用該索引號。人們會期望像Sheet(2)這樣的函數會引用第二張紙,但是,唉,事實並非如此!

我試過使用間接和地址函數沒有成功,但我不知道如果我不理解這些函數或如果他們不適合我想要完成。

回答

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給出。

+1

謝謝!我看過幾個類似的功能,但似乎沒有任何功能。這工作完美。對於使用它的其他人,將address()函數包裝在indirect()函數中,以獲取指定單元格的值。 –

+0

我剛剛打開了我使用此函數的文件,並且在加載時出現BASIC運行時錯誤。它說:「找不到屬性或方法:getSheets」。一旦我清除了錯誤彈出窗口,函數使用的每個單元格都有!REF錯誤。但是,如果我更改公式,然後將其更改回來,它會再次運行。有任何想法嗎? –

+0

我通過將功能從標準模塊移動到特定於該文件的模塊來解決問題。 –