728x90
목차

1. IF 함수

2. 다중 IF문

3. SWITCH 함수

4. IFS 함수

 

엑셀의 논리 함수인 IF와 SWITCH는 논리식을 접수해서 조건부로 동작을 하는 함수입니다.

참과 거짓으로 구성된 논리식은 다양한 상황에 적용 가능합니다.
당연하지만 구조가 잘 잡혀 소스코드로 구성된 것과 비교할 수는 없지만, 엑셀이 접근성이 좋다는 것이 장점이 됩니다.

초보자라면 엑셀 조작과 기능, 기본함수와 IF를 배우면 실전에서 사용가능한 레벨이 됩니다.

논리연산자(=, >, <, >=, <=, <>)와 논리함수들(AND, OR, XOR, NOT)을 사용한 논리함수 IF와 SWITCH에 대해 보시죠.


 

320x100

 

1. IF 함수

 
IF(logical_test, value_if_true, value_if_False) : 논리식(logical_test)이 참이면 value_if_true을 아니면 value_if_False을 반반환한다.
 

  • logical_test : 논리식입니다. True (1)과 False (0)으로 결과가 나오는 논리식이나 숫자(0이 아니면 전부 True)가 사용됩니다. 값을 직접 입력하거나 셀을 참조할 수 있습니다. 문자는 #VALUE 에러를 발생시킵니다.
  • value_if_true : logical_test이 참 / True / 1 혹은 0이 아닌 숫자일때 반환할 값입니다. 문자나 숫자 값을 직접 입력하거나 다른 셀을 참조하거나 연산식이 들어갈 수도 있습니다. 입력하지 않으면 빈칸으로 출력합니다.
  • value_if_False : logical_test이 거짓 / False / 0 일때 반환할 값입니다. 문자나 숫자 값을 직접 입력하거나 다른 셀을 참조하거나 연산식이 들어갈 수도 있습니다. 입력하지 않으면 빈칸으로 출력합니다.

 

예시

IF("a"="b", 10, 0) → a=b가 거짓임 → 결과는 0
IF(10>1, 10, 0) → 10>1은 참임 → 결과는 10
IF(15, "abc", "def") → 15는 숫자로 True로 인식됨 → 결과는 abc

 
엑셀답계 표에서 응용하면 이렇게 됩니다.
기준인 "1500"과 값을 비교해서 크면 "초과" 작으면 "부족"을 출력합니다.
 

 
 

2. 다중 IF문

 
참과 거짓일때 출력하는 [Value_if_True]과 [Value_if_False] 자리에 함수를 입력할 수 있습니다.
이걸 이용하면 IF문은 연속적으로 사용할 수 있는 방법이 있습니다.
 
IF(logical_test, IF(logical_test, value_if_true, value_if_False), value_if_False)
IF(logical_test, value_if_true, IF(logical_test,value_if_true, value_if_False))
 
IF안에 IF를 다시 사용하는 건데 복잡해지는 건 어쩔 수 없지만 그만큼 할 수 있는 일이 많습니다.
능력이 강력하다라고 해야겠네요.

예시

A1 = 10, B1 = 5, C1 = 1
A2 = "A", B2 = "B", C2 = "C"

IF(B1 >3,IF(B1>7,"많음","보통"), "작음") → B1=5는 3보다는 크지만 7보다는 작음 → 결과는 보통
IF(A2="A",IF(B2="B",IF(C2="D","맞았어요","아쉬워요"),"틀렸어요"), "꽝입니다")
→ A2=A는 A이고, B2=B는 B이지만 C2=C는 D가 아님으로 → 결과는 "아쉬워요"

예제가 복잡하지요. 어쩔 수 없습니다. 복잡한 함수니까요.
언어를 배우지 않고도 다중 IF문을 쓰시는게 쉬운건 아닙니다.
제 예시를 복사해서 붙여넣어도 보시고 스스로도 변화를 주시면 고수가 될 것입니다.
 

 
 

3. SWITCH 함수

 
잘하는건 잘 하더라도 역시 다중 IF문은 너무 복잡합니다.
IF와 기능은 다릅니다. IF 쪽이 할 수 있는 일이 더 많아요.
하지만 어떤 경우에는 다중 IF문의 복잡한 피하고 약간 간소화해서 SWITCH를 사용할 수 있습니다.
 
