2017-10-11 11 views
1

나는 직장에서 채권을 추적하는 데 사용하는 LibreOffice Calc 스프레드 시트를 가지고 있습니다. 각 시트에는 인보이스 및 해당 상태 (유료, 미 지불 등) 및 각 인보이스에 대한 정보가 나열됩니다. 각 시트의 특정 데이터를 나열하는 요약 시트를 만들려고합니다. 수동으로 시트를 생성하는 것은 쉽지만 프로세스를 "자동화"하려고합니다. 파일에 계정을 추가하고 제거 할 때 새 시트를 추가하거나 제거하면 요약 페이지가 자동으로 업데이트되기를 원합니다.인덱스 번호로 시트 참조

LibreOffice는 각 시트에 일종의 수식에서 참조 할 수있는 인덱스 번호를 할당하지만 해당 셀의 값을 가져올 때 해당 인덱스 번호를 참조하는 데 사용할 수있는 함수를 찾을 수 없다는 것을 알고 있습니다. . 시트 (2)와 같은 함수는 두 번째 시트를 참조하지만, 그렇지 않습니다.

나는 간접 및 주소 기능을 사용하지 않고 성공적으로 시도했지만,이 기능을 이해하지 못하거나 내가 수행하려는 것에 적합하지 않은지 확실하지 않습니다.

답변

1

오랫동안 Calc에서 누락 된 부분이었습니다. 가장 좋은 해결책은 사용자 정의 함수를 작성하는 것입니다. 스프레드 시트 수식은 인덱스 번호별로 시트에 액세스하지 않지만 기본 수는 시트를 액세스하지 않습니다.

다음 함수는 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

감사합니다. 몇 가지 비슷한 기능을 보았지만 아무도 작동하지 않는 것 같았습니다. 이것은 완벽하게 작동합니다. 이것을 사용하는 다른 사용자는 indirect() 함수에서 address() 함수를 랩핑하여 지정된 셀의 값을 가져옵니다. –

+0

방금이 함수를 사용한 파일을 열었습니다.로드시 BASIC 런타임 오류가 발생합니다. "속성 또는 메서드를 찾을 수 없습니다 : getSheets." 오류 팝업을 제거하면 함수에서 사용되는 각 셀에! REF 오류가 있습니다. 그러나 수식을 변경 한 다음 다시 변경하면 다시 작동합니다. 어떤 아이디어? –

+0

표준 모듈의 함수를 파일의 특정 모듈로 옮겨서 문제를 해결했습니다. –