এই আর্টিকেলে আমি আপনাকে দেখাব কীভাবে আপনি এক্সেলের একটি ওয়ার্কশীटের ড্রপ ডাউন লিস্ট থেকে ডুপ্লিকেট ভ্যালু রিমুভ করতে পারেন VBA-র সাহায্যে এবং শুধু ইউনিক ভ্যালুগুলো রাখতে পারেন। আপনি শিখবেন কীভাবে ইউনিক ভ্যালু এক্সট্রাক্ট করতে হয় যেগুলো কমপক্ষে একবার এবং ঠিক একবার উপস্থিত হয়।
VBA-তে এক্সেল ড্রপ ডাউন লিস্টে ইউনিক ভ্যালু (দ্রুত দৃষ্টি)
Sub Drop_Down_List_Unique_Values_At_Least_Once()
List_Location = "B3"
Data = Range(List_Location).Validation.Formula1
Data = Split(Data, ",")
Range(List_Location).Validation.Delete
Unique_Data = ""
Count = 0
For i = LBound(Data) To UBound(Data)
Unique_Values = Split(Unique_Data, ",")
For j = LBound(Unique_Values) To UBound(Unique_Values)
If Data(i) = Unique_Values(j) Then
Count = 1
Exit For
End If
Next j
If Count = 0 Then
If Unique_Data = "" Then
Unique_Data = Unique_Data + Data(i)
Else
Unique_Data = Unique_Data + "," + Data(i)
End If
End If
Count = 0
Next i
Range(List_Location).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Unique_Data
End Sub

VBA দিয়ে ড্রপ ডাউন লিস্টে ইউনিক ভ্যালু কীভাবে রাখবেন
এখানে আমাদের একটি এক্সেল ওয়ার্কশীটের B3 সেলে একটি ড্রপ-ডাউন লিস্ট রয়েছে যেটি কিছু দেশের নাম ধারণ করে।

কিন্তু আপনি দেখতে পাচ্ছেন, লিস্টে কিছু নাম রিপিট হয়েছে। যেমন জার্মানি তিনবার, এবং ইটালি দুবার রিপিট হয়েছে।
আজ আমাদের উদ্দেশ্য হলো ড্রপ-ডাউন লিস্ট থেকে ডুপ্লিকেট ভ্যালু রিমুভ করে শুধু ইউনিক ভ্যালুগুলো রাখা।
১. কমপক্ষে একবার উপস্থিত ইউনিক ভ্যালু রাখতে ম্যাক্রো ডেভেলপ করা
প্রথমে, আমরা একটি Macro ডেভেলপ করব কমপক্ষে একবার উপস্থিত ইউনিক ভ্যালুগুলো ড্রপ ডাউন লিস্টে রাখতে।
উদাহরণস্বরূপ, উপরের লিস্টের জন্য, Macro-র আউটপুট হবে Germany, Italy, France, England।
এই উদ্দেশ্যে VBA কোডটি হবে:
⧭ VBA কোড:
Sub Drop_Down_List_Unique_Values_At_Least_Once()
List_Location = "B3"
Data = Range(List_Location).Validation.Formula1
Data = Split(Data, ",")
Range(List_Location).Validation.Delete
Unique_Data = ""
Count = 0
For i = LBound(Data) To UBound(Data)
Unique_Values = Split(Unique_Data, ",")
For j = LBound(Unique_Values) To UBound(Unique_Values)
If Data(i) = Unique_Values(j) Then
Count = 1
Exit For
End If
Next j
If Count = 0 Then
If Unique_Data = "" Then
Unique_Data = Unique_Data + Data(i)
Else
Unique_Data = Unique_Data + "," + Data(i)
End If
End If
Count = 0
Next i
Range(List_Location).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Unique_Data
End Sub

⧭ আউটপুট:
কোডটি রান করুন। এটি এক্টিভ ওয়ার্কশীটের B3 সেলের ড্রপ-ডাউন লিস্ট থেকে ডুপ্লিকেট ভ্যালু রিমুভ করবে এবং শুধু কমপক্ষে একবার উপস্থিত ভ্যালুগুলো রাখবে।

