KutoolsforOffice — حل واحد، خمس أدوات قوية.تحقيق المزيد بجهد أقل.

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

المؤلفSiluviaتاريخ التعديل

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

لقطة شاشة للعرض التوضيحي المتحرك الذي يوضح تحديدات متعددة في قائمة منسدلة في Excel.

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

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

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

استخدام كود VBA

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

الخطوة 1: فتح محرر ورقة الشيفرة (Code)
  1. افتح ورقة العمل التي تحتوي على القائمة المنسدلة التي ترغب في تمكين الاختيار المتعدد لها.
  2. انقر بزر الماوس الأيمن على لسان تبويب الورقة، ثم اختر «عرض الكود» من القائمة السياقية.
    لقطة شاشة لخيار عرض الكود في القائمة السياقية لعلامة ورقة في Excel
الخطوة 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 المُلصَق في محرر VBA الخاص بـ Excel

النتيجة

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

لقطة شاشة للعرض التوضيحي المتحرك الذي يوضح تحديدات متعددة في قائمة منسدلة في Excel

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

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

إذا لم تكن مرتاحًا لاستخدام VBA، فثمة بديلٌ أسهل: ميزة «إنشاء قائمة منسدلة مع تحديدات متعددة» من «Kutools لـ Excel». تُبسّط هذه الأداة سهلة الاستخدام عملية تمكين التحديد المتعدد في القوائم المنسدلة، وتتيح لك تخصيص الفاصل وإدارة القيم المكررة بسلاسة لتلبية مختلف احتياجاتك.

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

بعد تثبيت Kutools لـ Excel، انتقل إلى علامة التبويب «Kutools»، ثم اختر «قائمة منسدلة» > «إنشاء قائمة منسدلة مع تحديدات متعددة». بعد ذلك، قم بإجراء الإعدادات التالية.

  1. حدّد النطاق الذي يحتوي على القائمة المنسدلة التي تريد اختيار عناصر متعددة منها.
  2. حدّد الفاصل المستخدم بين العناصر في الخلية التي تحتوي على قائمة منسدلة.
  3. انقر «موافق» لإتمام الإعدادات.
    لقطة شاشة لشاشة تهيئة قائمة Kutools المنسدلة ذات التحديد المتعدد مع إعدادات نطاق الخيارات وفاصل العناصر
النتيجة

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

لقطة شاشة توضح عرضًا توضيحيًّا لإدارة التحديدات المتعددة في قائمة منسدلة في Excel باستخدام Kutools

ملاحظات:
  • فعّل الخيار «إدراج فاصل ثم الانتقال للسطر التالي» لعرض العناصر المحددة بشكل عمودي داخل الخلية، أو اتركه غير مفعّل إذا كنت تفضل عرضها أفقيًا.
  • فعّل خيار «تمكين وظيفة البحث» لإضافة شريط بحث إلى القائمة المنسدلة.
  • لتطبيق هذه الميزة، يُرجىتنزيل وتثبيت Kutools لـ 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
النتيجة

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

لقطة شاشة للعرض التوضيحي المتحرك الذي يوضح التحديدات المكررة في قائمة منسدلة في Excel


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

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

لقطة شاشة للعرض التوضيحي المتحرك الذي يوضح كيفية إزالة العناصر الموجودة من قائمة منسدلة في 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 هنا.

أفضل أدوات إنتاجية Office

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

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


Office Tab يجلب واجهة ذات علامات تبويب إلى Office، ويجعل عملك أسهل بكثير

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

جميع إضافات Kutools في مثبّت واحد

Kutools for Office تجمع حزمة الإضافات بين ملحقات Excel وWord وOutlook وPowerPoint، بالإضافة إلى Office Tab Pro، مما يجعلها الخيار المثالي للفِرق التي تعمل عبر تطبيقات Office.

ExcelWordOutlookTabsPowerPoint
  • حزمة شاملة واحدة— إضافات Excel وWord وOutlook وPowerPoint + Office Tab Pro
  • مثبّت واحد، ترخيص واحد— الإعداد خلال دقائق (جاهز لـ MSI)
  • تعمل معًا بشكل أفضل— إنتاجية ميسّرة عبر تطبيقات Office
  • تجربة مجانية لمدة 30 يومًا بكامل الميزات— بدون تسجيل، ولا بطاقة ائتمان
  • أفضل قيمة— وفّر مقارنةً بشراء الإضافات بشكل منفصل