MS एक्सेल में एकाधिक डिपेंडेंट ड्रॉप-डाउन बनाना हमेशा एक चुनौती रहा है। हमें इस तरह की ड्रॉप-डाउन सूची की आवश्यकता तब होती है जब दो ड्रॉप-डाउन सूचियों के बीच निर्भरता या संबंध होता है। हम आमतौर पर इसे विभिन्न सूत्रों का उपयोग करके या एक्सेल में उपयुक्त विकल्प बदलकर बनाते हैं। हालांकि, एक्सेल VBA कोड का उपयोग करके एकाधिक ड्रॉप-डाउन सूचियां बनाने के कुछ आसान तरीके हैं। इस लेख में, मैं एक्सेल में VBA कोड का उपयोग करके एकाधिक ड्रॉप-डाउन सूचियां बनाने के विभिन्न तरीके दिखाऊंगा।
और पढ़ें: एक्सेल में ड्रॉप डाउन सूची कैसे बनाएं (स्वतंत्र और डिपेंडेंट)
एक्सेल में डिपेंडेंट ड्रॉप-डाउन सूचियां क्या हैं?
मुख्य प्रक्रिया पर जाने से पहले आइए जानें कि एक्सेल में डिपेंडेंट ड्रॉप-डाउन सूची क्या है। जब दो या अधिक ड्रॉप-डाउन सूचियों के बीच निर्भरता होती है तो हम उन्हें एक्सेल में डिपेंडेंट ड्रॉप-डाउन सूचियां कहते हैं। नीचे दी गई तस्वीर डिपेंडेंट ड्रॉप-डाउन सूची के बारे में एक स्पष्ट अवधारणा दर्शाती है।


जैसा कि हम यहां देख सकते हैं, दो ड्रॉप-डाउन सूचियां श्रेणी (Category) और भोजन (Food) पूरी तरह से दो डिपेंडेंट ड्रॉप-डाउन सूचियां हैं। श्रेणी चयन के आधार पर हम यहां भोजन की सूची परिभाषित करते हैं। इस प्रकार, एकाधिक कैस्केडिंग ड्रॉप-डाउन सूचियां काम करती हैं।
और पढ़ें: एक्सेल में डायनामिक डिपेंडेंट ड्रॉप डाउन सूची कैसे बनाएं
एक्सेल VBA में एकाधिक डिपेंडेंट ड्रॉप-डाउन सूची बनाने के 3 तरीके
1. एक्सेल VBA में ड्रॉप-डाउन सूची में एकाधिक चयन कैसे करें
मान लीजिए हमारे पास दो सूचियां हैं जिनके नाम प्रोजेक्ट नाम (Project Name) और प्रोजेक्ट सदस्य (Project Members) हैं। प्रत्येक प्रोजेक्ट के लिए, हम एक ड्रॉप-डाउन सूची का उपयोग करके एक या एकाधिक सदस्य असाइन करेंगे।

चरण 1: डेवलपर (Developer) टैब पर जाएं और विजुअल बेसिक (Visual Basic) खोलें (शॉर्टकट Alt + F11)

चरण 2: संबंधित VBAProject मेनू से संबंधित वर्कशीट पर जाएं।
चरण 3: अब VBA कंसोल में निम्न कोड लिखें

कोड:
Private Sub Worksheet_Change(ByVal Target As Range) Dim Old_value As String Dim New_value As String Application.EnableEvents = True On Error GoTo Exitsub If Not Intersect(Target, Range("C4:C11")) Is Nothing Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False New_value = Target.Value Application.Undo Old_value = Target.Value If Old_value = "" Then Target.Value = New_value Else If InStr(1, Old_value, New_value) = 0 Then Target.Value = Old_value & ", " & New_value Else: Target.Value = Old_value End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
चरण 4: अब प्रोजेक्ट सदस्य कॉलम में एकाधिक नाम चुनें

चरण 5: सभी सेल ड्रॉप-डाउन सूची से एकाधिक चयन कर सकते हैं

और पढ़ें: एक्सेल में ड्रॉप डाउन सूची से एकाधिक चयन कैसे करें
2. एक्सेल VBA में एकाधिक डिपेंडेंट ड्रॉप-डाउन सूची बनाएं
आइए सब्जियों, फलों और डेयरी उत्पादों जैसे विभिन्न श्रेणी के खाद्य पदार्थों का एक डेटासेट लें। अब हम उनकी श्रेणी के अनुसार खाद्य पदार्थ खोजना चाहते हैं। जैसे अगर हम श्रेणी के रूप में फल चुनते हैं तो भोजन कॉलम में उपलब्ध आइटम रास्पबेरी, एप्रिकॉट, पीच, आम होने चाहिए। इसलिए, खाद्य पदार्थ श्रेणी के अनुसार उपलब्ध होने चाहिए। श्रेणी और भोजन के बीच एक निर्भरता है।

चरण 1: विधि 1 (चरण 1 और चरण 2) से समान चरणों का पालन करके VBA कंसोल खोलें फिर निम्न कोड लिखें

कोड:
सब्जी ड्रॉप-डाउन सूची बनाने के लिए:
Sub Vegetable_List() Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Formula1:="=Vegetable_List" End Sub
फल ड्रॉप-डाउन सूची बनाने के लिए:
Sub Fruit_List() Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Formula1:="=Fruits_list" End Sub
डेयरी उत्पाद ड्रॉप-डाउन सूची बनाने के लिए:
Sub Dairy_List() Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Formula1:="=Dairy_Product_List" End Sub
इस भाग में, हम व्यक्तिगत खाद्य पदार्थों की सूचियां बना रहे हैं और उन्हें ड्रॉप-डाउन सूची में सहेज रहे हैं। यह सूची C4:C6 रेंज में उपलब्ध होगी।
चरण 2: अब हमें रेंज B4:B6 के लिए मुख्य फंक्शन लिखने की आवश्यकता है

