SEARCH() + IFERROR()
(CASE)
"사과"라는 단어가 포함되어 있는지 찾아서 1과 0으로 치환하려는데, 아래와 같은 문제가 생겼다.
A | B | C | 문제 | |
1 | 이름 | 과일 | 사과 | C열에 사용된 수식은 아래와 같음 |
2 | 김현동 | 초록사과 | 1 |
=IF(SEARCH("사과",B2,1)>0,1,0) |
3 | 김동현 | 귤 | #VALUE! |
=IF(SEARCH("사과",B3,1)>0,1,0) |
1. B3의 [과일] 셀을 검색하여 "사과"라는 낱말을 찾고, 몇 번째 글자에서 시작되는지 위치를 찾는다.
=SEARCH("사과",B3,1)
=3
2. 만약(IF), "사과"라는 낱말이 위치하는 곳이 0보다 크다면("사과"라는 낱말이 어딘가에 있다면), 셀 값에 1을 넣는다.
=IF(SEARCH("사과",B3,1)>0, 1)
=1
3. 하지만(ELSE), 0보다 크지 않다면, "사과"라는 낱말이 위치하지 않으므로, "셀 값에 0을 넣고 싶었다"
=IF(SEARCH("사과",B3,1)>0, 1, 0)
=#VALUE!
SEARCH() 에서 발생된 #VALUE! 때문에, IF()의 FALSE 조건인 0이 들어가지 못하고, 대신 에러값 #VALUE! 이 들어간 상황
(HINT)
IFERROR() 함수
=IFERROR({오류셀,수식}, "오류처리")
=오류처리
=IFERROR(B1234, "확인이 필요합니다")
=확인이 필요합니다
=IFERROR(SEARCH("사과",B3,1), 0)
=0
(ANSWER)
IFERROR() 함수로 SEARCH()에서 발생한 에러를 핸들링한다.
A | B | C | 문제 | |
1 | 이름 | 과일 | 사과 | C열에 사용된 수식은 아래와 같음 |
2 | 김현동 | 초록사과 | 1 |
=IF(IFERROR(SEARCH("사과",B2),0)>0,1,0) |
3 | 김동현 | 귤 | 0 |
=IF(IFERROR(SEARCH("사과",B3),0)>0,1,0) |
3. 먄약, 0보다 크지 않다면, "사과"라는 낱말이 위치하지 않으므로, 셀 값으로 0을 넣는다.
=IF(SEARCH("사과",B3,1)>0, 1, 0)
=#VALUE!
4. SEARCH()에서 발생된 에러를 0으로 치환한다. (왜? 찾을 수 없으면 어차피 0이고, 찾았다면 1 이상일테니까)
=IF(IFERROR(SEARCH("사과",B3,1), 0)>0, 1, 0)
=0
원하는 결과를 얻었다.
참과 거짓, 그리고 에러가 있다.
끄~읕~~