programing

셀에서 이름 대신 번호로 시트 참조

goodsources 2023. 8. 29. 20:30
반응형

셀에서 이름 대신 번호로 시트 참조

예를 들어sheet3.name = "d"

제가 다른 사람들에게sheet2공식=sum(sheet3!b:b)어디에sheet3실제 sheet3 이름으로 대체되고 있습니까?

나는 오직 얻을 수 있습니다.=sum('d'!b:b)지금까지 일하기 위해.

VBA를 사용할 수도 있지만 셀에서 어떻게 하는지 궁금해서 매번 매크로를 실행할 필요가 없습니다.

시트 이름을 반환하는 UDF 사용자 정의 함수를 사용할 수 있는 경우

Function SHEETNAME(number As Long) As String
    SHEETNAME = Sheets(number).Name
End Function

그렇다면 와 같은 공식.

=SUM(INDIRECT(SHEETNAME(3) &"!B:B"))

는 시트 3의 열 B의 합계를 반환합니다.

SHEETNAME(number)인덱스 번호의 시트 이름을 반환합니다.

그렇게Sheet(1)시트 1 등을 반환합니다.

시트 이름을 가져오려면 아래 수식을 사용합니다. 시트에 파일 이름이 있어야 합니다.

=REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"") 

간접: 을 사용하여 해당 셀을 참조할 수 있습니다.

=SUM(Indirect("'"&A1&"'!B:B"))

또는 두 번째 셀을 사용하지 않으려면 두 공식을 하나로 결합할 수 있습니다.

=SUM(INDIRECT("'"&REPLACE(CELL("filename"),1,FIND("]",CELL("filename")),"")&"'!B:B"))

시트의 순서에 관심이 없는 사람은 여기 mrexcel.com 에 있는 Biff의 게시물이 잘 작동합니다.

Excel 2013에서 리본의 수식 탭으로 이동하여 정의된 이름을 만듭니다.

Name: SheetNames
Refers to: =GET.WORKBOOK(1)&T(NOW())

그런 다음 다음과 같은 공식을 사용합니다.

=INDIRECT("'"&INDEX(MID(SheetNames,FIND("]",SheetNames)+1,255),A3)&"'!A1")

여기서 A3는 현재 시트에서 셀의 인덱스 번호를 의미하고, A1은 다른 시트에서 검색할 값의 위치를 의미합니다.즉, 현재 시트에서 A3 = 2일 경우 공식은 워크북의 두 번째 시트에 있는 셀 A1을 가리킵니다.현재 시트에 인덱스 번호 열을 사용한 다음 이 수식을 끌어다 놓으면 다른 모든 시트의 값이 채워집니다.

매크로 실행 파일(.xlsm)로 저장해야 합니다.

이것이 좋은 생각인지는 모르겠지만 제가 생각할 수 있는 첫 번째 생각입니다.

저는 당신의 VBA 프로젝트에 당신의 시트3의 실제 이름을 반환하는 추가 기능을 참조하십시오.

Function Sheet3Name()
    Sheet3Name = Sheet3.Name
End Function

다음으로 Excel 셀에 B:B 열의 합계 공식을 작성할 때 다음과 같은 방법으로 작성해야 합니다.

=SUM(INDIRECT(Sheet3Name()&"!A:A"))

언급URL : https://stackoverflow.com/questions/19790985/referencing-sheets-by-number-instead-of-name-in-cells

반응형