VLOOKUP, INDEX, MATCH 함수를 활용한 방법
특정 조건(예: 품명, 규격, 구경 등)에 따라 자재 단가를 찾기 위한 함수를 만들어보겠습니다. 데이터는 A1:D7에 있다고 가정하고, VLOOKUP, INDEX, MATCH 함수를 활용한 방법을 단계별로 설명드리겠습니다.
데이터 구조
품명 | 품명 | 규격 | 자재 단가 |
STS304 | PIPE SCH10S | 65A | 164,070 |
STS304 | PIPE SCH10S | 40A | 100,050 |
STS304 | ELBOW SCH10S | 65A | 12,510 |
STS304 | ELBOW SCH10S | 40A | 5,940 |
STS304 | TEE SCH10S | 65A+15A | 24,827 |
STS304 | TEE SCH10S | 40A+40A | 13,464 |
목표
- 특정 품명, 품명(PIPE, ELBOW, TEE 등), 규격(예: 65A, 40A+40A 등)에 따라 자재 단가를 찾고 싶습니다.
- 예를 들어, "STS304", "ELBOW SCH10S", "40A"에 해당하는 자재 단가(5,940)를 찾아야 합니다.
1. VLOOKUP으로 해결 (단순하지만 제약 있음)
VLOOKUP은 단일 열을 기준으로 검색해야 하므로, 여러 조건(품명, 품명, 규격)을 모두 처리하기 어렵습니다. 하지만 특정 열(예: B열)을 기준으로 검색하는 간단한 경우에 사용할 수 있습니다.
예시: "ELBOW SCH10S"의 자재 단가 찾기
- 구문: =VLOOKUP("ELBOW SCH10S", B2:D7, 3, FALSE)
- B열에서 "ELBOW SCH10S"를 찾고, 3번째 열(자재 단가)을 반환.
- 결과: 첫 번째 매칭되는 "ELBOW SCH10S"의 자재 단가(12,510, 65A 기준).
- 문제점:
- 규격(65A, 40A 등)을 고려하지 못함.
- 여러 조건(품명 + 품명 + 규격)을 동시에 처리하기 어려움.
2. INDEX + MATCH로 여러 조건 처리
INDEX와 MATCH를 조합하면 품명(A열), 품명(B열), 규격(C열)을 모두 고려해 자재 단가를 찾을 수 있습니다. 이를 위해 데이터 구조를 분석하고, 다중 조건 검색을 구현합니다.
단계 1: 데이터 준비
- A열(품명), B열(품명), C열(규격)이 키로 사용됨.
- D열(자재 단가)이 반환 값.
단계 2: 다중 조건 MATCH
품명, 품명, 규격을 모두 고려하려면 MATCH를 여러 번 사용하거나, 조건부 로직을 추가해야 합니다. 하지만 엑셀의 기본 함수만으로 다중 조건을 처리하려면 약간 복잡해질 수 있습니다. 대신, 간단히 두 조건(예: B열과 C열)을 기준으로 검색하는 방법을 제안합니다.
예시: "ELBOW SCH10S"와 "40A"의 자재 단가 찾기
- MATCH로 행 위치 찾기
- B열에서 "ELBOW SCH10S"의 위치 찾기:
=MATCH("ELBOW SCH10S", B2:B7, 0)
→ 결과: 3 (B4에 있음). - C열에서 "40A"의 위치 찾기 (동일 행 확인 필요).
- B열에서 "ELBOW SCH10S"의 위치 찾기:
- INDEX로 값 가져오기
- B열과 C열에서 모두 일치하는 행을 찾아 D열 값 반환:
=INDEX(D2:D7, MATCH(1, (B2:B7="ELBOW SCH10S")*(C2:C7="40A"), 0))- 주의: 이 공식은 배열 수식을 사용하며, 엑셀에서 Ctrl + Shift + Enter로 입력해야 합니다(최신 엑셀에서는 자동으로 동작).
- 결과: 5,940 (D4의 값).
- B열과 C열에서 모두 일치하는 행을 찾아 D열 값 반환:
- 설명:
- (B2:B7="ELBOW SCH10S")와 (C2:C7="40A")는 각각 TRUE/FALSE 배열을 생성.
- * 연산으로 두 조건이 모두 TRUE인 행을 1로 표시.
- MATCH(1, ...)으로 해당 행의 위치를 찾아 INDEX로 값을 반환.
3. 더 유연한 방법 (추가 조건 포함)
품명(A열)까지 고려하려면 공식이 더 복잡해집니다. 아래는 "STS304", "ELBOW SCH10S", "40A"를 모두 만족하는 자재 단가를 찾는 예시입니다:
공식
=INDEX(D2:D7, MATCH(1, (A2:A7="STS304")*(B2:B7="ELBOW SCH10S")*(C2:C7="40A"), 0))
- 결과: 5,940.
- 주의:
- 이 공식은 배열 수식이며, 엑셀 버전에 따라 다르게 동작할 수 있음.
- 최신 엑셀(Office 365, Excel 2021)에서는 자동으로 동작하지만, 이전 버전에서는 Ctrl + Shift + Enter 필요.
4. 실용적인 팁
- 오류 처리 추가: 값이 없으면 오류를 방지하려면 IFERROR 사용:
=IFERROR(INDEX(D2:D7, MATCH(1, (A2:A7="STS304")*(B2:B7="ELBOW SCH10S")*(C2:C7="40A"), 0)), "찾을 수 없음") - 동적 입력: 셀 참조를 사용해 조건을 변경 가능:
- A1에 "STS304", B1에 "ELBOW SCH10S", C1에 "40A" 입력.
- 공식:
=IFERROR(INDEX(D2:D7, MATCH(1, (A2:A7=A1)*(B2:B7=B1)*(C2:C7=C1), 0)), "찾을 수 없음")
결론
- VLOOKUP: 단순한 단일 조건 검색에 적합하지만, 이 데이터처럼 여러 조건이 필요하면 한계가 있음.
- INDEX + MATCH: 다중 조건 검색에 훨씬 유연하고 강력함. 하지만 배열 수식 사용으로 약간 복잡할 수 있음.
궁금한 점이나 특정 조건에 맞춘 추가 예시가 필요하면 말씀해주세요! 엑셀 버전이나 더 구체적인 요구사항이 있다면 알려주시면 최적화된 솔루션을 제안드릴게요.
'Study' 카테고리의 다른 글
파이썬 실행 오류 해결 방법 10가지 (0) | 2025.03.07 |
---|---|
반도체 공정에서 진공 펌프의 역할과 종류, 그리고 최신 기술 동향 🏭🔬 (0) | 2025.03.07 |
INDEX 함수와 MATCH 함수 사용법 완벽 정리 (0) | 2025.02.26 |
INDEX & MATCH로 VLOOKUP을 대체하는 강력한 데이터 검색법 (0) | 2025.02.26 |
파이프 규격과 호칭, 10A는 3/8인치! 쉽게 이해하는 방법 (0) | 2025.02.18 |