이번 글에서는 엑셀에서 대소문자를 구분해서 값을 찾는 방법을 알아보겠습니다.
아래와 같이 어떤 회사에서 컴퓨터 부품 코드 정보의 '부품 코드'를 대소문자를 구분하여 관리한다고 가정하고, 부품 코드에 해당하는 부품명을 찾아보겠습니다(사실 부품 코드를 대소문자로 구분해서 관리하는 이런 예는 드물고, 업무 진행 시 상당히 혼란스러울 수 있기 때문에 그다지 바람직하지 않습니다).
※ 예제 이해에 필요한 내용은 다음 링크를 참고하세요.
[ INDEX 함수 - 범위에서 행과 열을 이용하여 값 찾기 ]
[ MATCH 함수 - 범위에서 값의 위치 찾기 ]
[ EXACT 함수 - 두 텍스트가 같은지 비교하기 ]
[ XLOOKUP 함수 - 표에서 값찾기 ]
1. VLOOKUP 함수로 찾기(대소문자 구분 못함)
다음 수식으로 부품코드 'XD389b'에 해당하는 부품명을 찾으면 '인텔 코어i9-12세대'를 찾습니다.
=VLOOKUP("XD389b",B6:E12,3,FALSE)
VLOOKUP 함수는 대소문자를 구분하지 않으므로 부품명을 잘못 찾습니다. 9행의 'XD389b'에 해당하는 'AMD 라이젠5-4세대'를 찾아야 하는데 VLOOKUP 함수로는 불가능합니다.
2. INDEX, MATCH, EXACT 함수로 찾기
이번에는 INDEX, MATCH 함수와 대소문자를 구분해 주는 EXACT 함수를 이용하여 배열 수식으로 찾아 보겠습니다.
[B21] 셀에 다음 수식을 입력합니다.=INDEX(D6:D12,MATCH(TRUE,EXACT(B6:B12,"XD389b"),0))
배열 수식이므로 수식을 입력한 후 [Enter] 대신에 [Ctrl + Shift + Enter]를 누릅니다.
* 배열수식에 대해서는 다음 링크를 참고하세요.
[엑셀 배열수식 제대로 이해하기]
* Microsoft 365, 엑셀 2021 이상 버전에서는 배열수식으로 입력하지 않아도 됩니다. 자세한 내용은 다음 링크를 참고하세요.
[엑셀의 새로운 기능, 동적 배열 수식 ]
9행에 있는 부품명 'AMD 라이젠5-4세대'를 제대로 찾았습니다.
수식을 풀이해 보면 다음과 같습니다.
위 수식에서 EXACT 함수 부분을 좀 더 살펴보면
EXACT 함수는 두 개의 값을 비교하여 같으면 TRUE, 다르면 FALSE를 반환해주므로 다음과 같은 배열을 반환합니다.
3. XLOOKUP, EXACT 함수를 조합하여 찾기
이번에는 엑셀 2021, Microsoft 365 버전 부터 사용할 수 있는 XLOOKUP 함수를 이용하여 찾아 보겠습니다.
[B26] 셀에 다음 수식을 입력합니다.=XLOOKUP(TRUE,EXACT(B6:B12,"XD389b"),D6:D12)
XLOOUP 함수를 이용한 수식도 9행에 있는 부품명 'AMD 라이젠5-4세대'를 제대로 찾아 줍니다.
수식을 풀이해 보면
=XLOOKUP(TRUE,EXACT(B6:B12,"XD389b"),D6:D12)
수식에서 EXACT 함수는 [B6:B12] 범위를 'XD389b'와 비교해서 같으면 TRUE, 다르면 FALSE를 배열로 반환하므로 수식은 다음과 같이 바뀝니다.
(EXACT 함수의 결과가 배열이지만 엑셀 2021, Microsoft 365 버전 이후에는 동적배열을 지원하므로 배열수식은 필요하지 않음)
=XLOOKUP(TRUE,{F;F;F;T;F;F;F},D6:D12) => 'AMD 라이젠5-4세대'
(편의상 TRUE는 T, FALSE는 F로 표시함)
XLOOKUP 함수는 배열에서 TRUE의 위치 4를 찾고 부품명이 입력된 [D6:D12] 범위의 4번째 행의 'AMD 라이젠5-4세대'를 반환합니다.
관련 글
본문 내용 중 제목은 '3. XMATCH, EXACT 함수를 조합하여 찾기'인데 내용은 xlookup으로 잘못되어 있습니다.
지적 감사합니다. 수정했습니다.