استخدم أسماء النطاق الديناميكي في Excel للقوائم المنسدلة المرنة

غالبًا ما تتضمن جداول بيانات Excel(Excel) قوائم منسدلة للخلايا لتبسيط و / أو توحيد إدخال البيانات. يتم إنشاء هذه القوائم المنسدلة باستخدام ميزة التحقق من صحة البيانات لتحديد قائمة الإدخالات المسموح بها.

لإعداد قائمة منسدلة بسيطة ، حدد الخلية حيث سيتم إدخال البيانات ، ثم انقر فوق التحقق من صحة البيانات(Data Validation) (في علامة التبويب البيانات ) ، وحدد التحقق من (Data)صحة البيانات(Data Validation) ، واختر قائمة(List) (ضمن السماح(Allow) :) ، ثم أدخل عناصر القائمة (مفصولة بفواصل ) في المصدر(Source) : الحقل (انظر الشكل 1).

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

خيار آخر هو وضع القائمة في نطاق مسمى داخل جدول البيانات(named range within the spreadsheet) ، ثم تحديد اسم النطاق هذا (مُسبقًا بعلامة يساوي) في المصدر(Source) : حقل التحقق من صحة البيانات (كما هو موضح في الشكل 2(Figure 2) ).

تعمل هذه الطريقة الثانية على تسهيل تحرير الاختيارات في القائمة ، ولكن إضافة العناصر أو إزالتها قد تكون مشكلة. نظرًا لأن النطاق المسمى ( FruitChoices ، في مثالنا) يشير إلى نطاق ثابت من الخلايا ($ H $ 3: $ H $ 10 كما هو موضح) ، إذا تمت إضافة المزيد من الخيارات إلى الخلايا H11 أو أقل ، فلن تظهر في القائمة المنسدلة (نظرًا لأن هذه الخلايا ليست جزءًا من نطاق خيارات FruitChoices(FruitChoices) ).

وبالمثل ، على سبيل المثال ، إذا تم مسح إدخالات Pears و Strawberries ، فلن تظهر بعد ذلك في القائمة المنسدلة ، ولكن بدلاً من ذلك ستتضمن القائمة المنسدلة خيارين "فارغين" نظرًا لأن القائمة المنسدلة لا تزال تشير إلى نطاق FruitChoices بأكمله ، بما في ذلك الخلايا الفارغة H9 و H10 .

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

حل هذه المشكلة هو استخدام اسم نطاق ديناميكي(dynamic) كمصدر لخيارات القائمة المنسدلة. اسم النطاق الديناميكي هو الاسم الذي يتمدد (أو يتعاقد) تلقائيًا ليطابق حجم كتلة البيانات تمامًا عند إضافة الإدخالات أو إزالتها. للقيام بذلك ، يمكنك استخدام صيغة(formula) ، بدلاً من نطاق ثابت لعناوين الخلايا ، لتحديد النطاق المسمى.

كيفية إعداد النطاق الديناميكي(Dynamic Range) في Excel

يشير اسم النطاق العادي (الثابت) إلى نطاق محدد من الخلايا ($ H $ 3: $ H $ 10 في مثالنا ، انظر أدناه):

ولكن يتم تحديد النطاق الديناميكي باستخدام صيغة (انظر أدناه ، مأخوذة من جدول بيانات منفصل يستخدم أسماء نطاقات ديناميكية):

قبل أن نبدأ ، تأكد من تنزيل ملف مثال Excel الخاص بنا  (تم تعطيل وحدات الماكرو).

دعونا نفحص هذه الصيغة بالتفصيل. توجد اختيارات الفواكه في كتلة من الخلايا أسفل العنوان مباشرةً ( الفاكهة(FRUITS) ). يتم أيضًا تعيين اسم لهذا العنوان: FruitsHeading :

الصيغة الكاملة المستخدمة لتحديد النطاق الديناميكي لاختيارات الفواكه هي:(Fruits)

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

FruitsHeading يشير إلى العنوان الذي هو صف واحد أعلى الإدخال الأول في القائمة. الرقم 20 (يستخدم مرتين في الصيغة) هو الحجم الأقصى (عدد الصفوف) للقائمة (يمكن تعديل هذا حسب الرغبة).

