Skip to main content

اختر عناصر متعددة في قائمة Excel المنسدلة – دليل كامل

Author: Siluvia Last Modified: 2025-05-30

قوائم Excel المنسدلة هي أداة رائعة لضمان الاتساق في البيانات وسهولة إدخالها. ومع ذلك، فإنها تقتصر بشكل افتراضي على اختيار عنصر واحد فقط. لكن ماذا لو كنت بحاجة إلى اختيار عدة عناصر من نفس القائمة المنسدلة؟ ستوفر لك هذه الدليل الشامل طرقًا لتمكين الاختيارات المتعددة في قوائم Excel المنسدلة، وإدارة العناصر المكررة، وتعيين فواصل مخصصة، وتحديد نطاق هذه القوائم.

A screenshot of the animated demo showing multiple selections in an Excel drop-down list.

نصيحة: قبل تطبيق الطرق التالية، تأكد من أنك قد أنشأت قوائم منسدلة في أوراق العمل الخاصة بك مسبقًا. إذا كنت تريد معرفة كيفية إنشاء قوائم منسدلة باستخدام التحقق من صحة البيانات، اتبع التعليمات في هذه المقالة: How to create data validation drop-down lists in Excel.

تمكين اختيارات متعددة في القائمة المنسدلة

يوفر هذا القسم طريقتين لمساعدتك على تمكين الاختيارات المتعددة في القائمة المنسدلة في Excel.

باستخدام كود VBA

للسماح باختيارات متعددة في قائمة منسدلة، يمكنك استخدام "Visual Basic for Applications" (VBA) في Excel. يمكن للبرنامج النصي تعديل سلوك القائمة المنسدلة لجعلها قائمة متعددة الخيارات. يرجى القيام بما يلي.

الخطوة 1: افتح محرر الورقة (Code)
  1. افتح ورقة العمل التي تحتوي على القائمة المنسدلة التي تريد تمكين الاختيار المتعدد لها.
  2. انقر بزر الماوس الأيمن على علامة الورقة وحدد "عرض الكود" من قائمة السياق.
    A screenshot of the View Code option in the context menu of a sheet tab in Excel
الخطوة 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

A screenshot of the VBA code pasted into the Excel VBA editor

النتيجة

عندما تعود إلى ورقة العمل، ستتيح لك القائمة المنسدلة اختيار خيارات متعددة، شاهد العرض التوضيحي أدناه:

A screenshot of the animated demo showing multiple selections in an Excel drop-down list

ملاحظات:
الكود VBA أعلاه:
  • يطبق على جميع قوائم التحقق من صحة البيانات المنسدلة في ورقة العمل الحالية، سواء الموجودة أو التي سيتم إنشاؤها في المستقبل.
  • يمنعك من اختيار نفس العنصر أكثر من مرة في كل قائمة منسدلة.
  • يستخدم الفاصلة كفاصل للعناصر المحددة. لاستخدام فواصل أخرى، يرجى مشاهدة هذا القسم لتغيير الفاصل.

باستخدام Kutools for Excel بنقرات قليلة

إذا لم تكن مرتاحًا لاستخدام VBA، فإن البديل الأسهل هو ميزة "Multi-select Drop-down List" من "Kutools for Excel". هذه الأداة سهلة الاستخدام تُبسّط تمكين الاختيارات المتعددة في القوائم المنسدلة، مما يسمح لك بتخصيص الفاصل وإدارة العناصر المكررة بسهولة لتلبية احتياجاتك المختلفة.

Kutools لـ Excel يقدم أكثر من 300 ميزة متقدمة لتبسيط المهام المعقدة، مما يعزز الإبداع والكفاءة. بالتكامل مع قدرات الذكاء الاصطناعي، يقوم Kutools بأتمتة المهام بدقة، مما يجعل إدارة البيانات أمرًا سهلاً للغاية. معلومات تفصيلية عن Kutools لـ Excel... نسخة تجريبية مجانية...

بعد تثبيت Kutools for Excel، انتقل إلى علامة التبويب "Kutools"، وحدد "Drop-down list" > "Multi-select Drop-down List". ثم تحتاج إلى تكوين الإعدادات كما يلي.

  1. حدد النطاق الذي يحتوي على القائمة المنسدلة التي تحتاج إلى اختيار عناصر متعددة منها.
  2. حدد الفاصل للعناصر المحددة في خلية القائمة المنسدلة.
  3. انقر فوق "موافق" لإكمال الإعدادات.
النتيجة

الآن، عندما تنقر على خلية تحتوي على قائمة منسدلة في النطاق المحدد، ستظهر مربع قائمة بجانبها. ما عليك سوى النقر على زر "+" بجانب العناصر لإضافتها إلى الخلية المنسدلة، والنقر على زر "-" لإزالة أي عناصر لا تريدها بعد الآن. شاهد العرض التوضيحي أدناه:

A screenshot showing a demo of managing multiple selections in an Excel drop-down list using Kutools

ملاحظات:
  • حدد الخيار "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
النتيجة

الآن يمكنك تحديد عناصر متعددة من القوائم المنسدلة في ورقة العمل الحالية. للتكرار عنصر في خلية القائمة المنسدلة، استمر في اختيار هذا العنصر من القائمة. شاهد لقطة الشاشة:

A screenshot of the animated demo showing duplicate selections in an Excel drop-down list


