source

EMDERVAL을 사용하여 닫힌 Excel 워크북의 값을 참조하시겠습니까?

ittop 2023. 4. 12. 22:57
반응형

EMDERVAL을 사용하여 닫힌 Excel 워크북의 값을 참조하시겠습니까?

다른 닫힌 워크북의 셀 값을 (VBA가 아님) 공식으로 참조합니다.시트 이름은 변수로 저장됩니다(다음 예에서는 C13이 "Sheet2").

다른 파일이 열려 있는 경우는, 다음의 조작이 가능합니다.

=INDIRECT("[myExcelFile.xlsm]" & C13 & "!$A$1")

파일이 닫혀 있으면 절대 경로가 없기 때문에 위의 수식은 작동하지 않습니다.다만, 다음과 같이 작업을 실시했습니다(「」가 아닌 「」에 주목해 주세요).

='C:\data\[myExcelFile.xlsm]Sheet2'!$A$1

이제 하드코딩된 "Sheet2"를 동적 참조값으로 바꿉니다. 즉, 첫 번째 코드 스니펫에서 볼 수 있듯이 C13으로 바꿉니다.

VBA나 다른 라이브러리를 사용하지 않고 솔루션을 알고 있는 사람이 있습니까?

표준 공식으로는 이 작업을 수행할 수 없습니다.하지만 여기서 이상한 해답을 찾을 수 있다.VBA를 사용하지 않고 결과를 동적으로 얻을 수 있습니다.

  1. 공식을 , 공식을 만들 때는.=★★★★★★★★★★★★★★★★★★!

  2. 에서 이 .B2Sheet1은 열에서 c.

  3. 이제 수식 탭으로 이동하여 "이름 정의"를 선택합니다.을 붙여주세요.myResult 무엇을 하든) ' 아래에 '참조처'라고 .=evaluate(Sheet1!$B2):$)

  4. '하다'로 이동합니다.C2및라고 씁니다.=myResult. 아래로 끌고, 그리고...야아아아악!

나도 비공개 워크북에서 셀 참조에 대한 답을 찾고 있었다.다음은 솔루션(정식)에 대한 링크입니다.현재 진행 중인 프로젝트(단일 셀과 셀 배열 참조)에서 시도했는데 오류 없이 잘 작동합니다.도움이 됐으면 좋겠네요.

https://www.extendoffice.com/documents/excel/4226-excel-reference-unopened-file.html

, ★★★★★★★★★★★★★★★」E:\Excel file\입니다.test.xlsxSheet2입니다.A:A,2,1란 셀을 의미합니다.A2는 닫힌 워크북에서 참조됩니다.을 사용법

참조할 워크시트를 수동으로 선택하려면 이 공식을 사용하십시오.

=INDEX('E:\Excel file\[test.xlsx]sheetname'!A:A,2,1)

이 수식을 적용하면 Select Sheet 대화 상자가 나타납니다. 워크시트를 선택한 다음 OK 버튼을 클릭하십시오.그러면 이 워크시트의 특정 셀 값이 즉시 참조됩니다.

문제는 닫힌 파일에 대한 링크가 인덱스(index)에서는 동작하지만 인덱스(interdirect)에서는 동작하지 않는다는 것입니다.

인덱스 함수의 프로그래밍 문제인 것 같습니다.if 절 행으로 해결했습니다.