لاحظ أنه في هذا المثال ، لا يوجد سوى 8 إدخالات في القائمة ، ولكن توجد أيضًا خلايا فارغة أدناه حيث يمكن إضافة إدخالات إضافية. يشير الرقم 20 إلى الكتلة بأكملها حيث يمكن إجراء الإدخالات ، وليس إلى العدد الفعلي للإدخالات.

الآن دعنا نقسم الصيغة إلى أجزاء (ترميز كل قطعة بالألوان) ، لفهم كيفية عملها:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

القطعة "الأعمق" هي OFFSET (FruitsHeading، 1،0،20،1) . يشير هذا إلى كتلة مكونة من 20 خلية (أسفل خلية FruitsHeading ) حيث يمكن إدخال الاختيارات. تقول وظيفة OFFSET(OFFSET) هذه بشكل أساسي: ابدأ من خلية FruitsHeading ، وانزل صفًا واحدًا وأكثر من 0 عمودًا ، ثم حدد منطقة يبلغ طولها 20 صفًا وعرضها عمود واحد. هذا يعطينا الكتلة المكونة من 20 صفًا حيث يتم إدخال خيارات الفواكه .(Fruits)

الجزء التالي من الصيغة هو دالة ISBLANK :

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(the above),0,0),0)-1,20),1)

هنا ، تم استبدال وظيفة OFFSET (الموضحة أعلاه) بـ "ما سبق" (لتسهيل قراءة الأشياء). لكن وظيفة ISBLANK تعمل في نطاق 20 صفًا من الخلايا التي تحددها وظيفة OFFSET .

يقوم ISBLANK(ISBLANK) بعد ذلك بإنشاء مجموعة من 20 قيمة TRUE و FALSE ، للإشارة إلى ما إذا كانت كل خلية من الخلايا الفردية في النطاق المكون من 20 صفًا المشار إليه بواسطة الدالة OFFSET فارغة (فارغة) أم لا. في هذا المثال ، ستكون القيم الثمانية الأولى في المجموعة FALSE لأن أول 8 خلايا ليست فارغة وستكون القيم الـ 12 الأخيرة صحيحة(TRUE) .

القطعة التالية من الصيغة هي دالة INDEX :

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(the above,0,0),0)-1,20),1)

مرة أخرى ، يشير "ما سبق" إلى وظائف ISBLANK و OFFSET الموضحة أعلاه. ترجع الدالة INDEX صفيفًا يحتوي على 20 قيمة TRUE / FALSE تم إنشاؤها بواسطة دالة ISBLANK .

يتم استخدام INDEX(INDEX) عادة لاختيار قيمة معينة (أو نطاق من القيم) من كتلة من البيانات ، من خلال تحديد صف وعمود معين (داخل تلك الكتلة). لكن تعيين مدخلات الصف والعمود على صفر (كما هو الحال هنا) يتسبب في إرجاع INDEX مصفوفة تحتوي على كتلة البيانات بأكملها.

الجزء التالي من الصيغة هو دالة MATCH :

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,the above,0)-1,20),1)

تُرجع الدالة MATCH موضع أول قيمة (MATCH)TRUE ، ضمن الصفيف الذي تُرجعه الدالة INDEX . نظرًا لأن الإدخالات الثمانية الأولى في القائمة ليست فارغة ، فإن القيم الثمانية الأولى في المصفوفة ستكون FALSE ، وستكون القيمة التاسعة TRUE (نظرًا لأن الصف التاسع في النطاق فارغ).

لذا ستُرجع الدالة MATCH القيمة (MATCH)9 . ومع ذلك ، في هذه الحالة ، نريد حقًا معرفة عدد الإدخالات الموجودة في القائمة ، لذلك تطرح الصيغة 1 من قيمة MATCH (التي تعطي موضع الإدخال الأخير). في النهاية ، تُرجع MATCH ( TRUE ، أعلاه ، 0) -1 قيمة 8 .

الجزء التالي من الصيغة هو دالة IFERROR :

=OFFSET(FruitsHeading,1,0,IFERROR(the above,20),1)

ترجع الدالة IFERROR قيمة بديلة ، إذا نتج عن القيمة الأولى المحددة خطأ. يتم تضمين هذه الوظيفة لأنه إذا كانت كتلة الخلايا بأكملها (جميع الصفوف العشرين) مملوءة بإدخالات ، فستقوم وظيفة MATCH بإرجاع خطأ.