कोड:
Private Sub Worksheet_Change(ByVal Target As Range) Range("B4:B6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _ Formula1:="Vegetable_List,Fruits_list,Dairy_Product_List" If Range("B4:B6").Value = "Vegetable_List" Then Call Vegetable_List ElseIf Range("B4:B6").Value = "Fruits_list" Then Call Fruit_List ElseIf Range("B4:B6").Value = "Dairy_Product_List" Then Call Dairy_List Else End If
कोड व्याख्या
- यहां हम B4:B6 रेंज के लिए श्रेणी नामक एक और सूची बना रहे हैं, जिसमें खाद्य पदार्थों की श्रेणी के नाम होंगे।
- फिर हम सूची के मानों की जांच कर रहे हैं और उन्हें उनके आइटम के अनुसार वर्गीकृत कर रहे हैं। इसके लिए IF ELSE स्टेटमेंट का उपयोग किया जाता है।
- यदि हमें कोई मिलान नाम मिलता है, तो हम सिर्फ कॉलबैक विधि का उपयोग करके सूची बनाने वाले फंक्शन को कॉल करते हैं। जैसे
If Range(“B4:B6”).Value = “Vegetable_List” Then
Call Vegetable_List
- यहां अगर सेल का मान Vegetable_List टेक्स्ट से मेल खाता है, तो हम सब्जी सूची बनाने और दिखाने के लिए Vegetable_List फंक्शन को कॉल करेंगे।
तो, हमारा पूरा कोड इस तरह होगा:

चरण 3: अब वर्कशीट पर जाएं और ड्रॉप-डाउन सूची से कोई भी श्रेणी चुनें

चरण 4: फिर संबंधित आइटम भोजन कॉलम में उपलब्ध होंगे

चरण 5: अंतिम आउटपुट इस तरह होगा:

3. एक्सेल VBA में एकाधिक डिपेंडेंट ड्रॉप-डाउन सूची साफ़ करना
पिछले खंड में, हमने केवल देखा है कि हम एक्सेल में संबंधित मिलान सूची कैसे प्राप्त कर सकते हैं। लेकिन कभी-कभी कुछ गलत चयन हो सकते हैं जो स्वचालित रूप से नहीं हटाए जाएंगे। हम इस तरह की समस्या को रोकने के लिए सूत्र का उपयोग कर सकते हैं।
एक अन्य विकल्प पहले ड्रॉपडाउन में चयन करने के बाद, डिपेंडेंट सेल को साफ़ करने के लिए मैक्रो का उपयोग करना है। यह गलत चयन को रोकेगा।

चरण 1: विधि 1 (चरण 1 और चरण 2) से समान चरणों का पालन करके VBA कंसोल खोलें फिर निम्न कोड लिखें

कोड:
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target.Column = 2 Then If Target.Validation.Type = 3 Then Application.EnableEvents = False Target.Offset(0, 1).ClearContents End If End If exitHandler: Application.EnableEvents = True Exit Sub End Sub
चरण 2: अब भोजन (Food) कॉलम से कोई भी आइटम चुनें और श्रेणी (Category) से कोई अलग श्रेणी चुनने का प्रयास करें और देखें क्या होता है
पहला

दूसरा

अंतिम आउटपुट

और पढ़ें: एक्सेल में ड्रॉप-डाउन सूची कैसे हटाएं
याद रखने योग्य बातें
| सामान्य त्रुटियां | वे कब दिखाई देती हैं |
|---|---|
| सूची हटाने में असमर्थ | डेटा वैलिडेशन में, यदि अनुमति दें (Allow) सूची के बराबर नहीं है और स्रोत सही ढंग से नहीं चुना गया है तो ड्रॉप-डाउन सूची हटाई नहीं जा सकती, या आप सूची हटाने के लिए VBA कोड का उपयोग करें। |
| मान अद्यतन समस्या | आम तौर पर, डिपेंडेंट ड्रॉप-डाउन सूचियों में, यदि कोई गलत मान है, तो यह स्वचालित रूप से अपडेट नहीं होगा। हम या तो सूत्र या VBA कोड (इस लेख में विधि 3) का उपयोग करके मान को स्वचालित रूप से अपडेट कर सकते हैं। |
निष्कर्ष
ये एक्सेल VBA में एकाधिक डिपेंडेंट ड्रॉप-डाउन सूचियां बनाने या हेरफेर करने के कुछ तरीके हैं। मैंने सभी विधियों को उनके संबंधित उदाहरणों के साथ दिखाया है लेकिन कई अन्य पुनरावृत्तियां हो सकती हैं। मैंने उपयोग किए गए फंक्शन के मूल सिद्धांतों पर भी चर्चा की है। यदि आपके पास इसे प्राप्त करने की कोई अन्य विधि है, तो कृपया बेझिझक इसे हमारे साथ साझा करें।
आगे पढ़ें
- एक्सेल में एकाधिक कॉलम में ड्रॉप डाउन सूची कैसे बनाएं (3 तरीके)
- चयन के आधार पर एक्सेल ड्रॉप डाउन सूची
- ड्रॉप-डाउन सूची बनाने के लिए IF स्टेटमेंट का उपयोग कैसे करें
- दूसरी शीट से एक्सेल में ड्रॉप डाउन सूची बनाएं (2 विधियां)
- एक्सेल में ड्रॉप-डाउन सूची कैसे संपादित करें (4 बुनियादी दृष्टिकोण)
- एक्सेल में ड्रॉप डाउन सूची के साथ VLOOKUP