اختر عناصر متعددة في قائمة Excel المنسدلة – دليل كامل
قوائم Excel المنسدلة هي أداة رائعة لضمان الاتساق في البيانات وسهولة إدخالها. ومع ذلك، فإنها تقتصر بشكل افتراضي على اختيار عنصر واحد فقط. لكن ماذا لو كنت بحاجة إلى اختيار عدة عناصر من نفس القائمة المنسدلة؟ ستوفر لك هذه الدليل الشامل طرقًا لتمكين الاختيارات المتعددة في قوائم Excel المنسدلة، وإدارة العناصر المكررة، وتعيين فواصل مخصصة، وتحديد نطاق هذه القوائم.
- السماح بالعناصر المكررة
- إزالة أي عناصر موجودة
- إعداد فاصل مخصص
- تحديد نطاق معين
- التنفيذ في ورقة عمل محمية
تمكين اختيارات متعددة في القائمة المنسدلة
يوفر هذا القسم طريقتين لمساعدتك على تمكين الاختيارات المتعددة في القائمة المنسدلة في Excel.
باستخدام كود VBA
للسماح باختيارات متعددة في قائمة منسدلة، يمكنك استخدام "Visual Basic for Applications" (VBA) في Excel. يمكن للبرنامج النصي تعديل سلوك القائمة المنسدلة لجعلها قائمة متعددة الخيارات. يرجى القيام بما يلي.
الخطوة 1: افتح محرر الورقة (Code)
- افتح ورقة العمل التي تحتوي على القائمة المنسدلة التي تريد تمكين الاختيار المتعدد لها.
- انقر بزر الماوس الأيمن على علامة الورقة وحدد "عرض الكود" من قائمة السياق.
الخطوة 2: استخدم كود VBA
الآن انسخ الكود التالي لـ VBA والصقه في نافذة الورقة (Code) المفتوحة.
كود VBA: تمكين اختيارات متعددة في قائمة Excel المنسدلة.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
النتيجة
عندما تعود إلى ورقة العمل، ستتيح لك القائمة المنسدلة اختيار خيارات متعددة، شاهد العرض التوضيحي أدناه:
الكود VBA أعلاه:
- يطبق على جميع قوائم التحقق من صحة البيانات المنسدلة في ورقة العمل الحالية، سواء الموجودة أو التي سيتم إنشاؤها في المستقبل.
- يمنعك من اختيار نفس العنصر أكثر من مرة في كل قائمة منسدلة.
- يستخدم الفاصلة كفاصل للعناصر المحددة. لاستخدام فواصل أخرى، يرجى مشاهدة هذا القسم لتغيير الفاصل.
باستخدام Kutools for Excel بنقرات قليلة
إذا لم تكن مرتاحًا لاستخدام VBA، فإن البديل الأسهل هو ميزة "Multi-select Drop-down List" من "Kutools for Excel". هذه الأداة سهلة الاستخدام تُبسّط تمكين الاختيارات المتعددة في القوائم المنسدلة، مما يسمح لك بتخصيص الفاصل وإدارة العناصر المكررة بسهولة لتلبية احتياجاتك المختلفة.
بعد تثبيت Kutools for Excel، انتقل إلى علامة التبويب "Kutools"، وحدد "Drop-down list" > "Multi-select Drop-down List". ثم تحتاج إلى تكوين الإعدادات كما يلي.
- حدد النطاق الذي يحتوي على القائمة المنسدلة التي تحتاج إلى اختيار عناصر متعددة منها.
- حدد الفاصل للعناصر المحددة في خلية القائمة المنسدلة.
- انقر فوق "موافق" لإكمال الإعدادات.
النتيجة
الآن، عندما تنقر على خلية تحتوي على قائمة منسدلة في النطاق المحدد، ستظهر مربع قائمة بجانبها. ما عليك سوى النقر على زر "+" بجانب العناصر لإضافتها إلى الخلية المنسدلة، والنقر على زر "-" لإزالة أي عناصر لا تريدها بعد الآن. شاهد العرض التوضيحي أدناه:
- حدد الخيار "Wrap Text After Inserting a Separator" إذا كنت تريد عرض العناصر المحددة عموديًا داخل الخلية. إذا كنت تفضل قائمة أفقية، اترك هذا الخيار غير محدد.
- حدد الخيار "Enable search" إذا كنت تريد إضافة شريط بحث إلى قائمة التحقق المنسدلة.
- لتطبيق هذه الميزة، يرجى تنزيل وتثبيت Kutools for Excel أولاً.
المزيد من العمليات للقائمة المنسدلة متعددة الخيارات
يجمع هذا القسم السيناريوهات المختلفة التي قد تكون مطلوبة عند تمكين اختيارات متعددة في قائمة التحقق من صحة البيانات المنسدلة.
السماح بالعناصر المكررة في القائمة المنسدلة
يمكن أن تكون العناصر المكررة مشكلة عند السماح باختيارات متعددة في قائمة منسدلة. الكود VBA أعلاه لا يسمح بالعناصر المكررة في القائمة المنسدلة. إذا كنت بحاجة إلى الاحتفاظ بالعناصر المكررة، جرب كود VBA في هذا القسم.
كود VBA: السماح بالمكررات في قائمة التحقق من صحة البيانات المنسدلة
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
Target.Value = xValue1 & delimiter & xValue2
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
النتيجة
الآن يمكنك تحديد عناصر متعددة من القوائم المنسدلة في ورقة العمل الحالية. للتكرار عنصر في خلية القائمة المنسدلة، استمر في اختيار هذا العنصر من القائمة. شاهد لقطة الشاشة:
إزالة أي عناصر موجودة من القائمة المنسدلة
بعد تحديد عناصر متعددة من قائمة منسدلة، قد تحتاج أحيانًا إلى إزالة عنصر موجود من خلية القائمة المنسدلة. يوفر هذا القسم كود VBA آخر لمساعدتك على إنجاز هذه المهمة.
كود VBA: إزالة أي عناصر موجودة من خلية القائمة المنسدلة
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRngDV As Range
Dim TargetRange As Range
Dim oldValue As String
Dim newValue As String
Dim delimiter As String
Dim allValues As Variant
Dim valueExists As Boolean
Dim i As Long
Dim cleanedValue As String
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Set your desired delimiter here
If Target.CountLarge > 1 Then Exit Sub
' Check if the change is within the specific range
If Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
If xRngDV Is Nothing Or Target.Value = "" Then
' Skip if there's no data validation or if the cell is cleared
Application.EnableEvents = True
Exit Sub
End If
On Error GoTo 0
If Not Intersect(Target, xRngDV) Is Nothing Then
Application.EnableEvents = False
newValue = Target.Value
Application.Undo
oldValue = Target.Value
Target.Value = newValue
' Split the old value by delimiter and check if new value already exists
allValues = Split(oldValue, delimiter)
valueExists = False
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) = newValue Then
valueExists = True
Exit For
End If
Next i
' Add or remove value based on its existence
If valueExists Then
' Remove the value
cleanedValue = ""
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) <> newValue Then
If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
cleanedValue = cleanedValue & Trim(allValues(i))
End If
Next i
Target.Value = cleanedValue
Else
' Add the value
If oldValue <> "" Then
Target.Value = oldValue & delimiter & newValue
Else
Target.Value = newValue
End If
End If
Application.EnableEvents = True
End If
End Sub
النتيجة
يتيح لك هذا الكود VBA تحديد عناصر متعددة من قائمة منسدلة وإزالة أي عنصر قد اخترته بسهولة. بعد تحديد عناصر متعددة، إذا كنت تريد إزالة عنصر معين، ما عليك سوى اختياره مرة أخرى من القائمة.
إعداد فاصل مخصص
يتم تعيين الفاصل كفاصلة في أكواد VBA أعلاه. يمكنك تعديل هذا المتغير لأي حرف تفضله لاستخدامه كفاصل لاختيارات القائمة المنسدلة. إليك الطريقة:
كما ترى أن أكواد VBA أعلاه تحتوي جميعها على السطر التالي:
delimiter = ", "
ما عليك سوى تغيير الفاصلة إلى أي فاصل تحتاج إليه. على سبيل المثال، إذا كنت تريد فصل العناصر بفاصلة منقوطة، غيّر السطر إلى:
delimiter = "; "
delimiter = vbNewLine
تحديد نطاق معين
تطبق أكواد VBA أعلاه على جميع القوائم المنسدلة في ورقة العمل الحالية. إذا كنت تريد أن تطبق أكواد VBA فقط على نطاق معين من القوائم المنسدلة، يمكنك تحديد النطاق في كود VBA أعلاه كما يلي.
كما ترى أن أكواد VBA أعلاه تحتوي جميعها على السطر التالي:
Set TargetRange = Me.UsedRange
ما عليك سوى تغيير السطر إلى:
Set TargetRange = Me.Range("C2:C10")
التنفيذ في ورقة عمل محمية
تخيل أنك قد حميت ورقة عمل بكلمة المرور "123" وقمت بتعيين خلايا القائمة المنسدلة على "غير مقفلة" قبل تفعيل الحماية، مما يضمن أن تظل وظيفة الاختيار المتعدد نشطة بعد الحماية. ومع ذلك، لا يمكن لأكواد VBA المذكورة أعلاه العمل في هذه الحالة، ويصف هذا القسم برنامج VBA آخر مصمم خصيصًا للتعامل مع وظيفة الاختيار المتعدد في ورقة عمل محمية.
كود VBA: تمكين اختيار متعدد في القائمة المنسدلة بدون مكررات
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Dim isProtected As Boolean
Dim pswd As Variant
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
' Check if sheet is protected
isProtected = Me.ProtectContents
If isProtected Then
' If protected, temporarily unprotect. Adjust or remove the password as needed.
pswd = "yourPassword" ' Change or remove this as needed
Me.Unprotect Password:=pswd
End If
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then
If isProtected Then Me.Protect Password:=pswd
Exit Sub
End If
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
' Re-protect the sheet if it was protected
If isProtected Then
Me.Protect Password:=pswd
End If
End Sub
من خلال تمكين اختيارات متعددة في قوائم Excel المنسدلة، يمكنك تعزيز وظائف ومرونة أوراق العمل بشكل كبير. سواء كنت مرتاحًا لبرمجة VBA أو تفضل حلًا أكثر بساطة مثل Kutools، لديك الآن القدرة على تحويل قوائمك المنسدلة القياسية إلى أدوات ديناميكية متعددة الخيارات. مع هذه المهارات، أصبحت الآن مجهزًا لإنشاء مستندات Excel أكثر ديناميكية وسهولة في الاستخدام. بالنسبة لأولئك الذين يتطلعون إلى الغوص بعمق في قدرات Excel، يضم موقعنا مجموعة كبيرة من الدروس. اكتشف المزيد من نصائح وحيل Excel هنا.
مقالات ذات صلة
الإكمال التلقائي عند الكتابة في قائمة منسدلة في Excel
إذا كان لديك قائمة منسدلة للتحقق من صحة البيانات تحتوي على قيم كبيرة، ستحتاج إلى التمرير لأسفل في القائمة للعثور على المناسبة، أو كتابة الكلمة بأكملها مباشرة في مربع القائمة. إذا كانت هناك طريقة تسمح بالإكمال التلقائي عند كتابة الحرف الأول في القائمة المنسدلة، سيصبح كل شيء أسهل. توفر هذه المقالة الطريقة لحل المشكلة.
إنشاء قائمة منسدلة من مصنف آخر في Excel
من السهل جدًا إنشاء قائمة منسدلة للتحقق من صحة البيانات بين أوراق العمل داخل مصنف. ولكن إذا كانت بيانات القائمة التي تحتاجها للتحقق من صحة البيانات توجد في مصنف آخر، ماذا ستفعل؟ في هذا البرنامج التعليمي، ستتعلم كيفية إنشاء قائمة منسدلة من مصنف آخر في Excel بالتفصيل.
إنشاء قائمة منسدلة قابلة للبحث في Excel
بالنسبة لقائمة منسدلة تحتوي على عدد كبير من القيم، قد لا يكون من السهل العثور على القيمة المناسبة. سابقًا قدمنا طريقة لإكمال القائمة المنسدلة تلقائيًا عند إدخال الحرف الأول في مربع القائمة المنسدلة. بالإضافة إلى وظيفة الإكمال التلقائي، يمكنك أيضًا جعل القائمة المنسدلة قابلة للبحث لتعزيز كفاءة العمل في العثور على القيم المناسبة في القائمة المنسدلة. لجعل القائمة المنسدلة قابلة للبحث، جرب الطريقة في هذا البرنامج التعليمي.
تعبئة الخلايا الأخرى تلقائيًا عند تحديد القيم في قائمة منسدلة في Excel
لنفترض أنك أنشأت قائمة منسدلة بناءً على القيم في نطاق الخلايا B8:B14. عند تحديد أي قيمة في القائمة المنسدلة، تريد أن يتم تعبئة القيم المقابلة في نطاق الخلايا C8:C14 تلقائيًا في خلية محددة. لحل المشكلة، ستساعدك الطرق في هذا البرنامج التعليمي.
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير
- تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
- افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
- يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!