엑셀

엑셀 AND 함수, OR 함수를 제대로 이해해 보자

콘파냐 2017. 8. 1. 23:07
반응형

컴퓨터에 내리는 모든 명령은 디지털 회로에 전달되는 0과 1의 신호의 조합으로 이루어집니다.

시작부터 뚱딴지 같은 소리 같겠지만 엑셀 AND와 OR 함수 역시 디지털 회로처럼 0 또는 1의 신호를 받아서 0 또는 1의 결과를 반환하는 함수라고 생각할 수 있습니다.

따라서 엑셀 AND와 OR 함수는 디지털 논리의 가장 기본이 되는 기능을 하는 함수라고 생각할 수 있겠죠. 그래서 논리함수라고도 하지요.

AND 함수는 받은 신호의 값을 모두 곱해서 반환합니다. 예를들어 3, 5, 8이 전달되었다면 3x5x8=120이 되겠네요. 그런데 앞서 말했듯이 "논리"는 "Yes 아니면 No" 또는 "흑 아니면 백"처럼 맞냐 틀리냐의 두 가지 상태만 가지기 때문에 논리함수 역시 1 또는 0만 다룰 수 있습니다. 그래서 엑셀 논리함수(AND, OR)에서는 0이 아닌 모든 값은 1로 간주해버립니다. 따라서 120은 1로 간주됩니다. 물론 처음에 AND 함수에 전달된 3, 5, 8 역시 모두 1로 간주됩니다.

그리고 논리값은 1대신 TRUE라는 식별자를 사용하거나 0대신 FALSE라는 식별자를 사용할 수도 있습니다.

엑셀 AND 함수

AND 함수가 어떻게 동작하는가에 대해서는 앞서 예를들어 간단히 설명했습니다. 

이번에는 실제 예를들어 보겠습니다. 아래와 같은 점수표가 있고 시험 결과 셀은 아직 비어 있습니다. 

시험에 통과하기 위해서는 평균 75점 이상이어야 하고 낙제 점수를 받는 과목이 없어야 합니다. (낙제 점수는 70 미만입니다.)

시험에 통과 했다면 결과 셀에 "합격!"을, 시험에 떨어졌다면 불합격!을 표시하도록 해봅시다.

=IF(C10>=75, IF(C4>=70,IF(C5>=70,IF(C6>=70, IF(C7>=70, "합격", "불합격"), "불합격"), 불합격), "불합격"), "불합격")

평균점수가 75 이상인지 IF문으로 검사하고 각각의 과목 수에 맞게 IF문을 중첩해서 사용해서 각 과목 점수가 70점 이상인지를 확인하는 수식입니다. 모든 조건이 TRUE면 "합격"을 출력하고 하나라도 안맞는 조건이 있다면 "FALSE"를 출력합니다.

철수는 수학이 낙제점수(57점)이므로 불합격입니다. 영희는 합격이군요.


이렇게 IF문을 중첩하는 경우 조건이 많아지면 가독성이 무척 떨어집니다. 수식을 수정하기도 어렵게 되죠. 이런 반복적인 형태의 IF문의 중첩은 다음과 같이 AND 함수로 대체할 수 있는데 가독성도 좋아집니다.

=IF(AND(C10>=75, C4>=70, C5>=70, C6>=70, C7>=70), "합격","불합격")

AND 함수의 인수의 모든 조건이 TRUE면 IF함수의 조건(첫 번째 인수)가 TRUE가 되어 "합격"이 출력되고, AND 함수의 인수 중 FALSE가 하나라도 있다면 "불합격이"출력됩니다.

사실 위 수식은 다음과 같이 바꿀 수도 있습니다.

=IF((C10>=75) * (C4>=70) * (C5>=70) * (C6>=70) * (C7>=70), "합격","불합격")

각 조건들을 모두 곱했습니다. 모든 조건이 참이면 결과가 1이 나오겠죠.

AND 함수를 사용하는 것과 위 수식을 사용하는 것은 동일하므로 선택은 자유입니다. 다만 가독성을 생각하면 AND 함수가 더 좋을 수 있고 상황에 따라서 이 수식은 유연한 사용이 가능합니다.

※ 주의할 점은 각 조건에 괄호를 꼭 사용해 주어야 합니다. 왜냐면 비교 연산보다 곱셈연산이 우선순위가 높기 때문에 엉뚱한 결과가 나올 수 있습니다.


이번에는 문제를 수정하여 조건 중에 하나라도 부합되면 합격을 하도록 만들어 보겠습니다. 

위 예에서 AND 대신 OR로 바꾸면 됩니다.

=IF(OR(C10>=75, C4>=70, C5>=70, C6>=70, C7>=70), "합격","불합격")

조건에 하나라도 부합되면 "합격"입니다.

AND 함수가 조건들의 곱셈연산이라면 OR 함수를 조건들의 덧셈연산이라고 이해해 두시면 될 것입니다.

따라서 위 수식은 다음 수식과 일치합니다.

=IF((C10>=75) + (C4>=70) + (C5>=70) + (C6>=70) + (C7>=70), "합격","불합격")

위 수식은 OR 연산을 사용했던 수식과 정확히 일치하며 둘 중 어느 것을 사용해도 상관없습니다. 엑셀을 어느 정도 다루다보면 간간히 OR 함수 대신 + 연산을 사용하거나 AND 함수 대신 * 연산을 사용하는 경우를 자주 볼 수 있을 겁니다. 그런 경우에는 당황하시지 말고 *, +가  AND 또는 OR를 의미하는 것인지 천천히 수식을 살펴보세요.

반응형