• 최초 작성일: 2019-12-16
  • 최종 수정일: 2022-03-03
  • 조회수: 8,238 회
  • 작성자: 엑셀러 권현욱
  • 강의 제목: 헷갈리는 엑셀 '조건 분기 처리' 고민 끝내기

엑셀러 권현욱

들어가기 전에

엑셀을 배울 때 가장 먼저 배우는 함수가 Sum, Average, Count 같은 함수일 겁니다. 엑셀로 계산한 결과를 손바닥 만한 계산기로 검증(?)해 보고는 감탄합니다.

'어, 이제 계산기가 없어도 되겠네...'

그 다음으로, If나 Sumif, Countif 같은 조건 분기 처리 함수를 써보고는 또 감탄합니다.

'엑셀은 정말 대단해. 이런 고차원적인 걸 이해하는 나는 엑셀에 소질이 있나봐!'

무언가를 '처리'한다는 것은 넓은 의미에서 '조건 분기 처리'를 한다는 것과 같은 의미라 해도 과언이 아닙니다. 컴퓨터(CPU) 성능이 계속 업그레이드 되는 것은 조건 분기 처리를 얼마나 빨리 할 수 있는가와 관련이 깊습니다.

화성 탐사선을 가만히 보면 거대한 '조건 분기 처리 머신(machine)'에 다름 아닙니다. 앞에 뭔가 있는데 조건 분기 처리를 신속하게 하지 못하면 바위에 부딪치거나 낭떠러지에서 굴러떨어지겠지요?

로딩 중...

영화 '터미네이터'도 마찬가지입니다. 눈 앞에 뭔가 나타났으면 적군인지 여부를 재빨리 파악하여 도망치든지 싸워야 하죠. 그런데 조건 분기 처리하느라 랙 lag 걸려서 '지금 총을 뽑아 말어?' 이러고 있으면 "Hastala vista, baby!' 해야 하는 겁니다.

이번 시간에는 엑셀의 대표적인 조건 분기 처리 방식에 대해 살펴봅니다. 참고로 이번 강의는 몇년 전에 최초 포스팅한 글에 일부 내용을 추가/보완하여 재포스팅한 글입니다.



8가지 종류의 주민등록번호?

주민등록번호의 뒷부분 첫자리(7번째) 숫자를 통해 성별을 알 수 있다는 것은 상식에도 못낍니다. 질문을 하나 드리지요. 주민등록번호 7번째 숫자는 몇 가지 종류가 있을까요?

"1이면 남자, 2면 여자니까 두 종류... 아니지 2000년대생은 3과 4도 있으니까 4가지가 있죠!"

그렇습니다. 1900년대 출생자는 남자가 1, 여자가 2이고, 2000년 이후 출생자는 남자가 3, 여자가 4입니다.

로딩 중...

그런데 뒷부분 첫 자리 숫자가 5나 6도 있고 심지어는 7과 8도 있다는 사실을 아시나요?

외국인의 경우가 이에 해당합니다. 외국인이 무슨 주민등록이 있느냐고요? 입국일로부터 90일을 초과하여 국내에 체류하는 외국인들에게는 '외국인 등록번호'를 부여하며, 주민등록번호와 형식이 같습니다.

로딩 중...

그러니까 내외국인을 망라한다면 경우의 수는 모두 8가지나 됩니다. 주민등록번호나 외국인등록번호에서 성별을 알아내는 다양한 방법에 대해 살펴보겠습니다.

로딩 중...

본 예제에서 사용된 주민/외국인등록번호는 가상의 사례입니다. 혹시 누군가의 것과 일치하더라도 어디까지나 우연의 일치임을 밝힙니다.(^^)

[방법 1] IF + 텍스트 함수 사용

가장 만만한(?) IF 함수를 써서 해결해 보죠. MID 함수를 이용하여 번호 뒷자리 첫 번째 수를 구한 다음, 중첩 IF 문을 작성합니다. VALUE는 숫자 형식의 문자열 데이터를 온전한 숫자로 바꿔주는 함수입니다.

C3 셀: =IF(VALUE(MID(B3, 8, 1))=1, "남", IF(VALUE(MID(B3, 8, 1))=2, "여", IF(VALUE(MID(B3, 8, 1))=3, "남", IF(VALUE(MID(B3, 8, 1))=4, "여", IF(VALUE(MID(B3, 8, 1))=5, "남", IF(VALUE(MID(B3, 8, 1))=6, "여", IF(VALUE(MID(B3, 8, 1))=7, "남", "여")))))))

아주 직설적(?)으로 작성하였기에 길고 복잡해 보입니다만, 찬찬히 살펴보면 이해하기에 그리 어렵지는 않으리라 생각합니다. 수식이 길어지는 게 부담스럽다면 적당한 셀(E3)에 뒷자리 첫 번째 수를 추출하고 수식에 적용하면 길이가 대폭 줄어듭니다.

=IF(E3=1, "남", IF(E3=2, "여", IF(E3=3, "남", IF(E3=4, "여", IF(E3=5, "남", IF(E3=6, "여", IF(E3=7, "남", "여")))))))

Microsoft 365 사용자라면 Let 함수를 사용하여 이렇게 표현할 수도 있습니다.

=LET(x,VALUE(MID(B3, 8, 1)),IF(x=1, "남", IF(x=2, "여", IF(x=3, "남", IF(x=4, "여", IF(x=5, "남", IF(x=6, "여", IF(x=7, "남", "여"))))))))

Microsft 365 이전 버전을 사용하는 분들이 더 많으리라 생각되므로 보다 범용적인 방식을 택하는 것이 좋겠습니다. 지금부터는 E3 셀에 뒷자리 첫 번째 수가 구해져있다고 가정하고 진행하겠습니다. Value 함수를 추가 적용하여 온전한 형태의 숫자 데이터로 변환해 줍니다.

E3 셀: =VALUE(MID(B3, 8, 1))
로딩 중...

[방법 2] IFS 함수 사용 (엑셀 2019)

엑셀 2019버전을 사용한다면 IFS 함수를 사용해 보세요. IF를 반복해서 적지 않아도 되기 때문에 수식을 간결하게 작성할 수 있습니다.

C3 셀: =IFS(E3=1, "남", E3=2, "여", E3=3, "남", E3=4, "여", E3=5, "남", E3=6, "여", E3=7, "남", TRUE, "여")

IFS 함수의 맨 마지막 조건을 적기 전에 TRUE라고 한 다음, 마지막 처리 조건을 기재한 점을 눈여겨 보시기 바랍니다.

[방법 3] CHOOSE 함수 사용

CHOOSE 함수를 이용하면 더욱 구조적이고 이해하기 쉬운 수식이 될 수 있습니다.

C3 셀: =CHOOSE(E3, "남", "여", "남", "여", "남", "여", "남", "여")

[방법 4] IF + 논리 함수 사용

논리 함수의 하나인 OR를 IF와 조합하여 아래와 같이 할 수도 있겠습니다.

C3 셀: =IF(OR(E3=1, E3=3, E3=5, E3=7), "남", "여")

[방법 5] IF + 정보 함수 사용

정보 함수 ISODD(홀수 여부 판단)나 ISEVEN(짝수 여부 판단) 함수를 사용하면 특정 숫자가 홀수인지 짝수인지 여부를 알 수 있습니다. 이 특성을 이용하여 IF 함수와 조합해서 아래 수식 중 하나를 사용합니다.

=IF(ISODD(E3), "남", "여")
=IF(ISEVEN(E3), "여", "남")

일단 이 정도 방법들이 생각납니다. 다른 방법이 더 있을 법 합니다. 연구해 보세요.

다음 시간에...