AND 함수는 비어있는 빈 셀에 대해 TRUE 결과를 제공합니다. 왜 그렇습니까?


31

빈 B2 셀이 있습니다.

= ISBLANK (B2) 는 TRUE를 제공합니다

그것에 대한 간단한 논리 테스트는 FALSE를 반환합니다.

= IF (B2, TRUE, FALSE) 는 FALSE를 제공합니다

그러나 AND 문에서 직접 사용될 때 TRUE를 리턴합니다.

= AND (B2, TRUE) 는 TRUE를 제공합니다

물론 AND 문에서 간접적으로 사용되는 경우 여전히 FALSE를 반환합니다.

= AND (IF (B2, TRUE, FALSE), TRUE) 는 FALSE를 나타냅니다.

왜 내 Excel이 그런 식으로 동작하는지 설명해 주시겠습니까?

답변:


41

여기 에서 추출한 Excel 논리 함수-사실 및 그림 섹션을 찾으 십시오 .

논리 함수 (AND, XOR, NOT, OR)를 사용할 때 Excel에서 인수에 텍스트 값 또는 빈 셀이 포함 된 경우 이러한 값은 무시됩니다.


2
알아두면 좋습니다!
게리의 학생

2
어쩌면 표현식을 다루는 규칙을 추가 할 수 IF(B2,TRUE,FALSE)있습니까? 또한, 나는 논리적으로 올바른 (하지만 약간의 직관적) 접속사와 빈 세트를 결과의 disjunctions가 반환 될 것으로 기대, 즉 AND(B2)진정한 동안이 될 것이다 OR(B2)거짓했지만, 그들은 오류를 반환 실험 쇼 것이다.
PJTraill

2
모든 것이 아닌 경우 인수가 인수에 텍스트 값이나 빈 셀이 포함 된 값은 무시됩니다. 그러나 모든 인수에 텍스트 값이나 빈 셀이 포함되어 있으면이 함수는 #VALUE!
ThunderFrame

좋은 대답입니다. @ThunderFrame의 의견도 가장 중요합니다.
Raystafarian

한 가지 더 경고가 있습니다. 문자열 참조로 전달 된 텍스트와 달리 셀 참조로 전달 된 텍스트에는 차이가 있습니다. 자세한 내용은 내 답변을 참조하십시오.
ThunderFrame

6

TL; DR -Excel에서 셀 내용을 내부적으로 저장하고 교환하는 방식의 결과입니다. 빈 셀은 값이없는 VARIANT이며, 프로그래밍 언어가 0과 0이 아닌 값의 진실성을 처리하는 방식으로 인해 FALSE로 변환됩니다.

AND()(및 다른 모든 논리 함수) 의 동작은 두 인수를 모두 부울로 변환 한 다음 논리 and연산 을 수행하는 것입니다. 덮개를 벗기고 Visual Basic Editor의 개체 브라우저를 사용하여 Excel 개체 모델에 어떻게 정의되어 있는지 살펴볼 수 있습니다.

AND 객체 브라우저에서

그것은 반환합니다 Boolean아닌을 합니다 Variant. 이는 함수 평가 프로세스 중 어느 시점에서 모든 인수가 Booleans 로 변환되어야 함을 의미 합니다 . 실제로 관찰 된 동작은 처리 초기에 수행되었음을 나타냅니다. Excel은 모든 인수를 변환하려고 시도하고 변환 값이 성공하면 계산에 사용하여 사용자에게 친숙해 지려고 합니다. String"True"및 "False"값을 함수 에 전달하면이를 확인할 수 있습니다 .

=AND("true","true") <---Results in TRUE
=AND("false","true") <---Results in FALSE
Etc.

또한 숫자 인수로 설명 할 수 있습니다. 0이 아닌 값은 true로, 0은 false로 처리합니다.

=AND(42,-42) <---Results in TRUE
=AND(0,0) <---Results in FALSE
=AND(42,0) <---Results in FALSE
Etc.

조합하여 동일한 동작을 갖습니다.

=AND("false",0) <---Results in FALSE
Etc.

이제 사진을 찍어야합니다. 그렇다면 이것은 빈 셀 테스트와 어떤 관련이 있습니까? 이에 대한 답은 Excel이 셀 내용을 내부적으로 저장하는 방법에 있습니다. 다시 한 번 Excel 개체 모델이 밝아졌습니다.

객체 브라우저의 셀 값

COM VARIANT 구조 입니다. 이 구조는 기본적으로 코드를 해석하는 방법을 알려주는 유형과 데이터 영역의 두 부분으로 구성됩니다. Excel에 내용이없는 셀 Variant에는 하위 유형 이있는 "값"이 표시됩니다 VT_EMPTY. 다시, 이것은 매크로로 확인할 수 있습니다 :

