حدد عناصر متعددة في قائمة Excel المنسدلة – الدليل الكامل
تعد قوائم Excel المنسدلة أداة رائعة لضمان اتساق البيانات وسهولة الإدخال. ومع ذلك، بشكل افتراضي، فإنها تقيدك بتحديد عنصر واحد فقط. ولكن ماذا لو كنت بحاجة إلى تحديد عناصر متعددة من نفس القائمة المنسدلة؟ سوف يستكشف هذا الدليل الشامل طرقًا لتمكين التحديدات المتعددة في قوائم Excel المنسدلة، وإدارة التكرارات، وتعيين فواصل مخصصة، وتحديد نطاق هذه القوائم.
- السماح بالعناصر المكررة
- إزالة أي عناصر موجودة
- إعداد فاصل مخصص
- تحديد نطاق محدد
- التنفيذ في ورقة عمل محمية
تمكين التحديدات المتعددة في القائمة المنسدلة
يوفر هذا القسم طريقتين لمساعدتك في تمكين التحديدات المتعددة في القائمة المنسدلة في Excel.
باستخدام كود VBA
للسماح بتحديدات متعددة في القائمة المنسدلة، يمكنك استخدام البصرية الأساسية للتطبيقات (VBA) في إكسل. يمكن للبرنامج النصي تعديل سلوك القائمة المنسدلة لجعلها قائمة متعددة الخيارات. يرجى القيام بما يلي.
الخطوة 1: افتح محرر الورقة (الكود).
- افتح ورقة العمل التي تحتوي على القائمة المنسدلة التي تريد تمكين التحديد المتعدد لها.
- انقر بزر الماوس الأيمن فوق علامة تبويب الورقة وحدد عرض الرمز من قائمة السياق.
الخطوة 2: استخدم كود VBA
الآن انسخ كود VBA التالي والصقه في نافذة الورقة الافتتاحية (الكود).
رمز 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، فالبديل الأسهل هو كوتولس ل إكسيل's قائمة منسدلة متعددة التحديد ميزة. تعمل هذه الأداة سهلة الاستخدام على تبسيط تمكين التحديدات المتعددة في القوائم المنسدلة، وتقديم نطاقات متنوعة مثل نطاق معين، أو ورقة العمل الحالية، أو المصنف بأكمله، أو جميع المصنفات المفتوحة. بالإضافة إلى ذلك، فهو يسمح لك بتخصيص الفاصل وإدارة التكرارات دون عناء لتلبية احتياجاتك المختلفة.
بعد تثبيت كوتولس لبرنامج إكسيلاذهب الى كوتولس علامة التبويب، حدد قائمة منسدلة > قائمة منسدلة متعددة التحديد. ثم تحتاج إلى التكوين على النحو التالي.
- حدد المكان الذي تريد تطبيق هذه الميزة فيه حدد النطاق والقسم الخاص به.
- تحديد الفاصل للعناصر المحددة في الخلية.
- حدد اتجاه النص.
- انقر OK.
نتيجة
الآن، عند النقر فوق خلية تحتوي على قائمة منسدلة، سيظهر مربع قائمة بجوارها. ما عليك سوى النقر على الزر "+" بجوار العناصر لإضافتها إلى الخلية المنسدلة، ثم النقر على الزر "-" لإزالة أي عناصر لا تريدها. انظر العرض التوضيحي أدناه:
المزيد من العمليات للقائمة المنسدلة متعددة التحديد
يجمع هذا القسم السيناريوهات المختلفة التي قد تكون مطلوبة عند تمكين التحديدات المتعددة في القائمة المنسدلة التحقق من صحة البيانات.
السماح بالعناصر المكررة في القائمة المنسدلة
يمكن أن تشكل التكرارات مشكلة عند السماح بتحديدات متعددة في القائمة المنسدلة. لا يسمح رمز 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 for Excel، واختبر كفاءة لم يسبق لها مثيل. يقدم Kutools for Excel أكثر من 300 ميزة متقدمة لتعزيز الإنتاجية وتوفير الوقت. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
يجلب Office Tab الواجهة المبوبة إلى Office ، ويجعل عملك أسهل بكثير
- تمكين التحرير والقراءة المبوبة في Word و Excel و PowerPointوالناشر والوصول و Visio والمشروع.
- فتح وإنشاء مستندات متعددة في علامات تبويب جديدة من نفس النافذة ، بدلاً من النوافذ الجديدة.
- يزيد من إنتاجيتك بنسبة 50٪ ، ويقلل مئات النقرات بالماوس كل يوم!