هذا لأننا نطلب من دالة MATCH البحث عن أول قيمة TRUE (في مصفوفة القيم من دالة ISBLANK ) ، ولكن إذا كانت NONE من الخلايا فارغة ، فسيتم ملء الصفيف بأكمله بقيم FALSE . إذا لم تتمكن MATCH من العثور على القيمة الهدف ( TRUE ) في المصفوفة التي تبحث عنها ، فإنها تُرجع خطأً.

لذلك ، إذا كانت القائمة بأكملها ممتلئة (وبالتالي ، فإن MATCH ترجع خطأ) ، فستقوم الدالة IFERROR بدلاً من ذلك بإرجاع القيمة 20 (مع العلم أنه يجب أن يكون هناك 20 إدخالاً في القائمة).

أخيرًا ، يعرض OFFSET (FruitsHeading ، 1،0 ، ما سبق ، 1)(OFFSET(FruitsHeading,1,0,the above,1)) النطاق الذي نبحث عنه بالفعل: ابدأ من خلية FruitsHeading ، ثم انتقل لأسفل صفًا واحدًا وأكثر من 0 عمودًا ، ثم حدد منطقة بها العديد من الصفوف بطول توجد إدخالات في القائمة (وعرض عمود واحد). لذلك ستعيد الصيغة بأكملها معًا النطاق الذي يحتوي على الإدخالات الفعلية فقط (وصولاً إلى الخلية الفارغة الأولى).

إن استخدام هذه الصيغة لتحديد النطاق الذي يمثل مصدر القائمة المنسدلة يعني أنه يمكنك تحرير القائمة بحرية (إضافة أو إزالة الإدخالات ، طالما أن الإدخالات المتبقية تبدأ من الخلية العلوية وتكون متجاورة) وستعكس القائمة المنسدلة دائمًا القيمة الحالية قائمة (انظر الشكل 6(Figure 6) ).

تم تضمين ملف المثال (القوائم الديناميكية) الذي تم استخدامه هنا ويمكن تنزيله من موقع الويب هذا. ومع ذلك ، لا تعمل وحدات الماكرو ، لأن WordPress لا يحب كتب Excel التي تحتوي على وحدات ماكرو فيها.

كبديل لتحديد عدد الصفوف في كتلة القائمة ، يمكن تعيين اسم النطاق الخاص بكتلة القائمة ، والتي يمكن استخدامها بعد ذلك في صيغة معدلة. في ملف المثال ، تستخدم القائمة الثانية ( الأسماء(Names) ) هذه الطريقة. هنا ، كتلة القائمة بأكملها (تحت عنوان "NAMES" ، 40 صفًا في مثال الملف) يتم تعيين اسم النطاق لـ NameBlock . الصيغة البديلة لتعريف قائمة الأسماء(NamesList) هي إذن:

=OFFSET(NamesHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(NamesBlock),0,0),0)-1,ROWS(NamesBlock)),1)

حيث يستبدل NamesBlock OFFSET ( FruitsHeading، 1،0،20،1 ) ويستبدل ROWS (NamesBlock) 20 (عدد الصفوف) في الصيغة السابقة.

لذلك ، بالنسبة للقوائم المنسدلة التي يمكن تحريرها بسهولة (بما في ذلك من قبل المستخدمين الآخرين الذين قد يكونون عديمي الخبرة) ، حاول استخدام أسماء النطاق الديناميكي! ولاحظ أنه على الرغم من تركيز هذه المقالة على القوائم المنسدلة ، إلا أنه يمكن استخدام أسماء النطاقات الديناميكية في أي مكان تحتاج فيه للإشارة إلى نطاق أو قائمة يمكن أن تختلف في الحجم. يتمتع!



About the author

"أنا خبير مستقل في Windows و Office. لدي أكثر من 10 سنوات من الخبرة في العمل باستخدام هذه الأدوات ويمكنني مساعدتك في تحقيق أقصى استفادة منها. تشمل مهاراتي: العمل مع Microsoft Word و Excel و PowerPoint و Outlook ؛ إنشاء الويب الصفحات والتطبيقات ؛ ومساعدة العملاء على تحقيق أهداف أعمالهم. "



Related posts