========================================================================================
현재 사용하는 엑셀 버젼을 기재하시면 좀더 정확하고 신속한 답변을 얻으실 수 있습니다.
엑셀 버젼(예: 2007) : 2007
========================================================================================
위와 같은 엑셀 파일을 만들고 있습니다. 1월부터 12월까지 주식관련된 자료를 만들고 있습니다.
그런데 D2셀에
=IFERROR(VLOOKUP($A2,'D:\주식\도사관종\2016\[20160107-관종.xls]Sheet1'!$F$2:$F$100, 1, FALSE), "")
이런 조건을 주었습니다.
제가 질문을 드리고 싶은 것은 20160107-관종.xls 부분에 D1에 있는 01/07의 데이터를 D2의 함수에 가져다 쓰는 것입니다.
그런데 제가
=IFERROR(VLOOKUP($A2,"'D:\주식\도사관종\2016\[2016"&left(D1,2)&right(D1,2)&"-관종.xls]Sheet1'!$F$2:$F$100", 1, FALSE), "")
하면 원하는 값이 나오지 않습니다.
어떻게 하면 좋을지 고수 여러분들의 답변을 기다리겠습니다.
감사합니다.
원본 파일을 첨부하였습니다.
주식 종목-2016.xlsx
20160106-관종.xls
첫댓글 이런경우 Indirect 함수를 이용하여야 합니다.
다만 indirect 함수로 다른 파일을 참조하는경우 그 참조되는 파일이 열려있지 않다면 오류를 반환합니다.
따라서 ****-관종.xls 파일이 항상 열려있다는 조건이면 문제 없지만
열려있지 않는 경우가 있다면 사용하지 않는 것이 좋을듯 합니다.
•If ref_text refers to another workbook (an external reference), the other workbook must be open. If the source workbook is not open, INDIRECT returns the #REF! error value.
한참 Test를 해 봤는데 안된다는 설명이 있네요. ㅠㅠ
그런데 indirect를 안쓰고 직접 입력을 하면 Close되어 있어도 연결이 되는 것으로 봐서는,
VBA를 이용하면 구현이 가능할 것 같다는 생각도 듭니다. 도전자가 있으면 시도해 보시기를...
여러가지 답변에 감사합니다.
제가 드린 이 질문에서 문제점은 리턴값이
'D:\주식\도사관종\2016\[20160107-관종.xls]Sheet1'!$F$2:$F$100 넘어 와야 하는데
"'D:\주식\도사관종\2016\[20160107-관종.xls]Sheet1'!$F$2:$F$100" 이렇게 넘어오는데서 문제가 있습니다.
혹시 이부분에 대해서 해결법이 있으면 알려주세요. 제가 해보았을때는 파일의 열려 있을때와 닫혀있을때는 전혀 문제가 되지 않는것 같습니다,
그게 셀에 직접입력을 하지 않는 한 "D\~~"와 같이 문자열로 넘길 수 밖에 없으니까,
문자열을 주소로 바꿔주는 indirect 함수를 써야 한다는 말입니다.
직접 셀에 입력하면 주소로 바로 입력한 것이니 해당 연결 파일이 닫혀있거나 열려있거나 업데이트가 가능한데,
질문처럼 문자열을 인수로 주면 당연히 작동을 안하고, indirect를 쓰면 그 파일이 열려있을 때만 작동을 하고 열려있지 않으면 에러가 발생하는 문제가 있다는 말씀!
좋은 의견 감사합니다. ^^