SWICH(expression, value1, result1, [default_or_value2, result2]...) : expression이 value1일 경우 result1을 반환하고 value2일 때는 result2를 반환합니다. 다 없을 경우 default를 반환합니다.
 

  • expression : 비교할 대상입니다.
  • value1 : 비교할 값입니다. expression과 완전히 일치하는지 비교합니다.
  • result1 : value1과 같다면 반환할 값입니다.
  • default_or_value2 : expression이 value1과 다른 경우 비교할 값 value 2입니다.
    result 2가 없다면 마지막에 출력할 값이 됩니다.
  • result2 : value2과 같다면 반환할 값입니다.
  • value3, 4, 5 ... / result3, 4, 5 ... : 계속 추가할 수 있습니다. 126개까지 입력 가능합니다.

이게 복잡한 함수는 아닌데 인수를 계속 쓸 수 있는 특성 때문에 설명이 길어집니다.
예시를 사용해서 이어서 설명 드리겠습니다.
아래는 값을 기준표에서 찾아와서 옆의 점수를 출력하게 되어있습니다.
값 → 기준1, 출력1 → 기준2, 출력2 → ... 이런식으로 계속 비교해서 출력합니다.
마지막 까지 못찾을 때를 대비해서 쌍이 없는 숫자인 default를 넣어 둘 수도 있지만 아닐 수도 있습니다.
입력하지 않으면 빈칸으로 출력합니다.
 

 
SWITCH는 같은 숫자만 비교하기 때문에 크거나 작은 값을 조건으로 사용하는 IF문과 비교됩니다.
IF문쪽이 좀더 강력한 기능이기는 하죠.
하지만 사용조건이 맞으면 SWITCH는 입력하기가 쉬워서 필요없다고는 할 수 없습니다.
 
 

4. IFS 함수

 
오피스2019, 혹은 OFFICE365 최신 버전에서 업데이트된 함수입니다.
이름으로 알 수 있듯이 IF함수를 보강한 함수로 다중 IF문을 좀 더 간소하게 사용하기 위해 만들어졌습니다.
다중 IF문이 사용자에게 필요하지만 너무 길다는 단점을 개발진도 인식하는 모양이네요.
 
IFS([Something_True1, Value_True1,Something_True2,Value_True2,Something_True3,Value_True3, ... )
Something_True1이 참이면 Value_True1을 아니면 Something_True2를 검사해서 참이면 Value_True2를 반환합니다.
 

  • Something_True1 : 논리식입니다. True (1)과 False (0)으로 결과가 나오는 논리식이나 숫자(0이 아니면 전부 True)가 사용됩니다. 값을 직접 입력하거나 셀을 참조할 수 있습니다. 문자는 #VALUE 에러를 발생시킵니다.
  • Value_True1 : Something_True1 이 참 / True / 1 혹은 0이 아닌 숫자일때 반환할 값입니다. 문자나 숫자 값을 직접 입력하거나 다른 셀을 참조하거나 연산식이 들어갈 수도 있습니다. 입력하지 않으면 빈칸으로 출력합니다.
  • Something_True2 : 논리식입니다. Something_True1이 거짓이여야 동작하고 참이면 아예 검토도 되지 않습니다.
  • Value_True2 : Something_True2가 참 / True / 1 혹은 0이 아닌 숫자일때 반환할 값입니다. 이전에 참이면 아예 실행되지 않습니다.
  • 조건은 계속 뒤로가면서 입력할 수 있으며, 126개까지 입력이 가능합니다.

 
조건이 거짓이면 계속 뒤로 넘어가는 함수입니다.
조건이 126개 정도면 글자수가 단편소설 분량이 나올 것 같습니다. 사람이 쳐서 만드는 경우는 없을 것 같네요.
아래 예시를 보겠습니다.
 

참인지를 검사해서 계속해서 뒤로 넘어가게 됩니다.
=IFS(C3>=4.5,"A+",C3>4,"A",C3>3.5,"B+",C3>3,"B",C3>2.5,"C+",C3>2,"C",C3>1.5,"D+",C3>1,"D",C3>=0,"F")
 
이 함수의 단점 2개를 가지고 있습니다.
 

  1. 모든 조건이 아닐 경우 #N/A 에러가 출력됩니다. 에러 역시 엑셀의 출력값이지만 보기 싫을 수 있습니다.
    그럴 때는 조건을 다 쓰고 마지막에 =IFS(... ,1,"-") 이라고 입력하면 되겠죠. 다 해보고 아니면 "-"를 출력하니까요.
  2. 조건이 많아질 수록 순서나 입력이 틀리면 의도하지 않는 결과가 날 수 있습니다. 이건 어쩌면 이렇게 복잡한 함수를 사용하면서 필연적인 것일 수 있습니다.

 
 

반응형

+ Recent posts