⧭ নোটস:
কোড রান করার আগে ড্রপ-ডাউন লিস্ট থাকা ওয়ার্কশীটটি এক্টিভেট করা ভুলবেন না। 또한, আপনার প্রয়োজন অনুযায়ী লিস্ট লোকেশনের সেল রেফারেন্স পরিবর্তন করুন কোড রান করার আগে।
আরও পড়ুন: এক্সেলে ইউনিক ভ্যালুসহ ড্রপ ডাউন লিস্ট তৈরির ৪ পদ্ধতি
২. ঠিক একবার উপস্থিত ইউনিক ভ্যালু রাখতে ম্যাক্রো তৈরি
এবারের বاری, আমরা একটি Macro ডেভেলপ করব ঠিক একবার উপস্থিত ইউনিক ভ্যালুগুলো ড্রপ ডাউন লিস্টে রাখতে।
উদাহরণস্বরূপ, উপরের লিস্টের জন্য, Macro-র আউটপুট হবে France, England।
এই উদ্দেশ্যে VBA কোডটি হবে:
⧭ VBA কোড:
Sub Drop_Down_List_Unique_Values_Exactly_Once()
List_Location = "B3"
Data = Range(List_Location).Validation.Formula1
Data = Split(Data, ",")
Unique_Data = ""
Range(List_Location).Validation.Delete
Count = 0
For i = LBound(Data) To UBound(Data)
For j = LBound(Data) To UBound(Data)
If j <> i And Data(i) = Data(j) Then
Count = 1
Exit For
End If
Next j
If Count = 0 Then
If Unique_Data = "" Then
Unique_Data = Unique_Data + Data(i)
Else
Unique_Data = Unique_Data + "," + Data(i)
End If
End If
Count = 0
Next i
Range(List_Location).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Unique_Data
End Sub

⧭ আউটপুট:
কোডটি রান করুন। এটি এক্টিভ ওয়ার্কশীটের B3 সেলের ড্রপ-ডাউন লিস্ট থেকে ডুপ্লিকেট থাকা ভ্যালুগুলো রিমুভ করবে এবং শুধু ঠিক একবার উপস্থিত ভ্যালুগুলো রাখবে।

⧭ নোটস:
আবার মনে রাখবেন, কোড রান করার আগে ড্রপ-ডাউন লিস্ট থাকা ওয়ার্কশীটটি এক্টিভেট করতে হবে। 또한, আপনার প্রয়োজন অনুযায়ী লিস্ট লোকেশনের সেল রেফারেন্স পরিবর্তন করুন কোড রান করার আগে।
সম্পর্কিত কন্টেন্ট: এক্সেলে ড্রপ ডাউন লিস্ট থেকে একাধিক সিলেকশন করার ৩ উপায়
সদৃশ পড়াশোনা:
- সিলেকশন বেসড ডেটা এক্সট্র্যাক্ট করার জন্য ড্রপ ডাউন ফিল্টার তৈরি এক্সেলে
- কালারসহ এক্সেল ড্রপ ডাউন লিস্ট তৈরির ২ উপায়
- এক্সেল ড্রপ ডাউন লিস্ট কাজ করছে না (৮ ইস্যু ও সমাধান)
- এক্সেলে অটো আপডেট ড্রপ ডাউন লিস্ট (৩ উপায়)
- VBA দিয়ে এক্সেল ড্রপ ডাউন লিস্ট থেকে ভ্যালু সিলেক্ট (২ মেথড)
৩. ড্রপ ডাউন লিস্টে ইউনিক ভ্যালু রাখতে UserForm ডেভেলপ করা
শেষে, আমরা একটি UserForm ডেভেলপ করব ড্রপ-ডাউন লিস্ট থেকে ডুপ্লিকেট ভ্যালু রিমুভ করে শুধু ইউনিক ভ্যালু রাখতে VBA-র সাহায্যে।
⧪ ধাপ ১: UserForm খোলা
VBA এডিটরে Insert > UserForm অপশনে যান একটি নতুন UserForm খোলার জন্য। একটি নতুন UserForm নামক UserForm1 খুলবে।

