टीएल; डीआर - यह एक्सेल स्टोर और आंतरिक रूप से सेल सामग्री का आदान-प्रदान कैसे करता है, इसकी एक कलाकृति है। एक खाली सेल बिना मूल्य वाला एक 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)