VBA लॉजिकल Operaटोर: एक्सेल VBA में AND, OR, NOT, IF NOT

⚡ स्मार्ट सारांश

VBA लॉजिकल Operaकई स्थितियों को मिलाकर एक ही परिणाम मिलता है: सही या गलत। यह पृष्ठ AND, OR और NOT को उदाहरणों सहित समझाता है, जिनमें कमांड बटन का उपयोग करके चलाया जा सकता है। इसमें एक पूर्ण सत्य सारणी और कम ज्ञात Xor, Eqv और Imp ऑपरेटर भी शामिल हैं।

  • 🔗 उद्देश्य: लॉजिकल ऑपरेटर एक ही इफ स्टेटमेंट के भीतर एक से अधिक शर्तों का मूल्यांकन करते हैं।
  • और Operaटोर: यह केवल तभी True लौटाता है जब इससे जुड़ी सभी शर्तें True हों।
  • OR Operaटोर: कम से कम एक शर्त सही होने पर True लौटाता है।
  • 🔄 नहीं Operaटोर: किसी परिणाम को उलट देता है, यानी सत्य को असत्य में और असत्य को सत्य में बदल देता है।
  • 📊 सच्ची तालिका: एक ही संदर्भ ग्रिड प्रत्येक इनपुट संयोजन के लिए प्रत्येक ऑपरेटर का परिणाम दिखाता है।
  • 🧮 अतिरिक्त Operaटोर्स: Xor, Eqv और Imp अनन्य, समतुल्य और निहित स्थितियों को संभालते हैं।
  • ⚠️ कोई शॉर्ट-सर्किट नहीं: VBA किसी भी शर्त के हर हिस्से का मूल्यांकन करता है, इसलिए गार्ड टेस्ट को नेस्टेड इफ क्लॉज़ में होना चाहिए।

VBA लॉजिकल OperaExcel VBA में AND, OR, NOT का उपयोग करना

एक्सेल VBA लॉजिकल Operaमरोड़

मान लीजिए कि आप किसी ग्राहक के ऑर्डर को प्रोसेस करना चाहते हैं। इसके लिए, आपको सबसे पहले यह देखना होगा कि ऑर्डर किया गया उत्पाद मौजूद है या नहीं। अगर वह मौजूद है, तो आप यह भी जांचना चाहेंगे कि उपलब्ध मात्रा पर्याप्त है या नहीं। ऐसे मामलों में लॉजिकल ऑपरेटर काम आते हैं। लॉजिकल ऑपरेटर का इस्तेमाल एक से ज़्यादा शर्तों का मूल्यांकन करने के लिए किया जाता है।

प्रत्येक स्थिति अपने आप में निर्मित होती है तुलना ऑपरेटरों और यह True या False लौटाता है। फिर एक लॉजिकल ऑपरेटर उन परिणामों को मिलाकर एक अंतिम उत्तर तैयार करता है।

मुख्य Excel VBA तार्किक ऑपरेटर AND, OR, NOT नीचे दी गई तालिका में सूचीबद्ध हैं:

एस / एन Operaटो विवरण उदाहरण उत्पादन
1 और AND: इसका उपयोग एक से अधिक शर्तों को संयोजित करने के लिए किया जाता है। यदि सभी शर्तें सत्य हैं, तो AND का मान सत्य होता है। यदि कोई भी शर्त असत्य है, तो AND का मान असत्य होता है यदि (1 = 1) और (0 = 1) तो असत्य
2 OR OR: इसका उपयोग एक से अधिक शर्तों को संयोजित करने के लिए किया जाता है। यदि कोई भी शर्त सत्य है, तो OR सत्य लौटाता है। यदि वे सभी असत्य हैं, तो OR असत्य लौटाता है यदि (1 = 1) या (5 = 0) तो <strong>उद्देश्य</strong>
3 नहीं नोट: यह एक व्युत्क्रम फ़ंक्शन की तरह काम करता है। यदि शर्त सत्य है, तो यह गलत लौटाता है, और यदि शर्त गलत है, तो यह सत्य लौटाता है। यदि नहीं (0 = 0) तो असत्य