⧪ ধাপ ২: UserForm-এ টুলস ড্র্যাগ করা
UserForm-এর পাশে আপনি Toolbox পাবেন। আপনার কার্সর Toolbox-এর ওপর নিলে এবং ৩টি Label এবং ২টি ListBox ( Label1 এবং Label3-এর নিচে) এবং ১টি TextBox ( Label2-এর নিচে) ড্র্যাগ করুন চিত্রে দেখানোভাবে।
শেষে, নিচের ডান কোণে একটি CommandButton ড্র্যাগ করুন।

⧪ ধাপ ৩: ListBox1-এর জন্য কোড লিখা
ListBox1-এ ডাবল ক্লিক করুন। একটি Private Subprocedure নামক ListBox1_Click খুলবে। সেখানে নিচের কোডটি লিখুন।
Private Sub ListBox1_Click()
For i = 0 To UserForm1.ListBox1.ListCount - 1
If UserForm1.ListBox1.Selected(i) = True Then
Worksheets(UserForm1.ListBox1.List(i)).Activate
Exit For
End If
Next i
End Sub

⧪ ধাপ ৪: TextBox1-এর জন্য কোড লিখা
তারপর TextBox1-এ ডাবল ক্লিক করুন। আরেকটি Private Subprocedure নামক TextBox1_Change খুলবে। সেখানে নিচের কোডটি লিখুন।
Private Sub TextBox1_Change()
On Error GoTo TB1:
ActiveSheet.Range(UserForm1.TextBox1.Text).Select
Exit Sub
TB1:
x = 21
End Sub

⧪ ধাপ ৬: CommandButton1-এর জন্য কোড লিখা
শেষে, CommandButton1-এ ডাবল ক্লিক করুন। একটি Private Subprocedure নামক CommandButton1_Click খুলবে। সেখানে নিচের কোডটি লিখুন।
Private Sub CommandButton1_Click()
List_Location = UserForm1.TextBox1.Text
Data = Range(List_Location).Validation.Formula1
Data = Split(Data, ",")
Range(List_Location).Validation.Delete
Unique_Data = ""
Count = 0
If UserForm1.ListBox2.Selected(0) = True Then
For i = LBound(Data) To UBound(Data)
Unique_Values = Split(Unique_Data, ",")
For j = LBound(Unique_Values) To UBound(Unique_Values)
If Data(i) = Unique_Values(j) Then
Count = 1
Exit For
End If
Next j
If Count = 0 Then
If Unique_Data = "" Then
Unique_Data = Unique_Data + Data(i)
Else
Unique_Data = Unique_Data + "," + Data(i)
End If
End If
Count = 0
Next i
ElseIf UserForm1.ListBox2.Selected(1) = True Then
For i = LBound(Data) To UBound(Data)
For j = LBound(Data) To UBound(Data)
If j <> i And Data(i) = Data(j) Then
Count = 1
Exit For
End If
Next j
If Count = 0 Then
If Unique_Data = "" Then
Unique_Data = Unique_Data + Data(i)
Else
Unique_Data = Unique_Data + "," + Data(i)
End If
End If
Count = 0
Next i
Else
MsgBox "Select Either At Least Once or Exactly Once.", vbExclamation
End If
Range(List_Location).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:=Unique_Data
End Sub

