और फ़ंक्शन रिक्त, BLANK सेल के लिए TRUE परिणाम देता है - क्यों?


31

मेरे पास बी 2 सेल है।

= ISBLANK (B2) TRUE देता है

इस पर एक साधारण तार्किक परीक्षण FALSE देता है

= IF (B2, TRUE, FALSE) FALSE देता है

फिर भी जब सीधे एक AND कथन में उपयोग किया जाता है, तो यह TRUE देता है

= और (B2, TRUE) TRUE देता है

बेशक, जब अप्रत्यक्ष रूप से एक AND क़ानून में उपयोग किया जाता है, तब भी यह FALSE देता है

= और (IF (B2, TRUE, FALSE), TRUE) FALSE देता है

क्या आप मुझे समझा सकते हैं कि मेरा एक्सेल इस तरह से व्यवहार क्यों करता है?

जवाबों:


41

यहाँ से निकाला गया , एक्सेल लॉजिकल फ़ंक्शंस शीर्षक वाले अनुभाग को देखें - तथ्य और आंकड़े :

Excel में जब आप तार्किक फ़ंक्शन (और, XOR, NOT, OR) का उपयोग कर रहे हैं, यदि किसी भी तर्क में पाठ मान या रिक्त कक्ष हैं , तो ऐसे मानों को अनदेखा कर दिया जाता है।


2
यह जानकर बहुत अच्छा लगा !!
गैरी के छात्र

2
शायद आप अभिव्यक्ति को कवर करने वाला नियम जोड़ सकते हैं IF(B2,TRUE,FALSE)? इसके अलावा, मुझे उम्मीद थी कि तार्किक रूप से सही (लेकिन थोड़ा प्रति-सहज) संयोजन और जिसके परिणामस्वरूप खाली सेट के विघटन वापस आ जाएंगे, यानी गलत AND(B2)होगा जबकि OR(B2)गलत था, लेकिन प्रयोग से पता चलता है कि वे एक त्रुटि लौटाते हैं।
PJTraill

2
यदि कोई हो लेकिन सभी तर्कों में पाठ मान या रिक्त कक्ष नहीं हैं, तो ऐसे मानों को अनदेखा कर दिया जाता है। लेकिन यदि सभी तर्कों में पाठ मान या रिक्त कक्ष हैं, तो फ़ंक्शन #VALUE!
थंडरफ्रेम 11

अच्छा उत्तर। @ थंडरफ्रेम की टिप्पणी सर्वोपरि है।
Raystafarian

वहाँ एक और अधिक चेतावनी है। एक सेल संदर्भ के रूप में पारित पाठ के बीच अंतर है, जैसा कि स्ट्रिंग-शाब्दिक के रूप में पारित पाठ के विपरीत है। विवरण के लिए मेरा उत्तर देखें।
थंडरफ्रैम

6

टीएल; डीआर - यह एक्सेल स्टोर और आंतरिक रूप से सेल सामग्री का आदान-प्रदान कैसे करता है, इसकी एक कलाकृति है। एक खाली सेल बिना मूल्य वाला एक VARIANT है, जो FALSE को धर्मान्तरित करता है कि कैसे प्रोग्रामिंग भाषाएं शून्य और गैर-शून्य मानों की सत्यता का इलाज करती हैं।

AND()(और सभी तार्किक कार्यों के सभी) का व्यवहार दोनों तर्कों को बुलियन में बदलना है, फिर andउन पर एक तार्किक संचालन करना है। आप कवर को वापस छील सकते हैं और विज़ुअल बेसिक एडिटर के ऑब्जेक्ट ब्राउज़र का उपयोग करके एक्सेल ऑब्जेक्ट मॉडल में इसे कैसे परिभाषित किया गया है, इस पर एक नज़र डाल सकते हैं:

और ऑब्जेक्ट ब्राउज़र में

ध्यान दें कि यह एक रिटर्न देता है Boolean, ए नहींVariant । यह साधन समारोह के मूल्यांकन की प्रक्रिया के दौरान कुछ बिंदु पर, कि सभी तर्क है करने के लिए परिवर्तित किया Booleanरों । वास्तविक देखे गए व्यवहार से संकेत मिलता है कि यह प्रसंस्करण में जल्दी किया जाता है - एक्सेल सभी तर्कों को बदलने और यदि यह सफल होता है तो गणना में परिवर्तित मूल्यों का उपयोग करके उपयोगकर्ता के अनुकूल होने की कोशिश करता है । यह Stringफ़ंक्शन के लिए "ट्रू" और "गलत" मानों को पास करके प्रदर्शित किया जा सकता है :

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

इसे संख्यात्मक तर्कों के साथ भी प्रदर्शित किया जा सकता है - यह किसी भी गैर-शून्य मान को सत्य और शून्य को असत्य मानता है:

=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 किसी सेल की सामग्री को आंतरिक रूप से कैसे संग्रहीत करता है। फिर से, एक्सेल ऑब्जेक्ट मॉडल ज्ञानवर्धक है:

ऑब्जेक्ट ब्राउज़र में सेल मान