ऊपर दिए गए तीनों विवरणों को इनपुट और परिणामों के एक ही ग्रिड के रूप में याद रखना आसान है।

VBA लॉजिकल के लिए सत्य सारणी Operaमरोड़

एक सत्य सारणी में इनपुट के सभी संयोजन और प्रत्येक ऑपरेटर द्वारा लौटाए गए परिणाम सूचीबद्ध होते हैं। इसे एक बार पढ़ने से बाद में लिखी जाने वाली किसी भी शर्त में अनुमान लगाने की आवश्यकता समाप्त हो जाती है।

शर्त ए शर्त बी ए और बी ए या बी नहीं ए
यह सच है यह सच है यह सच है यह सच है झूठा
यह सच है झूठा झूठा यह सच है झूठा
झूठा यह सच है झूठा यह सच है यह सच है
झूठा झूठा झूठा झूठा यह सच है

दो पैटर्न याद रखने लायक हैं। और यह चार पंक्तियों में से केवल एक पंक्ति पर ही सही परिणाम देता है, इसलिए यह चयन को सीमित कर देता है। OR केवल एक पंक्ति पर False परिणाम उत्पन्न होता है, इसलिए यह एक पंक्ति को चौड़ा कर देता है। नहीं यह दो के बजाय एक ही शर्त लेता है, इसलिए इसका अपना एक अलग कॉलम है।

VBA लॉजिकल Operaटॉर्स उदाहरण स्रोत Code

सरलता के लिए, हम हार्ड कोडेड संख्याओं की तुलना करेंगे।

“सम्मिलित करें विकल्प” से शीट में ActiveX बटन जोड़ें।

नीचे दी गई छवि में दिखाए अनुसार गुण सेट करें

VBA लॉजिकल Operaमरोड़
VBA लॉजिकल Operaमरोड़

निम्न तालिका उन गुणों को दर्शाती है जिन्हें आपको बदलने की आवश्यकता है और उन मानों को भी दर्शाती है जिन्हें आपको अपडेट करने की आवश्यकता है।

एस / एन नियंत्रण संपत्ति वैल्यू
1 कमांडबटन1 नाम btnAND
शीर्षक और Operator (1 = 1) और (0 = 0)
2 कमांडबटन2 नाम बीटीएनओआर
शीर्षक OR Operaटोर (1 = 1) या (5 = 0)
3 कमांडबटन3 नाम btnनहीं
शीर्षक नहीं Operaनहीं (0 = 0)

btnAND_Click में निम्न कोड जोड़ें

Private Sub btnAND_Click()
If (1 = 1) And (0 = 0) Then
    MsgBox "AND evaluated to TRUE", vbOKOnly, "AND operator"
Else
    MsgBox "AND evaluated to FALSE", vbOKOnly, "AND operator"
End If
End Sub

VBA यदि AND Operaटो

  • “यदि (1 = 1) और (0 = 0) तो” if कथन दो स्थितियों (1 = 1) और (0 = 0) को संयोजित करने के लिए AND तार्किक ऑपरेटर का उपयोग करता है। यदि दोनों स्थितियाँ सत्य हैं, तो 'Else' कीवर्ड के ऊपर का कोड निष्पादित होता है। यदि दोनों स्थितियाँ सत्य नहीं हैं, तो 'Else' कीवर्ड के नीचे का कोड निष्पादित होता है।

यहां दोनों शर्तें सही हैं, इसलिए बटन पर क्लिक करने से "AND का मान TRUE" प्रदर्शित होता है।

btnOR_Click में निम्न कोड जोड़ें

Private Sub btnOR_Click()
If (1 = 1) Or (5 = 0) Then
    MsgBox "OR evaluated to TRUE", vbOKOnly, "OR operator"
Else
    MsgBox "OR evaluated to FALSE", vbOKOnly, "OR operator"
End If
End Sub

