2026_최신기출유형_09회
2. 사용자 정의 함수 fn할인액에 프로시져 상에서..
특정셀(j2)과 시트이름(계산작업) 사이 보통 ! 로 구분하는데 1.['계산작업'!j2]와 [계산작업!j2]와 결과가 틀립니다
아울러 j2는 특정셀의 고정 날짜로 절대참조($j$2)는 붙이면 왜 안되는지요?
안녕하세요.
결론부터 말씀드리면, 대괄호([]) 안에서 시트 이름에 작은따옴표(')를 붙이는 위치가 잘못되었기 때문에 엑셀이 주소를 인식하지 못해 오류가 난 것입니다.
[엑셀 수식의 규칙]
시트 이름에 공백(띄어쓰기)이나 특수문자가 포함되어 있을 때만 시트 이름 앞뒤를 작은따옴표로 감싸줍니다. (예: ='계산 작업'!J2)
[VBA 대괄호([]) 안에서의 규칙]
VBA에서 대괄호는 그 자체로 "엑셀 수식 창에 입력하듯이 처리해라"라는 뜻입니다. 따라서 작은따옴표를 쓰려면 시트 이름에만 딱 붙여야 합니다.
올바른 표현 (공백이 있을 때): ['계산 작업'!J2]
올바른 표현 (공백이 없을 때): [계산작업!J2]
독자님이 쓰신 표현: ['계산작업'!j2]
틀린 이유
공백이 없는 이름인데 작은따옴표를 억지로 붙였거나, 대괄호 바로 안쪽에 따옴표를 넣으면 VBA는 이를 실제 시트 이름이 아니라 문자열 오타로 인식합니다.
그래서 값을 가져오지 못하고 에러(#VALUE!)가 나거나 결과가 다르게 나오는 것입니다. 시트 이름에 띄어쓰기가 없다면 그냥 깔끔하게 [계산작업!J2]로 쓰시는 것이 정석입니다.
고정된 셀인데 왜 절대참조($)를 붙이면 안 되나요?
결론부터 말씀드리면 붙여도 상관없지만, 대괄호([])를 쓰는 순간 절대참조 기호($)가 이미 포함된 것이나 다름없기 때문에 굳이 붙이지 않는 것입니다.
즐거운 하루 되세요.
-
관리자2026-06-03 10:32:40
안녕하세요.
결론부터 말씀드리면, 대괄호([]) 안에서 시트 이름에 작은따옴표(')를 붙이는 위치가 잘못되었기 때문에 엑셀이 주소를 인식하지 못해 오류가 난 것입니다.
[엑셀 수식의 규칙]
시트 이름에 공백(띄어쓰기)이나 특수문자가 포함되어 있을 때만 시트 이름 앞뒤를 작은따옴표로 감싸줍니다. (예: ='계산 작업'!J2)
[VBA 대괄호([]) 안에서의 규칙]
VBA에서 대괄호는 그 자체로 "엑셀 수식 창에 입력하듯이 처리해라"라는 뜻입니다. 따라서 작은따옴표를 쓰려면 시트 이름에만 딱 붙여야 합니다.
올바른 표현 (공백이 있을 때): ['계산 작업'!J2]
올바른 표현 (공백이 없을 때): [계산작업!J2]
독자님이 쓰신 표현: ['계산작업'!j2]
틀린 이유
공백이 없는 이름인데 작은따옴표를 억지로 붙였거나, 대괄호 바로 안쪽에 따옴표를 넣으면 VBA는 이를 실제 시트 이름이 아니라 문자열 오타로 인식합니다.
그래서 값을 가져오지 못하고 에러(#VALUE!)가 나거나 결과가 다르게 나오는 것입니다. 시트 이름에 띄어쓰기가 없다면 그냥 깔끔하게 [계산작업!J2]로 쓰시는 것이 정석입니다.
고정된 셀인데 왜 절대참조($)를 붙이면 안 되나요?
결론부터 말씀드리면 붙여도 상관없지만, 대괄호([])를 쓰는 순간 절대참조 기호($)가 이미 포함된 것이나 다름없기 때문에 굳이 붙이지 않는 것입니다.
즐거운 하루 되세요.