ध्यान दें कि यह COM VARIANT संरचना है । इस संरचना में मूल रूप से 2 भाग होते हैं - एक प्रकार, जो कोड का उपयोग करके बताता है कि इसे कैसे व्याख्या करना है, और एक डेटा क्षेत्र। 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? अच्छा प्रश्न! यह गलत होता है, प्रोग्रामिंग भाषा आमतौर पर शून्य का इलाज कैसे करती है:

Sub DemoMacro2()
    MsgBox CBool(vbEmpty)
End Sub

आप पूरी तरह से तर्कों को छोड़ कर एक ही व्यवहार देख सकते हैं :

=AND(,)

... एक ही बात है ...

=AND({vbEmpty},{vbEmpty})

... जो समान है ...

=AND(0,0)

...जो है:

=AND(FALSE,FALSE)

1
लेकिन ओपी रिपोर्ट करता है कि एक खाली सेल तर्क को सही माना जाता है, न कि (जैसा कि आप कहते हैं) गलत।
nekomatic

@nekomatic - मुझे वह हिस्सा याद आ गया। आ रहा है संपादित करें।
कोमिन्टर्न

यदि A1 में शामिल है: TRUEऔर B1 में एपोस्ट्रोफ़ से पहले का पाठ शामिल है: और 'FALSEफिर =AND(A1,B1)TRUE लौटाता है। MWA-हा-हा-हा।
थंडरफ्रेम

इस मामले में सही उत्तर नहीं, लेकिन फिर भी फ़ंक्शन मूल्यांकन का एक अच्छा सामान्य विवरण। इस टिप्पणी को +1 मानें।
mtone

@ThunderFrame: आपकी बात क्या है? यदि A1 में शामिल है TRUE, और B1 में कोई पाठ मान (खाली स्ट्रिंग सहित) है , तो =AND(A1,B1)वापस आ जाता है TRUE
स्कॉट

2

एक छोटे से सुधार के साथ @ jcbermu के उत्तर पर मेरी टिप्पणी के अनुसार:

यदि सभी लेकिन सभी तर्कों में सेल वैल्यू या खाली सेल में टेक्स्ट वैल्यू नहीं है , तो ऐसे मानों को नजरअंदाज कर दिया जाता है। लेकिन अगर सभी तर्कों में सेल वैल्यू या खाली सेल में टेक्स्ट वैल्यू होती है, तो फंक्शन वापस आ जाता है#VALUE!

सुधार लागू होने के साथ:

यदि एक या एक से अधिक तर्क एक स्ट्रिंग-शाब्दिक से पाठ है, जैसा कि एक सेल संदर्भ में पाठ के विपरीत है, तो परिणाम है #VALUE!

यही है, अगर सेल A1में "एबीसी" का मूल्य है, तो =AND(A1,TRUE)रिटर्न TRUE, लेकिन =AND("abc",TRUE) रिटर्न #VALUE!। नीचे दी गई छवि में 13 के माध्यम से पंक्तियों को 9 देखें।

यहाँ छवि विवरण दर्ज करें

लेकिन अजनबी है ...

यदि कोई भी तर्क एक त्रुटि है, तो पहली त्रुटि 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)
TRUE देता है यदि B2 रिक्त स्थान नहीं है

=AND(B2,TRUE) होना चाहिए
=AND(B2="",TRUE)आप मूल्य (बी 2 खाली वापसी सच है) और 2 तार्किक यह सच है लिखने के लिए है और यह सच है वापस आ जाएगी
=IF(B2,TRUE,FALSE)होना चाहिए =IF(B2="",TRUE,FALSE)दे देंगे यह सच है
=AND(IF(B2,TRUE,FALSE),TRUE)किया जाना चाहिए =AND(IF(B2="",TRUE,FALSE),TRUE)यह सच है दे देंगे
कोशिश हमेशा सभी परीक्षण लिखने के लिए और नहीं लगता कि एक्सेल करना होगा है।
हमेशा याद रखें Logical Test, आपके सूत्र में B2 के लिए परीक्षण नहीं किया
गया है कि IF फ़ंक्शन एक्सेल और फ़ंक्शन का उपयोग कैसे करें


8
मुझे लगता है कि आप ओपी बिंदु से चूक गए। = ISBLANK (B2) सिर्फ यह साबित करने के लिए है कि सेल B2 रिक्त है। = और (B2, TRUE) सेल B2 के बूलियन मान का परीक्षण करने के लिए है। उसके बाद ही TRUE का मूल्यांकन होता है, यदि सेल B2 TRUE का मूल्यांकन करता है। इसके बाद निम्न परीक्षण द्वारा विरोधाभास किया जाता है, = IF (B2, TRUE, FALSE) FALSE को लौटाता है। यह एक भयानक सवाल है क्योंकि मुझे नहीं पता था कि बूलियन वैल्यू (TRUE या FALSE) में उनका मूल्यांकन करने के बजाय Excel कुछ सेल वैल्यू को अनदेखा करता है।
linhartr22

6
इसे क्यों उखाड़ा जाता है? AND(B2,TRUE)निश्चित रूप AND(B2="",TRUE)से प्रश्न के संदर्भ में नहीं होना चाहिए ।
दिमित्री ग्रिगोरीव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.