C2=sheetname
if(c2=Sheet1,index(sheet1....),if(C2="Sheet2",index(sheet2....

5장 넘게 했어, 긴 공식이지만 내가 원하는 걸 해

색인 기능 확인:

=INDEX('C:\path\[file.xlsm]Sheet1'!A10:B20;1;1)

좋은 질문 감사합니다.저는 필리핀이 게시한 해결책을 명확히 하고 두 번째로 제시하고자 합니다.이 솔루션은 다음을 수행합니다.

  1. 닫힌 Excel 파일에서 데이터를 업데이트합니다.
  2. '동적'인 경우(정확히 그렇지는 않지만 곧 알게 될 것입니다.

위의 답변에서 Philipp는 다음과 같이 말했습니다: "문제는 닫힌 파일에 대한 링크가 인덱스(index)(그러나 인덱스(interdirect)에는 적용되지 않습니다."

저는 이것이 여전히 사실이라고 생각합니다.(저는 2021년 3월에 Office 365를 사용하고 있습니다.)Microsoft가 INDERVAL과 INDEX를 닫힌 파일과 함께 잘 재생할 수 있게 해주면 얼마나 좋을까!)

Philipp의 회피책이 실제로 효과가 있는 것을 확인할 수 있습니다.사용자 입장에서는 OP인 Chris가 하고 싶은 일이라는 느낌이 듭니다.

예를 들어, Sheet1, Sheet2, 또는 Sheet3에서 셀의 내용을 추출하는 경우 myExcelFile.xlsm의 닫힌 파일입니다.특정 셀(C13, OP Chris 질문에서처럼)의 내용을 변경하여 시트를 선택할 수 있습니다.이를 위한 한 가지 방법은 드롭다운목록을 만드는 것입니다([Data]> [ Data Validation ]> [ Allow [ List ] ) 。목록에는 다음 이름이 포함됩니다.

시트 1 시트 2 시트 3

(드롭다운리스트 없이 일반화됩니다.예를 들어 "Sheet2"를 C13에 입력하면 닫힌 파일의 관련 데이터가 나타납니다.그 후 "Sheet3"을 입력하면 해당 시트의 데이터가 대신 표시됩니다.또는 닫힌 파일의 출력에 대해 시트 이름이 있는 열을 지정하고 다음 열을 [아래 수식을 사용하여 조정됨] 위에 표시할 수 있습니다.

다른 닫힌 시트(myExcelFile.xlsm)의 참조 데이터를 포함하는 셀은 다음과 같습니다.

=IFS(
C13="Sheet1",'C:\data\[myExcelFile.xlsm]Sheet1'!$A$1,
C13="Sheet2",'C:\data\[myExcelFile.xlsm]Sheet2'!$A$1,
C13="Sheet3",'C:\data\[myExcelFile.xlsm]Sheet3'!$A$1
)

그리고 이것이 마지막입니다.

myExcelFile.xlsm을 처음 닫았을 때 #REF 오류가 발생하지만 [Data]> [ Queries & Connections ]> [ Edit Links ]> [ Update Values ]를 선택하면 닫힌 파일의 값이 나타납니다.(개인적으로는 메뉴 헌팅 대신 버튼을 사용하여 업데이트를 수행합니다).Update Values를 실행하면 닫힌 파일의 모든 시트의 데이터가 현재 Excel 파일로 로드되므로 참조를 다른 시트로 전환할 때마다 업데이트할 필요가 없습니다(예: Sheet2에서 Sheet3으로).

앤드류

Excel에서는 전체 참조와 할 수 . 포함)는 Excel 2016으로 . 전체 참조(시트 이름 포함)는 다음과 같이 묶어야 합니다.'★★★★★★ 。

따라서 다음과 같이 하십시오.

= INDIRECT("'C:\data\[myExcelFile.xlsm]" & C13 & "'!$A$1")

해 주세요.'스트링(즉, 「」라고 하는 것)으로 지정합니다.'!$A$1."")

=CJB("C:\Data["&A8&"")시트명'!$G9")

여기서 A8에는 myExcelFile이 포함되어 있습니다.xlsm

및 G9에는 소스 워크북의 소중한 데이터가 포함되어 있습니다.

네 알겠습니다,

여기 Office 2010의 공룡 방법이 있습니다.

concatenate(텍스트를 조합하는 & 방식)를 사용하여 원하는 전체 주소를 작성합니다.

필요한 모든 주소에 대해 이 작업을 수행합니다.다음과 같이 표시됩니다.

="="&"\"[스프레드시트명]을 포함한 전체 네트워크 주소"&"W3&"!$w4"

W3는 사용하고 있는 시트의 동적 참조이며, W4는 시트에서 얻고 싶은 셀입니다.

이것이 확인되면 매크로 기록 세션을 시작합니다.셀을 복사하여 다른 셀에 붙여넣습니다.병합된 셀에 붙여 넣었더니 "Same size"라는 전형적인 오류가 발생했습니다.그러나, 그 결과, 제 접속으로부터 얻은 텍스트(추가 「=」 포함)를 붙여 넣었습니다.

네가 얼마나 많은 일을 했는지 복사해라.그런 다음 붙여넣은 각 셀에 들어가서 문자를 선택하고 Enter 키를 누릅니다.액티브한 직접 참조로 갱신합니다.

완료되면 커서를 좋은 곳에 놓고 매크로를 정지합니다.버튼에 할당하면 끝입니다.

처음 이 작업을 수행하는 것은 다소 PITA이지만, 일단 작업을 마치면 둥근 구멍에 맞는 정사각형 페그를 만든 것입니다.

이것은 닫힌 파일에서는 동작하는 것 같습니다.소스의 피벗 테이블(행, 표 레이아웃, 소계 없음, 총계 없음)을 현재 워크북에 추가한 후 해당 피벗 테이블에서 원하는 모든 것을 참조합니다.간접, 룩업...

참조하고 싶은 시트수를 알고 있는 경우는, 아래의 함수를 사용해 이름을 확인할 수 있습니다.간접 기능에서 사용할 수 있는 것보다 더 많이.

Public Function GETSHEETNAME(address As String, Optional SheetNumber As Integer = 1) As String

    Set WS = GetObject(address).Worksheets
    GETSHEETNAME = WS(SheetNumber).Name

End Function

이 솔루션에서는 참조 워크북을 열 필요가 없습니다.Excel은 워크북을 자동으로 엽니다(단, 숨겨집니다).

저는 실망스러워서 다음과 같은 회피책을 강구했습니다.

  1. 간접 명령어를 생성하여 원하는 범위 밖에 저장했습니다.물론 소스 워크북이 닫히면 오류가 발생하지만 열리면 불이 켜집니다.
  2. 그래서 소스 워크북을 일시적으로 엽니다.
  3. 그런 다음 범위 밖에서 간접 공식을 복사하여 범위 내에 붙여넣는 매크로를 만들었습니다.모든 셀이 올바른 값으로 채워집니다.
  4. 그런 다음 매크로가 범위 값을 복사 붙여넣기합니다.그러면 수식은 삭제되지만 값은 유지됩니다.
  5. 그런 다음 소스 워크북을 닫습니다.내 값은 원하는 위치에 그대로 유지되며, 절차를 반복하여 값을 새로 고치는 경우 내 간접 공식은 원하는 범위를 벗어납니다.

이 회피책을 사용하면 소스 워크북이 닫혔을 때 간접 수식의 오류를 줄일 수 있습니다.또한 가장 중요한 것은 재계산에 걸리는 시간을 크게 절약할 수 있다는 것입니다.

당신도 이게 효과가 있길 바라요!

언급URL : https://stackoverflow.com/questions/28461672/referencing-value-in-a-closed-excel-workbook-using-indirect

반응형