VBA यदि OR Operaटो

  • “यदि (1 = 1) या (5 = 0) तो” if स्टेटमेंट दो शर्तों (1 = 1) या (5 = 0) को संयोजित करने के लिए OR लॉजिकल ऑपरेटर का उपयोग करता है। यदि इनमें से कोई भी शर्त सत्य है, तो Els कीवर्ड के ऊपर का कोड निष्पादित होता है। यदि दोनों शर्तें असत्य हैं, तो Els कीवर्ड के नीचे का कोड निष्पादित होता है।

पहली शर्त सत्य है और दूसरी असत्य है, इसलिए OR अभी भी सत्य लौटाता है और संदेश में लिखा होता है "OR का मूल्यांकन सत्य हुआ"।

btnNOT_Click में निम्न कोड जोड़ें

Private Sub btnNOT_Click()
If Not (0 = 0) Then
    MsgBox "NOT evaluated to TRUE", vbOKOnly, "NOT operator"
Else
    MsgBox "NOT evaluated to FALSE", vbOKOnly, "NOT operator"
End If
End Sub

VBA यदि नहीं Operaटो

  • “यदि नहीं (0 = 0) तो” VBA में if Not फ़ंक्शन, if स्टेटमेंट की शर्त के परिणाम को उलटने के लिए NOT लॉजिकल ऑपरेटर का उपयोग करता है। आंतरिक शर्त (0 = 0) सत्य है, इसलिए Not इसे असत्य में बदल देता है और 'Else' कीवर्ड के नीचे का कोड निष्पादित होता है। यदि आंतरिक शर्त असत्य होती, तो Not इसे सत्य बना देता और 'Else' के ऊपर का कोड चलता।

ये तीनों बटन एक निश्चित मान का परीक्षण करते हैं। वर्कशीट से वास्तविक स्थितियाँ पढ़ी जाती हैं और ऑपरेटरों के दोनों प्रकारों को मिलाया जाता है।

तार्किक और तुलनात्मक विधियों को कैसे संयोजित करें Operaमरोड़

एक प्रोडक्शन मैक्रो शायद ही कभी हार्ड-कोडेड नंबर की जांच करता है। यह एक मान पढ़ता है, उसकी तुलना करता है, और उन तुलनाओं को मिलाकर एक निर्णय लेता है। नीचे दिया गया मैक्रो किसी ऑर्डर को तभी स्वीकृत करता है जब उत्पाद मौजूद हो, मात्रा पर्याप्त हो, और ग्राहक खाता होल्ड पर न हो।

Sub ApproveOrder()
    Dim QtyOnHand As Long
    Dim QtyOrdered As Long
    Dim OnHold As Boolean

    QtyOnHand = Sheet1.Range("B2").Value
    QtyOrdered = Sheet1.Range("B3").Value
    OnHold = Sheet1.Range("B4").Value

    ' All three parts must hold for the order to pass
    If (QtyOrdered > 0) And (QtyOnHand >= QtyOrdered) And Not OnHold Then
        Sheet1.Range("B5").Value = "Approved"
    Else
        Sheet1.Range("B5").Value = "On hold"
    End If
End Sub

तीन नियम संयुक्त स्थिति को पठनीय और सही बनाए रखते हैं।

  • प्रत्येक तुलना को कोष्ठक में रखें: VBA तार्किक ऑपरेटरों से पहले तुलनात्मक ऑपरेटरों का मूल्यांकन करता है, लेकिन कोष्ठक समूह बनाते हैं।ping यह स्पष्ट है और बाद में स्थिति बिगड़ने पर गलती होने से बचाता है।
  • 'और' को 'या' पर प्राथमिकता देने का ध्यान रखें: ए या बी और सी इस प्रकार पढ़ा जाता है ए या (बी और सी)अगर आपका मतलब यह था (ए या बी) और सीकोष्ठक अनिवार्य हैं।
  • किसी बूलियन पर लागू न करें, किसी संख्या पर लागू न करें: होल्ड पर नहीं स्वाभाविक लगता है। बचें। 5 नहींक्योंकि Not संख्याओं पर बिटवाइज़ ऑपरेशन करता है और False के बजाय -6 लौटाता है।