⧪ ধাপ ৭: UserForm রান করার জন্য কোড লিখা
VBA toolbar- থেকে একটি নতুন Module ইনসার্ট করুন এবং সেখানে নিচের কোডটি ইনসার্ট করুন।
Sub Run_UserForm()
UserForm1.Caption = "Keep Unique Values in Drop-Down List"
UserForm1.Label1.Caption = "Worksheet: "
UserForm1.Label2.Caption = "List Location: "
UserForm1.Label3.Caption = "Keep Unique Values that Appear: "
UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle
UserForm1.ListBox1.ListStyle = fmListStyleOption
For i = 1 To Sheets.Count
UserForm1.ListBox1.AddItem Sheets(i).Name
Next i
For i = 0 To UserForm1.ListBox1.ListCount - 1
If UserForm1.ListBox1.List(i) = ActiveSheet.Name Then
UserForm1.ListBox1.Selected(i) = True
Exit For
End If
Next i
UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle
UserForm1.ListBox2.ListStyle = fmListStyleOption
UserForm1.ListBox2.AddItem "At Least Once"
UserForm1.ListBox2.AddItem "Exactly Once"
UserForm1.CommandButton1.Caption = "OK"
Load UserForm1
UserForm1.Show
End Sub

⧪ ধাপ ৮: UserForm রান করা (শেষ আউটপুট)
আপনার UserForm এখন ব্যবহার করার জন্য প্রস্তুত। Run_UserForm নামক Macro রান করুন।
UserForm ওয়ার্কশীটে লোড হবে।

ড্রপ-ডাউন লিস্ট থাকা ওয়ার্কশীট সিলেক্ট করুন। এখানে এটা Sheet3।
তারপর ওয়ার্কশীটে লিস্ট লোকেশনের সেল রেফারেন্স লিখুন। এখানে এটা B3।
শেষে, At Least Once বা Exactly Once যেকোনো একটি সিলেক্ট করুন। এখানে আমি At Least Once সিলেক্ট করেছি।
তাহলে আমার UserForm এর রূপ হবে এমনঃ

তারপর OK চাপুন। আপনি আপনার বেছে নেওয়া ক্রাইটেরিয়ার অনুযায়ী ইনপুট লোকেশনের ড্রপ-ডাউন লিস্ট থেকে ডুপ্লিকেট ভ্যালু রিমুভ হওয়া পাবেন।

আরও পড়ুন: ফর্মুলা বেসড ড্রপ-ডাউন লিস্ট এক্সেলে তৈরির ৪ উপায়
মনে রাখবেন
- এই আর্টিকেলে, আমি শুধু ড্রপ-ডাউন লিস্ট থেকে ডুপ্লিকেট ভ্যালু রিমুভ করার ওপর ফোকাস করেছি। যদি আপনি ড্রপ-ডাউন লিস্ট তৈরির উপায়, বা ডুপ্লিকেট লিস্টে ভ্যালু সর্ট করার উপায় শিখতে চান, তবে আপনি এই আর্টিকেলটি পড়তে পারেন।
উপসংহার
তাহলে, এক্সেল VBA-র সাহায্যে ড্রপ-ডাউন লিস্ট থেকে ডুপ্লিকেট ভ্যালু রিমুভ করে শুধু ইউনিক ভ্যালু রাখার এগুলোই উপায়। আপনার কি কোথাও প্রশ্ন আছে? বিনামূল্যে জিজ্ঞাসা করুন। এবং আমাদের সাইট ExcelDemy-তে ভিজিট করবেন না ভুলবেন আরও পোস্ট ও আপডেটের জন্য।
সম্পর্কিত আর্টিকেলসমূহ
- সেল ভ্যালুর সাথে ড্রপ ডাউন লিস্ট লিংক করার ৫ উপায় এক্সেলে
- কন্ডিশনাল ড্রপ ডাউন লিস্ট এক্সেলে (তৈরি, সর্ট ও ব্যবহার)
- ডাইনামিক ডিপেনডেন্ট ড্রপ ডাউন লিস্ট এক্সেলে তৈরির উপায়
- IF স্টেটমেন্ট ব্যবহার করে এক্সেলে ড্রপ-ডাউন লিস্ট তৈরির উপায়
- VLOOKUP ড্রপ ডাউন লিস্টসহ এক্সেলে