1.INDIRECT 함수 정의 란?
INDIRECT 함수는 텍스트로 주어진 참조를 직접적인 참조로 변환하는 데 사용되는 Excel 함수입니다. 아래는 INDIRECT 함수의 정의입니다.
INDIRECT 함수 정의: INDIRECT 함수는 텍스트로 주어진 참조를 직접적인 참조로 변환하여 해당 위치의 셀 값을 반환합니다. 이 함수는 주로 동적으로 셀 참조를 변경하거나 다른 셀 범위를 참조할 때 사용됩니다.
- ref_text: 참조로 변환할 텍스트입니다.
- [a1]: 참조 형식을 지정하는 부울 값입니다. TRUE(생략 가능)는 A1 스타일 참조를 사용하고, FALSE는 R1C1 스타일 참조를 사용합니다.
INDIRECT 함수 예시:
이 함수는 주어진 텍스트를 참조로 변환하므로, 사용 시 주의가 필요합니다. 오류가 발생할 수 있는 상황에서는 오류 처리를 고려하여 사용해야 합니다.
2.예시
예를 들어, INDIRECT 함수를 사용하여 동적으로 다른 시트의 특정 셀 값을 가져오는 경우를 살펴보겠습니다.
가령, "Sheet1" 시트에서 "A1" 셀에 있는 값을 기반으로 동적으로 다른 시트의 동일한 열의 값을 가져오려면 다음과 같이 사용할 수 있습니다.
이 수식은 "Sheet1" 시트의 "A1" 셀에 있는 텍스트 값을 다른 시트의 이름으로 사용하여 해당 시트의 "B1" 셀 값을 가져오게 됩니다. 주의할 점은 다른 시트의 이름이 담긴 셀에 따라 가져올 시트가 동적으로 변경된다는 것입니다.
3.사용방법
INDIRECT 함수는 주어진 텍스트 값을 기반으로 셀 또는 범위의 참조를 동적으로 생성하는 엑셀 함수입니다. 아래는 INDIRECT 함수의 사용 방법입니다.
- ref_text: 가져올 참조를 지정하는 텍스트입니다. 이 텍스트는 셀이나 범위의 주소 또는 다른 참조 형식이 될 수 있습니다.
- [a1] (선택적): TRUE이면 A1 스타일의 참조로 해석하고, FALSE이면 R1C1 스타일의 참조로 해석합니다. 기본값은 TRUE입니다.
예를 들어, "Sheet1" 시트에서 "A1" 셀에 있는 값을 기반으로 동적으로 다른 시트의 동일한 열의 값을 가져오려면 다음과 같이 사용할 수 있습니다.
이렇게 하면 "Sheet1" 시트의 "A1" 셀에 있는 텍스트 값을 다른 시트의 이름으로 사용하여 해당 시트의 "B1" 셀 값을 가져옵니다. 주의할 점은 다른 시트의 이름이 담긴 셀에 따라 가져올 시트가 동적으로 변경된다는 것입니다.
4.함수 사용팁
INDIRECT 함수를 사용할 때 고려해야 할 몇 가지 유용한 팁이 있습니다.
- 동적 범위 생성: INDIRECT를 사용하여 동적으로 범위를 생성할 수 있습니다. 예를 들어, "Sheet1"에서 선택한 열의 데이터를 가져오고자 할 때:이렇게 하면 "Sheet1"에서 선택한 열의 첫 번째 셀만 가져옵니다.
-
excelCopy code=INDIRECT("Sheet1!A1:" & "Sheet1!A1")
- 명명된 범위와 함께 사용: 명명된 범위를 사용하여 더 읽기 쉬운 함수를 작성할 수 있습니다. 예를 들어, "Sheet1"에서 "DataRange"라는 명명된 범위를 만들고 사용하려면:
-
excelCopy code=INDIRECT("Sheet1!DataRange")
- 동적으로 시트 이름 변경: INDIRECT를 사용하여 셀에 저장된 텍스트를 통해 시트 이름을 동적으로 변경할 수 있습니다. 이를 통해 특정 시트의 데이터에 액세스할 수 있습니다.여기서 A1에는 시트 이름이 들어있습니다.
-
excelCopy code=INDIRECT("'" & A1 & "'!B1")
- 동적 셀 참조 생성: 다른 셀의 값을 기반으로 동적으로 참조를 생성하고자 할 때 유용합니다. 위의 예제에서 "Sheet1"의 "A1" 셀에 있는 값에 따라 동적으로 참조가 변경됩니다.
주의: INDIRECT 함수는 동적으로 참조를 생성하므로 사용 시 주의가 필요합니다. 셀이 삭제되거나 이동하면 참조가 잘못된 결과를 가져올 수 있습니다. 이를 방지하기 위해 명명된 범위를 사용하거나 다른 안정적인 방법을 고려할 수 있습니다.
5.주의사항
INDIRECT 함수를 사용할 때 주의해야 할 몇 가지 사항이 있습니다.
- 동적 참조의 위험성: INDIRECT 함수를 사용하면 동적으로 참조를 생성할 수 있지만, 이로 인해 코드의 가독성이 떨어지고 오류 발생 가능성이 높아집니다. 코드를 이해하기 어려워질 수 있으며, 셀이나 범위를 이동하거나 삭제할 경우 에러가 발생할 수 있습니다.
- 외부 데이터의 사용에 주의: INDIRECT를 사용하여 다른 시트나 범위의 데이터를 참조할 때, 외부 데이터의 변경에 민감하게 반응할 수 있습니다. 외부 데이터에 대한 변경을 예측하고 안정성을 높이기 위해 다른 함수나 방법을 고려하는 것이 좋습니다.
- REF 값에 대한 주의: INDIRECT 함수를 사용할 때 참조된 셀이나 범위가 삭제되면 #REF! 오류가 발생합니다. 따라서 코드를 유지보수하고 업데이트할 때 이 점을 주의해야 합니다.
- 워크시트 이름 변경에 대한 예외 처리: 동적으로 시트 이름을 참조하는 경우, 해당 시트가 없는 경우 #REF! 오류가 발생할 수 있습니다. 예외 처리를 추가하여 이러한 상황에 대한 대응이 필요합니다.
- 계산 순서의 영향: INDIRECT를 사용하면 계산 순서에 영향을 줄 수 있습니다. 특히, 자동 계산이 비활성화된 경우 수식의 계산이 올바르게 이루어지지 않을 수 있습니다.
- 보안 측면 고려: 일부 보안 정책에서는 동적으로 참조된 범위나 셀에 대한 접근을 제한할 수 있습니다. 보안 정책을 고려하여 INDIRECT 함수의 사용을 검토해야 합니다.
위의 주의사항을 고려하면서 INDIRECT 함수를 사용하면 더 안정적이고 유지보수가 용이한 워크시트를 생성할 수 있습니다.