⚠️ चेतावनी: VBA शॉर्ट-सर्किट नहीं करता है। यदि (ws कुछ भी नहीं है) या (ws.Name = “डेटा”) तोदूसरा भाग तब भी चलता है जब पहला सही होता है, जिससे रन-टाइम त्रुटि 91 उत्पन्न होती है। ऐसे गार्ड को नेस्टेड इफ स्टेटमेंट में विभाजित करें।

Xor, Eqv, और Imp OperaVBA में टॉर्स

AND, OR और NOT लगभग हर रोजमर्रा की स्थिति को कवर करते हैं, लेकिन VBA तीन और तार्किक ऑपरेटर प्रदान करता है जो कभी-कभी If स्टेटमेंट के समूह की तुलना में किसी नियम को कहीं अधिक स्पष्ट रूप से व्यक्त करते हैं।

Operaटो जब True लौटाता है उदाहरण उत्पादन
Xor इन दोनों शर्तों में से केवल एक ही सही है, दोनों कभी नहीं। (1 = 1) Xor (5 = 0) यह सच है
समतुल्य दोनों स्थितियों का मान समान है, या तो दोनों सत्य हैं या दोनों असत्य। (1 = 1) समतुल्य (2 = 2) यह सच है
छोटा सा भूत पहली शर्त दूसरी शर्त को दर्शाती है; केवल True Imp False ही गलत है। (1 = 1) महत्वपूर्ण (5 = 0) झूठा

Xor तीनों में सबसे व्यावहारिक है। यह ऐसे नियम के लिए उपयुक्त है जैसे "छूट केवल स्टाफ सदस्य या लॉयल्टी सदस्य पर लागू होती है, लेकिन उस व्यक्ति पर नहीं जो दोनों हो"। Eqv और Imp मुख्य रूप से पुराने कोड और लॉजिक अभ्यासों में दिखाई देते हैं, इसलिए इन्हें लिखने की तुलना में इन्हें पहचानना अधिक महत्वपूर्ण है।

उपरोक्त कोड युक्त Excel डाउनलोड करें

अक्सर पूछे जाने वाले प्रश्न

इसकी कोई व्यावहारिक सीमा नहीं है, लेकिन तीन या चार से अधिक होने पर पठनीयता तेजी से गिर जाती है। किसी लंबी शर्त को वर्णनात्मक नाम वाले बूलियन वेरिएबल में स्थानांतरित करें, फिर उस वेरिएबल का परीक्षण इफ स्टेटमेंट में करें।

किसी संख्या पर लागू होने पर, Not एक लॉजिकल इनवर्जन के बजाय बिटवाइज़ इनवर्जन करता है। इसे केवल तुलना या बूलियन वेरिएबल पर ही लागू करें, जैसे कि Not (Qty > 0), ताकि परिणाम True या False हो।

तर्क तो एक जैसा है, लेकिन वाक्य संरचना अलग है। वर्कशीट का फ़ॉर्मूला इन्हें फ़ंक्शन के रूप में इस्तेमाल करता है, जैसे AND(A1>0, B1>0)। VBA इन्हें शर्तों के बीच में रखता है, जैसे If A1 > 0 And B1 > 0 Then।

जी हां। शर्त को पेस्ट करें और एक एआई सहायक इसे स्पष्ट कोष्ठकों के साथ पुनः लिख देगा या इसे नामयुक्त बूलियन चरों में विभाजित कर देगा। पुनः लिखे गए रूप को सत्य सारणी से सत्यापित करें, क्योंकि गलत सरलीकरण से व्यवहार में चुपचाप परिवर्तन आ जाता है।

जी हां। बस एक्सप्रेशन दें और एक एआई असिस्टेंट हर इनपुट कॉम्बिनेशन को उसके परिणाम के साथ सूचीबद्ध कर देगा, जिससे तुरंत पता चल जाएगा कि कौन सी शाखा तक पहुंचा नहीं जा सकता या ब्रैकेट गलत जगह पर लगा है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: