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

यहां हमारे पास कई स्टेशनरी तत्व हैं, जिनका उपयोग करके हम एक ड्रॉप-डाउन सूची बनाएंगे और वहां एकाधिक आइटम चुनेंगे।
ध्यान दें कि चीजों को सरल रखने के लिए यह एक सरल डेटासेट है। एक व्यावहारिक परिदृश्य में, आप बहुत बड़े और जटिल डेटासेट का सामना कर सकते हैं।
अभ्यास वर्कबुक
आप नीचे दिए गए लिंक से अभ्यास वर्कबुक डाउनलोड करने के लिए स्वागत है।
ड्रॉप-डाउन सूची में एकाधिक चयन
सबसे पहले, हमें अपने स्टेशनरी के आधार पर एक ड्रॉप-डाउन सूची बनाने की आवश्यकता है। आइए इसे जल्दी से बनाएं। ड्रॉप-डाउन सूची बनाने के बारे में लेख पर जाने में संकोच न करें।
डेटा वैलिडेशन (Data Validation) डायलॉग बॉक्स में LIST डेटा प्रकार चुनें और आइटम की सेल रेंज डालें।

B4:B11 वह रेंज है जिसमें स्टेशनरी तत्व हैं। अब आपको ड्रॉप-डाउन सूची मिल जाएगी।

और पढ़ें: चयन के आधार पर एक्सेल ड्रॉप डाउन सूची
1. एकाधिक आइटम चुनें (डुप्लिकेट चयन की अनुमति देता है)
एक पारंपरिक ड्रॉप-डाउन सूची हमेशा एक ही आइटम चुनती है। यहां आप देख सकते हैं, हमने सूची से पेन (Pen) चुना है (नीचे छवि)।

अब, अगर हम दूसरा आइटम चुनते हैं, मान लीजिए पेंसिल (Pencil)

तो यह पिछले मान को बदल देगा। केवल पेंसिल (Pencil) चुना हुआ रहेगा।

एकाधिक आइटम चुनने के लिए, हमें VBA कोड का उपयोग करने की आवश्यकता है। माइक्रोसॉफ्ट विजुअल बेसिक फॉर एप्लीकेशन (Microsoft Visual Basic for Applications) विंडो खोलें (ALT + F11 दबाकर खोलें)।
अब उस वर्कशीट के नाम या नंबर पर डबल-क्लिक करें जहां आप ड्रॉप-डाउन सूची के भीतर एकाधिक आइटम चुनना चाहते हैं। आपको उस विशेष शीट के लिए कोड विंडो मिल जाएगी।

यहां, हमारी वर्कबुक में Sheet2 के लिए कोड विंडो है (हमारे पास इस शीट में ड्रॉप-डाउन सूची है)।
एक बार कोड विंडो खुलने पर, वहां निम्न कोड डालें
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

कोड सेव करें, और अब ड्रॉप-डाउन सूची में मान चुनने का प्रयास करें।

पेंसिल (Pencil) चुनने के बाद, हम दूसरा आइटम नोटबुक (Notebook) चुनने जा रहे हैं। और आप देख सकते हैं, हमें दोनों आइटम मिल गए (नीचे छवि)।

यह कोड हमें चयन दोहराने की अनुमति देगा। मान लीजिए अगर हम फिर से पेंसिल (Pencil) चुनते हैं,

तो हमें चयन बॉक्स में फिर से आइटम मिल जाएगा।

कोड व्याख्या
हमने दो स्ट्रिंग Oldvalue और Newvalue घोषित की हैं।
आप देख सकते हैं हमने D4 सेल में ड्रॉप-डाउन सूची बनाई है, इसलिए हमारा लक्ष्य पता D4 है। और इसके अलावा, हमने Target.SpecialCells का उपयोग करके पुनः जांच की है कि सेल डेटा वैलिडेशन का उपयोग कर रहा है या नहीं।
एक बार मान चुने जाने के बाद, हमने इवेंट बंद कर दिए (Application.EnableEvents = False) ताकि परिवर्तन फिर से इवेंट को ट्रिगर न करें। फिर चयनित आइटम को Newvalue में संग्रहीत किया।
परिवर्तन को पूर्ववत करने के बाद, हमने मान को Oldvalue में सेट किया। फिर जांचें कि Oldvalue खाली है या नहीं। यदि खाली है (मतलब केवल एक मान चुना गया है), तो Newvalue वापस करें। अन्यथा, Oldvalue और Newvalue को जोड़ दें।
समाप्त करने से पहले इवेंट रीसेट करें, ताकि आवश्यकता पड़ने पर हम बदलाव कर सकें।
और पढ़ें: एकाधिक डिपेंडेंट ड्रॉप-डाउन सूची एक्सेल VBA
2. ड्रॉप डाउन सूची से एकाधिक आइटम चुनें (केवल अद्वितीय चयन)
पहले खंड में, हमने वह एकाधिक चयन देखा जहां दोहराव की अनुमति थी। यदि आप ऐसा नहीं चाहते हैं, तो इस खंड का पालन करें।
सुविधा के लिए, हमने इस प्रदर्शन के लिए एक अलग शीट का उपयोग किया। इस बार हम Sheet3 पर हैं। इस शीट के लिए कोड विंडो में निम्न कोड लिखें।
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ", " & Newvalue Else: Target.Value = Oldvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

क्या पहले कोड की तुलना में कोई अंतर है! ध्यान से देखें, आप थोड़ा अंतर देख पाएंगे।
यहां हमने VBA फंक्शन INSTR का उपयोग किया है। INSTR फंक्शन एक स्ट्रिंग में सबस्ट्रिंग की पहली घटना की स्थिति लौटाता है। अधिक जानकारी के लिए इस INSTR लेख पर जाएं।
InStr(1, Oldvalue, Newvalue) = 0 के साथ इस तार्किक ऑपरेशन का उपयोग करके, हमने जांच की है कि मान मिले हैं या नहीं। यदि तार्किक ऑपरेशन TRUE लौटाता है (पहले नहीं मिला) तो यह आइटम चुनने और पहले मान के साथ जोड़ने की अनुमति देता है।
कोड सेव करें और अब उस आइटम को चुनने का प्रयास करें जो पहले ही चुना जा चुका है।

यहां हमने पहले ही पेंसिल (Pencil) चुना है, अगर हम उसे फिर से चुनना चाहते हैं, तो हम नहीं कर सकते। यह डुप्लिकेट मान की अनुमति नहीं देता।
और पढ़ें: एक्सेल में दूसरी शीट से ड्रॉप डाउन सूची कैसे बनाएं
3. आइटम को नई लाइन में चुनें
अब तक, हमने आइटम को कॉमा से अलग पाया है। इस खंड में, हम चयनित आइटम को नई लाइनों में व्यवस्थित करेंगे।
सरलता के लिए, हम D4 सेल के साथ कुछ सेल मर्ज कर रहे हैं। ऐसा करने के लिए, उन सेल का चयन करें जिन्हें आप मर्ज करना चाहते हैं और होम (Home) टैब के अलाइनमेंट (Alignment) अनुभाग से मर्ज और सेंटर (Merge & Center) पर क्लिक करें।

सेल को अधिक ऊंचाई मिलेगी।

अब, आइए नई लाइन के माध्यम से आइटम को अलग करने के लिए कोड देखें। निम्न कोड का उपयोग करें
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & vbNewLine & Newvalue Else: Target.Value = Oldvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

पिछले कोड से एकमात्र अंतर यह है कि इस बार हमने OldValue और NewValue के बीच vbNewLine का उपयोग किया है।
vbNewLine आइटम के बीच एक नई लाइन प्रदान करता है।
अब आइटम चुनें।

हम एक आइटम पेन (Pen) चुनते हैं जो ऊपर की छवि में दिख रहा है। अब दूसरा तत्व चुनें।

आप पाएंगे कि दो आइटम अलग-अलग लाइनों में हैं।

यहां हमारे पास दो मान हैं, जो दो अलग-अलग लाइनों में हैं। दूसरा मान चुनने से वह दूसरी लाइन में जुड़ जाएगा। हर मान एक नई लाइन में होगा।

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