이번에 알아볼 실제 함수는 AND와 OR입니다. 특이하게 얘네들은 단독으로 쓰이는 경우는 많지 않습니다. 거의 대부분 IF 함수 안에서 사용됩니다. 그래서 IF 함수 편에 설명하려는 것이고요. 함수는 두 가지지만 하나씩 따로 알아두기보다 묶음으로 알아두시는 것이 좋습니다. 왜냐하면 두 가지 모두 동일한 인수를 갖고 있으며 동일하게 사용하기 때문입니다. 물론 반환되는 결과는 다릅니다.
컴퓨터 언어를 하시는 분들은 논리 연산자라는 것이 매우 익숙하실 겁니다. "&&" 또는 "||"가 대표적이죠. 두 가지 이상의 조건을 어떻게 처리할지에 관한 것입니다. 아쉽게도 엑셀 함수에서는 논리 연산자를 사용할 수 없습니다. 그러니 논리 연산자에 대해 모르시는 분들도 걱정하실 필요 없습니다. 그 대신 알아야 할 것이 AND와 OR 함수입니다.
예제 파일을 열고 무엇을 할지부터 보겠습니다.
엑셀 특강 출석 현황이고 모두 결석한 사람은 재수강을 통보하려 합니다. 비고란에 재수강할 학생들은 "재수강"이라 표시하는 것이 좋겠습니다.
IF 함수를 사용하고 조건에 맞는 학생은 "재수강"을 반환하면 끝나겠군요. 그런데 문제가 있죠? 지금까지 알아본 IF는 logical_test(조건)가 하나인 경우였습니다. 즉 1차만 또는 2차만 X인지 아닌지를 판단했으면 됐는데, 이제는 1, 2차 모두 X인 것만을 분리해야 하는 것이 되었죠. 조건이 2개가 돼버린 것입니다.
1차만 보자면, 셀 값은 "O"또는 "X" 밖에 없습니다. 참이나 거짓이냐가 분명하죠.
하지만 2차로 늘어난 순간, 경우의 수는 4개로 늘어납니다.
만약 3차까지 늘어난다면, 경우의 수는 기하급수로 늘어나 8개가 됩니다.
O|O|O, O|O|X, O|X|O, O|X|X, X|O|O, X|O|X, X|X|O, X|X|X
이렇게 경우의 수가 늘어날 경우 어떤 것을 참으로 볼 것인가 문제가 됩니다. 지금의 경우라면 1, 2차 모두 X인 경우, 즉 X|X인 경우만이 참이 되겠네요.
바로 이렇게 여러 조건 중에 무엇을 참으로 결정할지 판단하는 함수가 AND와 OR입니다.
AND인수로 사용한 조건들이 모두 참인 경우 TRUE(참)를 반환. 하나라도 거짓이면 FALSE(거짓) 반환
AND(logical1, [logical2], ...)logical1 | 검사할 첫 번째 조건 |
logical2 | [선택] 검사할 두 번째 조건. 최대 255개까지 추가 지정 가능 |
OR인수로 사용한 조건들 중 하나 이상 참인 경우 TRUE(참)를 반환. 모두 거짓인 경우만 FALSE(거짓)을 반환
OR(logical1, [logical2], ...)logical1 | 검사할 첫 번째 조건 |
logical2 | [선택] 검사할 두 번째 조건. 최대 255개까지 추가 지정 가능 |
함수의 정의는 이렇게 됩니다. 지금의 경우라면 AND 함수를 사용하는 편이 직관적이네요.
작성해 보겠습니다.
- "재수강"을 반환할 비고 항목의 첫 셀(F7)을 클릭하여 선택합니다.
- 수식 입력줄에서 수식을 작성합니다.
- "="를 입력하여 수식을 시작합니다. => =
- "AND"를 작성하고 탭키를 눌러 함수명을 작성합니다. => =AND(
- AND 함수의 첫 번째 인수 logical1(조건1)를 작성합니다. 1차 참석 여부 셀(D7)은 참조하고 나머지는 입력합니다. => =AND(D15="X"
- 쉼표로 구분하고 두 번째 인수 logical2(조건2)를 작성합니다. 2차 참석 여부 셀(E7)은 참조하고 나머지는 입력합니다. => =AND(D15="X",E15="X"
- 함수가 하나이기 때문에 닫힌 괄호를 입력할 필요 없습니다. 엔터를 눌러 F7셀을 완성합니다. => =AND(D15="X",E15="X")
- 다시 F7셀을 클릭하여 선택하고 F16셀까지 자동 채우기 합니다.
- F7셀로 자동 채우기 했으므로 F16셀까지 F7셀의 서식이 복사됩니다. 최종, 자동 채우기 옵션 버튼을 클릭하고 서식 없이 채우기를 클릭합니다. => 원래의 서식으로 돌아갑니다.
함수 작성법을 잘 지키면서 작성해 주세요. 쉼표(인수의 구분), 큰따옴표(문자는 작성 시), 괄호(인수 감싸기)를 늘 생각하시면서 작성하셔야 합니다.
결과,
1, 2차 모두 X인 경우만 TURE를 반환하는 것이 확인됩니다.
그럼 남은 작업은 IF 함수만 적용하면 되겠습니다. 지금 한 작업이 IF 함수 첫 번째 인수 logical_test이니 참을 반환하는 두 번째 인수 value_if_true를 "재수강"으로, 거짓을 반환하는 세 번째 인수 value_if_false는 ""으로 아무런 값도 반환하지 않으면 되겠습니다.
- "재수강"을 반환할 비고 항목의 첫 셀(F7)을 클릭하여 선택합니다.
- 수식 입력줄에서 작성된 수식을 수정합니다.
- AND 함수 앞에서 IF를 입력하고 탭키를 눌러 IF 함수명을 작성합니다. => =IF(AND(D7="X",E7="X")
- IF 함수 첫 번째 인수 logical_test는 AND 함수로 작성된 상태입니다. 키보드의 END키를 눌러 커서 위치를 제일 끝으로 이동한 후 쉼표를 눌러 구분하고,
IF 함수 두 번째 인수 value_if_true(참)을 "재수강"으로 입력합니다. => =IF(AND(D7="X",E7="X"),"재수강" - 쉼표로 구분하고 세 번째 인수 value_if_false(거짓)를 ""로 작성합니다. 아무 것도 반환하지 않으려는 것입니다. => =IF(AND(D7="X",E7="X"),"재수강",""
- 함수가 두 개가 되었으므로 닫힌 괄호를 반드시 입력해야 합니다. 닫힌 괄호를 입력하고 엔터를 눌러 F7셀을 완성합니다. => =IF(AND(D7="X",E7="X"),"재수강","")
- 다시 F7셀을 클릭하여 선택하고 F16셀까지 자동 채우기 합니다.
- F7셀로 자동 채우기 했으므로 F16셀까지 F7셀의 서식이 복사됩니다. 최종, 자동 채우기 옵션 버튼을 클릭하고 서식 없이 채우기를 클릭합니다. => 원래의 서식으로 돌아갑니다.
결과,
1, 2차 모두 결석한 학생만 비고란에 재수강이 반환됩니다.
여기서 핵심은 IF 함수의 첫 번째 인수, logical_test(조건)을 어떻게 만드냐는 것입니다
AND로 만들 것인지, OR로 만들 것인지를 잘 판단해야 합니다. 지금의 경우에도 직관적이진 않지만, OR 함수를 써도 됩니다.
IF(OR(D7="O",E7="O"),"","재수강")
이런 식으로 사용해도 같은 결과를 얻을 수 있습니다. OR 함수는 조건이 모두 거짓인 것만 거짓을 반환하기 때문에 위와 같이 작성하면 거짓인 경우는 X|X만이 해당하게 됩니다. 이때는 "재수강"을 IF 함수 세 번째 인수 value_if_false의 위치에 작성해야 되겠죠. 조건이 바뀜에 따라 참, 거짓에 반환 값도 바뀐 것입니다.
조금 더 확장해 보겠습니다.
추가로 1, 2차 모두 참석한 학생에게 "우수"라고 표현하고 싶다면 어떻게 수식을 만들어야 할까요?
먼저 AND 함수를 사용한다면,
IF(AND(D7="X",E7="X"),"재수강",IF(AND(D7="O",E7="O"),"우수",""))
가 됩니다. 이전 강좌처럼 아닌 경우에 IF 함수를 사용하는 방법이죠. 반대로 OR 함수를 사용하면,
IF(OR(D7="O",E7="O"),IF(OR(D7="X",E7="X"),"","우수"),"재수강")
가 됩니다. 이번에는 참인 경우에 IF 함수를 사용한 것입니다. 결과는 모두 같습니다. 보기엔 굉장히 복잡해 보이나 경우의 수를 따지면 못할 것도 없습니다.
핵심은 AND를 쓸 것인지 OR를 쓸 것인지 결정하고 참과 거짓이 어떤 경우에 해당하지를 판단하는 것입니다.
그리고 AND와 OR의 개념은 정리할 필요가 있습니다.
직접적인 사용을 하지는 않지만 앞으로 나올 고급 필터나 DSUM, DAVERGE 등 여러 함수에서 이들의 개념이 사용되기 때문입니다.
AND 조건의 경우 여러 조건이 모두 참인 경우만 참을 반환하고, OR 조건은 어느 조건 하나라도 참이면 참을 반환하기 때문에 AND는 축소로, OR는 확장하는 개념이 포함됩니다.
즉 원하는 결과가 작아지는 것인지 많아지는 것인지를 생각하면 AND를 사용할지 OR를 사용할지를 판단하는 것이 쉬워지게 됩니다.
수학 시간에 배운 교집합과 합집합의 개념입니다.