Sub DemoMacro()
    'Displays "True" if cell A1 on the active sheet has no contents.
    MsgBox Range("A1").Value2 = vbEmpty
End Sub

따라서 AND함수가 그것을 Boolean? 로 변환 하면 어떻게됩니까 ? 좋은 질문! 프로그래밍 언어가 일반적으로 0을 처리하는 방식과 유사하게 False입니다.

Sub DemoMacro2()
    MsgBox CBool(vbEmpty)
End Sub

인수를 완전히 생략 하여 동일한 동작을 볼 수 있습니다 .

=AND(,)

...와 같은 것입니다 ...

=AND({vbEmpty},{vbEmpty})

...와 같은 ...

=AND(0,0)

... 이것은 :

=AND(FALSE,FALSE)

1
그러나 OP는 빈 셀 인수가 False가 아니라 True로 취급된다고보고합니다.
nekomatic

@ nekomatic-나는 그 부분을 놓쳤다. 오는 편집.
Comintern

A1에 : TRUE이 있고 B1에 앞에 아포스트로피 :가있는 텍스트 가 있으면 TRUE 'FALSE=AND(A1,B1)반환합니다. 므하 하하하
ThunderFrame

이 경우 정답은 아니지만 기능 평가에 대한 일반적인 일반적인 설명입니다. 이 의견을 +1로 취급하십시오.
mtone

@ ThunderFrame : 요점은 무엇입니까? A1이 포함되어있는 경우 TRUE, 그리고 B1에 포함 된 (빈 문자열 포함) 텍스트 값을=AND(A1,B1)반환합니다 TRUE.
Scott

2

@jcbermu의 답변에 대한 내 의견에 따라 약간의 수정이 있습니다.

모든 인수가 아닌 인수 셀 값 또는 빈 셀의 텍스트 포함 된 경우 해당 값은 무시됩니다. 그러나 모든 인수 셀 값이나 빈 셀의 텍스트 포함되어 있으면 함수는#VALUE!

수정이 암시하는 경우 :

하나 이상의 인수가 셀 참조의 텍스트와 달리 문자열 리터럴의 텍스트 인 경우 결과는 다음과 같습니다. #VALUE!

셀 경우 즉, A1값 "ABC", 다음이 =AND(A1,TRUE)반환 TRUE, 하지만 =AND("abc",TRUE) 돌아갑니다 #VALUE!. 아래 이미지에서 9 ~ 13 행을 참조하십시오.

여기에 이미지 설명을 입력하십시오

하지만 낯선 사람되나요?

경우 어떤 인수 오류는 다음 AND반환됩니다 첫 번째 오류입니다. 제외하고 , 인수 중 하나가 문자열 리터럴 인 경우 반환 값은#VALUE!

=AND(TRUE,TRUE,"abc") = #VALUE!

=AND(1/0,foo(),TRUE) = #DIV/0!

=AND(foo(),1/0,TRUE) = #NAME?

=AND(1/0,foo(),"abc",TRUE) = #VALUE!

=AND(foo(),1/0,"abc",TRUE) = #VALUE!


0

=ISBLANK(B2)
B2가 공백이 아닌 비어 있으면 참을 제공합니다.

=AND(B2,TRUE) 해야
=AND(B2="",TRUE)당신이 값 (B2 빈 반환 참)과 제 2의 논리가 True를 작성해야하고 사실을 반환
=IF(B2,TRUE,FALSE)해야 =IF(B2="",TRUE,FALSE)진정한는 줄 것이다
=AND(IF(B2,TRUE,FALSE),TRUE)되어야 =AND(IF(B2="",TRUE,FALSE),TRUE)진정한 제공합니다
모든 테스트를 작성하기 위해 항상 시도를하고 Excel에서 할 것입니다 생각하지 않습니다. 공식에서 B2를 테스트하지 않음을
항상 기억하십시오 . IF 함수 사용 방법 Excel AND 함수Logical Test


8
OP 포인트가 빠진 것 같습니다. = ISBLANK (B2)는 셀 B2가 비어 있음을 증명하기위한 것입니다. = AND (B2, TRUE)는 셀 B2의 부울 값을 테스트하기위한 것입니다. 셀 B2가 TRUE로 평가되는 경우에만 이것이 참으로 평가됩니다. 그런 다음 다음 테스트 = IF (B2, TRUE, FALSE)에서 FALSE를 반환하여 모순됩니다. Excel에서 일부 셀 값을 부울 값 (TRUE 또는 FALSE)으로 평가하는 대신 무시한다는 것을 알지 못했기 때문에 이것은 놀라운 질문입니다.
linhartr22

6
이것이 왜 공언입니까? AND(B2,TRUE)확실히 AND(B2="",TRUE)질문의 맥락에 있어서는 안됩니다 .
Dmitry Grigoryev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.