إزالة أي عناصر موجودة من القائمة المنسدلة

بعد تحديد عناصر متعددة من قائمة منسدلة، قد تحتاج أحيانًا إلى إزالة عنصر موجود من خلية القائمة المنسدلة. يوفر هذا القسم كود 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 تحديد عناصر متعددة من قائمة منسدلة وإزالة أي عنصر قد اخترته بسهولة. بعد تحديد عناصر متعددة، إذا كنت تريد إزالة عنصر معين، ما عليك سوى اختياره مرة أخرى من القائمة.

A screenshot of the animated demo showing how to remove existing items from a drop-down list in Excel


إعداد فاصل مخصص

يتم تعيين الفاصل كفاصلة في أكواد VBA أعلاه. يمكنك تعديل هذا المتغير لأي حرف تفضله لاستخدامه كفاصل لاختيارات القائمة المنسدلة. إليك الطريقة:

كما ترى أن أكواد VBA أعلاه تحتوي جميعها على السطر التالي:

delimiter = ", "

ما عليك سوى تغيير الفاصلة إلى أي فاصل تحتاج إليه. على سبيل المثال، إذا كنت تريد فصل العناصر بفاصلة منقوطة، غيّر السطر إلى:

delimiter = "; "
ملاحظة: لتغيير الفاصل إلى حرف سطر جديد في أكواد VBA هذه، غيّر هذا السطر إلى:
delimiter = vbNewLine

تحديد نطاق معين

تطبق أكواد VBA أعلاه على جميع القوائم المنسدلة في ورقة العمل الحالية. إذا كنت تريد أن تطبق أكواد VBA فقط على نطاق معين من القوائم المنسدلة، يمكنك تحديد النطاق في كود VBA أعلاه كما يلي.

كما ترى أن أكواد VBA أعلاه تحتوي جميعها على السطر التالي:

Set TargetRange = Me.UsedRange

ما عليك سوى تغيير السطر إلى:

Set TargetRange = Me.Range("C2:C10")
ملاحظة: هنا 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
ملاحظة: في الكود، تأكد من استبدال “yourPassword” في السطر pswd = "yourPassword" بكلمة المرور الفعلية التي تستخدمها لحماية ورقة العمل. على سبيل المثال، إذا كانت كلمة المرور الخاصة بك هي "abc123"، فيجب أن يكون السطر pswd = "abc123".

من خلال تمكين اختيارات متعددة في قوائم Excel المنسدلة، يمكنك تعزيز وظائف ومرونة أوراق العمل بشكل كبير. سواء كنت مرتاحًا لبرمجة VBA أو تفضل حلًا أكثر بساطة مثل Kutools، لديك الآن القدرة على تحويل قوائمك المنسدلة القياسية إلى أدوات ديناميكية متعددة الخيارات. مع هذه المهارات، أصبحت الآن مجهزًا لإنشاء مستندات Excel أكثر ديناميكية وسهولة في الاستخدام. بالنسبة لأولئك الذين يتطلعون إلى الغوص بعمق في قدرات Excel، يضم موقعنا مجموعة كبيرة من الدروس. اكتشف المزيد من نصائح وحيل Excel هنا.

أفضل أدوات الإنتاجية لمكتب العمل

🤖 Kutools AI Aide: أحدث ثورة في تحليل البيانات من خلال: التنفيذ الذكي |توليد الشيفرة |إنشاء الصيغ المخصصة |تحليل البيانات وتوليد الرسوم البيانية |استدعاء الوظائف المحسنة
الميزات الشائعة: البحث، تمييز أو وضع علامة على المكررات | حذف الصفوف الفارغة | دمج الأعمدة أو العنوان دون فقدان البيانات | تقريب ...
بحث متقدم: بحث V متعدد المعايير | بحث V متعدد القيم | بحث في عدة ورقات | مطابقة غامضة ....
قائمة منسدلة متقدمة: إنشاء قائمة منسدلة بسرعة | قائمة منسدلة تابعة | قائمة منسدلة متعددة الاختيار ....
إدارة الأعمدة: إضافة عدد محدد من الأعمدة | نقل الأعمدة | تبديل حالة إظهار الأعمدة المخفية | مقارنة النطاق والأعمدة ...
ميزات مميزة: التركيز على الشبكة | عرض التصميم | شريط الصيغ المحسن | أدوات المصنف & أدوات الورقة العمل | مكتبة النص التلقائي (Auto Text) | منتقي التاريخ | دمج البيانات | تشفير/فك تشفير الخلايا | إرسال البريد الإلكتروني حسب القائمة | مرشح متقدم | تصفية خاصة (تصفية الخلايا التي تحتوي على خط عريض/مائل/يتوسطه خط...) ...
أفضل15 مجموعة أدوات:12 أداة نصية (إضافة نص، حذف الأحرف المحددة، ...) | أكثر من50 نوع من الرسوم البيانية (مخطط جانت، ...) | أكثر من40 صيغة عملية (حساب العمر بناءً على تاريخ الميلاد، ...) |19 أداة إدراج (إدراج رمز الاستجابة السريعة، إدراج صورة من المسار، ...) |12 أداة تحويل (تحويل إلى كلمات، تحويل العملة، ...) |7 أدوات دمج وتقسيم (دمج متقدم للصفوف، تقسيم الخلايا، ...) | ... والمزيد

عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...


Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير

  • تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
  • افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
  • يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!