إكسيل وتحليل البياناتصيغ ودوال إكسيل

إكسيل: صيغة بسيطة لـ “إذا كان يحتوي على”

دليل أكاديمي شامل يشرح كيفية صياغة وتطبيق دالة “إذا كان يحتوي على” في برنامج إكسيل باستخدام IF وISNUMBER وSEARCH لمعالجة وتحليل البيانات بكفاءة عالية.

تاريخ النشر

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

تكمن المفارقة في أن إكسيل، حتى إصداراته الكلاسيكية الممتدة لعقود، لا يوفر دالة أحادية ومباشرة تحمل اسم “CONTAINS” كما هو مألوف في لغات البرمجة الحديثة مثل بايثون أو إس كيو إل (SQL). ولتجاوز هذا القيد البنيوي، ابتكر خبراء النمذجة صيغة مركبة تجمع بين ثلاث دوال قياسية رصينة: دالة الفحص الموضعي (SEARCH أو FIND)، ودالة التدقيق المنطقي (ISNUMBER)، والدالة الشرطية الكبرى (IF). وتُشكل هذه التركيبة الثلاثية منظومة برمجية مرنة تُحاكي بدقة وظيفة “إذا كان يحتوي على” (If Contains)، محولة السلاسل النصية الخام إلى مخرجات منطقية وكمية غاية في الدقة.

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

جدول المحتويات

1. مقدمة تأسيسية: مفهوم التحقق من احتواء الخلايا على نصوص في برنامج إكسيل

1.1 أهمية البحث النصي الشرطي في معالجة البيانات الضخمة

تمثل البيانات النصية غير المتجانسة نسبة بالغة الضخامة من إجمالي البيانات المتدفقة إلى قواعد بيانات المؤسسات اليومية. وتتسم هذه السجلات بكونها غير مهيكلة بطبيعتها؛ إذ قد ترد أسماء الشركات أو توصيفات السلع أو العناوين البريدية بصيغ متعددة تتضمن أخطاء إملائية، أو فراغات زائدة، أو بادئات ولواحق اصطلاحية متغيرة. في هذا السياق، يصبح الاعتماد على المطابقة التامة عبر عوامل المقارنة التقليدية (مثل علامة التساوي “=”) غير مجدٍ، لأنه يفشل في استيعاب التباينات الطفيفة داخل السلسلة النصية، مما يؤدي إلى فقدان بيانات حيوية أثناء التصفية وعمليات التنقيب.

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

علاوة على ذلك، يلعب البحث النصي دور الجسر التحويلي الذي ينقل البيانات من حالتها الوصفية الهلامية إلى مخرجات منطقية وكمية قابلة للقياس الرياضي. فبمجرد تحديد ما إذا كانت الخلية تحتوي على كلمة مستهدفة، يمكن للمحلل تحويل هذه الاستجابة إلى أرقام ثنائية (0 و 1) أو قيم منطقية (TRUE و FALSE)، والتي تُعد حجر الأساس لتطبيق النماذج الإحصائية المتقدمة، وبناء جداول المحاور الحسابية (Pivot Tables)، وتوليد مؤشرات الأداء الرئيسية (KPIs) في لوحات القيادة التفاعلية.

1.2 المشكلة البرمجية: غياب دالة مباشرة بمسمى CONTAINS في إكسيل

يثير غياب دالة شرطية صريحة باسم CONTAINS في النسخ التقليدية من إكسيل تساؤلات منطقية لدى مطوري البرمجيات والمحللين الجدد. يرجع هذا الغياب تاريخياً إلى الفلسفة المعمارية التي بُني عليها محرك حسابات إكسيل، والتي اعتمدت في مراحلها الأولى على تفكيك المشكلات المعقدة إلى دوال ذرية صغيرة (Atomic Functions) تُركب معاً لتكوين حلول مرنة، بدلاً من إغراق البرنامج بدوال متخصصة تقتصر على وظيفة واحدة محددة، مما يرفع من كفاءة استهلاك الذاكرة في الحواسيب القديمة.

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

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

1.3 نظرة عامة على الصيغة القياسية: IF مع ISNUMBER وSEARCH

تُعد الصيغة التجميعية =IF(ISNUMBER(SEARCH("text", cell)), "Yes", "No") الهيكل المعياري الأكثر انتشاراً واعتمادية في مجتمع محللي البيانات للتحقق من وجود السلاسل النصية الجزئية. تتكون هذه الصيغة من ثلاث طبقات وظيفية متتالية تعمل بتوافق خوارزمي صارم: تبدأ من النواة المركزية للبحث النصي، مروراً بالمحول المنطقي الوسيط، وصولاً إلى بوابة اتخاذ القرار النهائي التي تحدد المخرج المرئي النهائي للمستخدم في واجهة ورقة العمل.

يتبع محرك الحساب في إكسيل تسلسلاً تنفيذياً داخلياً يبدأ من الداخل إلى الخارج (Inside-Out Execution). تقوم دالة SEARCH بفحص محتوى الخلية الهدف بحثاً عن النص الممرر إليها؛ فإذا عثرت عليه، أعادت فوراً رقماً صحيحاً يمثل الترتيب المكاني لأول حرف من النص المطابق. تتلقى دالة ISNUMBER هذا الرقم وتحوله إلى القيمة المنطقية TRUE، أو تتلقى رمز الخطأ #VALUE! في حال الإخفاق وتحوله إلى FALSE. أخيراً، تستقبل دالة IF هذه القيمة البوليانية لتُرجع القيمة المخصصة للتحقق أو عدمه وفقاً لسيناريو التحليل المطلوب.

تتجاوز الأهداف التحليلية لهذه الصيغة مجرد إظهار كلمتي “نعم” أو “لا”؛ فهي تُشكل النواة المركزية لإنشاء أعمدة التصنيف المساعد (Helper Columns)، وتغليب قواعد التنسيق الشرطي الديناميكي، وإجراء التجميعات الإحصائية المشروطة. إن إتقان هذه الصيغة يمنح مهندس البيانات فهماً عميقاً لكيفية ترويض محرك الحسابات في إكسيل لمعالجة المسائل المعقدة عبر تآلف الدوال القياسية، مما يؤسس لممارسات نمذجة خالية من الأخطاء وقابلة للتطوير في المشاريع التحليلية الكبرى.

2. التشريح البنيوي والمنطقي للصيغة المركبة =IF(ISNUMBER(SEARCH()))

2.1 تفكيك مصفوفة الاعتماديات بين الدوال الثلاث

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

في الطبقة الوسيطة، تبرز دالة ISNUMBER كصمام أمان ومحول منطقي بالغ الأهمية. فمحرك دالة IF غير قادر على التعامل المباشر مع أخطاء النظام الحسابية، وتمرير خطأ مثل #VALUE! إليها مباشرة سيؤدي حتماً إلى تعطل الصيغة بالكامل وإظهار الخطأ ذاته في الخلية. هنا تتدخل ISNUMBER لتجري عملية تقييم نوعي للقيمة الممررة إليها: فإن كانت قيمة عددية (ناتجة عن نجاح البحث) أطلقت الإشارة TRUE، وإن كانت أي شيء آخر، بما في ذلك أخطاء الفقد النصي، أطلقت الإشارة FALSE بحيادية تامة ودون إيقاف المعالجة.

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

2.2 التحليل الخوارزمي لتدفق البيانات داخل الخلية

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

في حالة الإخفاق، يُولد محرك البحث خطأ وقت التشغيل #VALUE!، وهو مؤشر داخلي يعني أن الدالة لم تجد الهدف في النطاق المحدد. لا يُسمح لهذا الخطأ بالظهور على واجهة المستخدم، لأن دالة ISNUMBER تعترضه لحظياً وتمنع انتشاره في شجرة الحساب، وتقوم بقمع هذا الاستثناء وتحويله فوراً إلى القيمة المنطقية FALSE. هذه الآلية تضمن عزل أخطاء التشغيل في الذاكرة دون التأثير على استقرار ورقة العمل أو توقف العمليات الرياضية اللاحقة المعتمدة على الخلية.

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

2.3 المعايير القياسية لكتابة وتنسيق الصيغة في بيئات إكسيل المختلفة

يتطلب التطبيق العملي للصيغ المركبة في بيئات إكسيل مراعاة الفروق الدقيقة في الإعدادات الإقليمية لنظام التشغيل ولوحة التحكم. في الأنظمة التي تستخدم المعايير الإنجليزية (الولايات المتحدة)، تُفصل وسائط الدوال باستخدام الفواصل التقليدية (Commas ,)، بينما تفرض الإعدادات الإقليمية الأوروبية وبعض الأنظمة المعربة استخدام الفواصل المنقوطة (Semicolons ;) لتجنب التعارض مع الفاصلة العشرية للأرقام، مما يحتم على مطور النماذج كتابة الصيغة بما يتوافق مع البيئة المستهدفة:

  • الصيغة وفق الإعدادات القياسية (الفاصلة العادية): =IF(ISNUMBER(SEARCH("مكتمل", A2)), "Yes", "No")
  • الصيغة وفق الإعدادات الإقليمية البديلة (الفاصلة المنقوطة): =IF(ISNUMBER(SEARCH("مكتمل"; A2)); "Yes"; "No")

إلى جانب الفواصل، يجب الانتباه الدقيق لإدارة علامات التنصيص المزدوجة؛ فالنصوص الثابتة داخل الصيغ تتطلب حصرها بين علامتي تنصيص ""، في حين أن الإشارة إلى خلايا تحتوي على نصوص تتطلب كتابة مرجع الخلية مجرداً (مثل A2 أو $A$2). ويبرز هنا التمييز الحرج بين استخدام المراجع النسبية التي تتغير تلقائياً عند سحب الصيغة للأسفل، والمراجع المطلقة المزودة بعلامة الدولار $ لتثبيت نص البحث عند استدعائه من خلية مرجعية خارجية محددة.

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

3. آلية عمل دالة SEARCH: المزايا والتعامل مع النصوص غير الحساسة لحالة الأحرف

3.1 الخصائص التقنية والبارامترات التشغيلية لدالة SEARCH

تُمثل دالة SEARCH الأداة الأساسية لاستكشاف النصوص غير الحساسة لحالة الأحرف في بيئة إكسيل، وتعتمد بنيتها التركيبية على ثلاثة معاملات رئيسية تُحدد بدقة مسار عملية الفحص وسلوكها الحسابي. يُعرف المعامل الأول باسم find_text، وهو السلسلة النصية الفرعية أو الكلمة المراد البحث عنها، ويمكن إدخالها مباشرة كنص محاط بعلامات تنصيص أو كمرجع يشير إلى خلية أخرى في ورقة العمل.

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

تتميز دالة SEARCH بكفاءتها في قراءة الرموز الحرفية ومعالجتها وفق ترميز Unicode، مما يتيح لها التعامل بسلاسة مع مختلف اللغات العالمية والرموز التعبيرية والمسافات البينية. وعند نجاح عملية البحث، تُرجع الدالة قيمة عددية تمثل الترتيب الموضعي للمحرف الأول من النص المطابق، وتُعد هذه النتيجة الرياضية هي الوقود الذي يُشغل دالة ISNUMBER في الطبقة التالية من الصيغة المركبة.

3.2 مفهوم عدم الحساسية لحالة الأحرف (Case-Insensitivity)

تعتمد دالة SEARCH خوارزمية مطابقة لا تُفرق بين الحروف الكبيرة (Upper Case) والحروف الصغيرة (Lower Case) في اللغات التي تستخدم الأبجديات اللاتينية. فعلى سبيل المثال، إذا كان النص المستهدف هو “excel”، فإن الدالة ستتطابق بنجاح تام وتُرجع موضع النص سواء كُتب داخل الخلية بالشكل “EXCEL” أو “Excel” أو “eXcEl”، مما يجعلها الخيار المثالي للتعامل مع البيانات المدخلة يدوياً والتي تفتقر إلى التوحيد الشكلي للأحرف.

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

تتجلى الأهمية التطبيقية لهذه الخاصية في بيئات الأعمال الدولية، حيث تتداخل البيانات الواردة من مصادر متعددة وتتنوع طرق كتابة الأسماء والرموز الوظيفية. تضمن دالة SEARCH استقرار عمليات الفرز والتصنيف دون الحاجة لتطبيق دوال تحويل إضافية مثل UPPER أو LOWER، مما يُبسط بنية الصيغ الحسابية ويرفع من سرعة تنفيذ النماذج المالية والتحليلية.

3.3 استخدام الرموز البديلة (Wildcard Characters) داخل SEARCH

تمتلك دالة SEARCH قدرة فريدة على دعم الرموز البديلة أو ما يُعرف بـ (Wildcards)، وهي محارف خاصة تتيح بناء أنماط بحث مطاطية ومتقدمة تتجاوز المطابقة الحرفية الصرفة. تشمل هذه الرموز علامة الاستفهام (?) والنجمة (*)، ويُعد توظيفهما داخل معامل البحث وسيلة قوية لاستيعاب التباينات الإملائية والتركيبية غير المحدودة داخل السلاسل النصية.

تُستخدم علامة الاستفهام (?) لمطابقة محرف فردي واحد أياً كانت هويته؛ فالبحث عن النمط "ب?ت" سيؤدي إلى العثور على كلمات مثل “بيت”، “بنت”، “بوت”، حيث تحجز العلامة موضعاً لحرف واحد فقط. في المقابل، تُمثل علامة النجمة (*) عدداً غير محدد من المحارف (يبدأ من الصفر إلى ما لا نهاية)، مما يعني أن البحث عن "تقرير*مالي" سيتطابق مع “تقرير مالي”، و”تقرير سنوي مالي”، و”تقرير الربع الأول المالي المفصل”، مما يوفر مرونة استثنائية في تتبع النصوص المتباعدة داخل الجمل.

وفي الحالات الخاصة التي يتطلب فيها التحليل البحث عن الرموز البديلة ذاتها كرموز حرفية أصلية (مثل البحث عن علامة الاستفهام أو النجمة الفعلية داخل النص)، يُلزم إكسيل استخدام رمز التلدة (~) كبادئة إلغاء (Escape Character) تسبق الرمز المطلوب. فكتابة النمط "~?" أو "~*" تُعطل الوظيفة البرمجية للرمز وتجعل محرك البحث يتعامل معه كمحرف نصي اعتيادي، مما يمنع حدوث التباس خوارزمي أثناء فحص السجلات الفنية والهندسية.

4. المقارنة العلمية بين دالتي SEARCH و FIND: متى نلجأ للبحث الحساس لحالة الأحرف؟

4.1 الفروق الجوهرية في البنية الخوارزمية بين SEARCH و FIND

على الرغم من التطابق الظاهري في المعاملات التشغيلية بين دالتي SEARCH و FIND، فإن الاختلاف الجوهري بينهما يكمن في البنية الخوارزمية وآلية مقارنة البايتات في الذاكرة. تعتمد دالة FIND على المطابقة الثنائية الحرفية الصارمة (Binary Literal Matching)، حيث تقارن قيم المحارف استناداً إلى جداول الترميز الرقمي المباشر، مما يجعلها حساسة تماماً لحالة الأحرف (Case-Sensitive)، في حين تعتمد SEARCH على خوارزمية تطابق تصنيفية تتجاهل حالة الأحرف وتدعم الأنماط البديلة.

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

يوضح الجدول التحليلي التالي المقارنة التقنية الدقيقة بين الدالتين:

  • دالة SEARCH: غير حساسة لحالة الأحرف (Case-Insensitive)، تدعم الرموز البديلة (*, ?, ~)، زمن المعالجة قياسي، مثالية لتصنيف النصوص العامة والبيانات غير المنظمة.
  • دالة FIND: حساسة بدقة لحالة الأحرف (Case-Sensitive)، لا تدعم الرموز البديلة (تتعامل معها كأحرف عادية)، زمن المعالجة فائق السرعة، مثالية للأكواد المشفرة والتحقق من صحة السجلات الحساسة.

4.2 تطبيقات دالة FIND للبحث الدقيق والحساس للحالة

تفرض بعض السيناريوهات التقنية والتجارية استخدام دالة FIND بديلاً عن SEARCH لضمان أعلى مستويات الدقة التحليلية. من أبرز هذه التطبيقات التعامل مع الرموز التعريفية للمنتجات ووحدات حفظ المخزون (SKU Codes)، حيث تُستخدم الحروف الكبيرة للإشارة إلى خط إنتاج رئيسي، بينما تدل الحروف الصغيرة على تفريعات ثانوية؛ كأن يدل الرمز “PROD-A” على فئة الأجهزة الفاخرة، بينما يرمز “prod-a” إلى قطع الغيار الاستهلاكية.

كما تُعد دالة FIND الأداة المثالية لفحص كلمات المرور المشفرة، والتحقق من المفاتيح البرمجية (API Keys)، وتحليل سجلات خوادم الشبكات (Server Logs) التي تعتمد معايير صارمة في تمييز الأوامر وحالات المتغيرات. في هذه الحالات، يتم بناء الصيغة بالشكل: =IF(ISNUMBER(FIND("Admin", A1)), "Authorized", "Restricted")، لضمان عدم منح الصلاحيات إلا في حال التطابق الكامل للنمط المطلوب بحالته المحددة دون أدنى تساهل.

يتسع نطاق تطبيق FIND أيضاً ليشمل التحليلات اللغوية والأكاديمية التي تتطلب فرز الاختصارات العلمية الصارمة، مثل التمييز بين وحدات القياس؛ كأن تُشير “MB” إلى الميجابايت في حين تُشير “mb” إلى المليبار، مما يحول دون وقوع أخطاء فادحة في النمذجة الرياضية والهندسية التي تعتمد على وحدات فيزيائية دقيقة داخل أوراق العمل.

4.3 دراسة مقارنة تجريبية: نتائج تطبيق SEARCH مقابل FIND على نفس العينة

لتوضيح الفروق التطبيقية بين الدالتين، نُجري تجربة قياسية على عينة من البيانات الوصفية لاختبار مخرجات الصيغة المركبة عند تمرير نصوص مختلفة الحالة. لنفترض أن الخلية A2 تحتوي على النص: “Invoice-usa-2026″، ونرغب في التحقق من وجود الكود “USA”:

  • تطبيق الصيغة: =IF(ISNUMBER(SEARCH("USA", A2)), "Match", "No Match") ينتج عنه القيمة: Match، نظراً لتجاهل دالة SEARCH لحالة الأحرف وقبولها التطابق مع “usa”.
  • تطبيق الصيغة: =IF(ISNUMBER(FIND("USA", A2)), "Match", "No Match") ينتج عنه القيمة: No Match، نظراً لكون دالة FIND ترفض التطابق لاختلاف حالة الحروف بين المدخل والهدف.

يكشف هذا التحليل التجريبي أن الاختيار الخاطئ بين الدالتين قد يؤدي إلى نتائج إيجابية كاذبة (False Positives) عند استخدام SEARCH في بيئات تتطلب حساسية الحالة، أو نتائج سلبية كاذبة (False Negatives) عند استخدام FIND مع نصوص عامة تفتقر إلى التنسيق الصارم. لذا، يُنصح بوضع معايير واضحة لطبيعة البيانات المستهدفة قبل اعتماد الصيغة النهائية في النماذج الإنتاجية.

5. الدور التحويلي لدالة ISNUMBER: إدارة القيم المنطقية وتفادي أخطاء النظام

5.1 تفسير المخرجات الرقمية لدوال البحث النصي

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

في المقابل، عندما تفشل دوال البحث في العثور على النص المستهدف، فإنها لا تُرجع القيمة صفر (0) أو فراغاً نصياً، بل تُطلق خطأ النظام الشهير #VALUE!. يُعبر هذا الخطأ في معمارية إكسيل عن فشل في معالجة النوع (Type Mismatch) أو عجز عن العثور على المعامل المطلوب، وهو ما يُشكل تهديداً لسلامة ورقة العمل الحسابية إذا لم يتم احتواؤه وعزله مبكراً قبل أن يمتد إلى الخلايا التابعة في سلسلة الحسابات.

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

5.2 التحويل المنطقي من الحالة الرقمية إلى القيم البوليانية (Boolean Logic)

تضطلع دالة ISNUMBER بدور المحول البولياني (Boolean Converter) الذي يعيد هندسة مخرجات دوال البحث النصي؛ حيث تمتلك هذه الدالة القدرة الفطرية على تقييم محتوى أي تعبير برمجي يمرر إليها وتصنيفه إلى احتمالين حصريين: فإذا كانت القيمة الممررة رقماً حقيقياً (مهما كانت قيمته العددية، سواء كان 1 أو 500)، تُطلق الدالة فوراً القيمة المنطقية TRUE.

أما الميزة الحاسمة لدالة ISNUMBER فتتجلى في تعاملها مع رموز الأخطاء؛ إذ إنها مبرمجة داخلياً لاعتبار أي قيمة غير رقمية — بما في ذلك النصوص، والمصفوفات الفارغة، والأخطاء البرمجية بجميع أنواعها (مثل #VALUE!، #N/A، #REF!) — حالة عدم تحقق تُقابل بالقيمة المنطقية FALSE. وبهذا التحويل الذكي، يتم امتصاص الخطأ وتحويله إلى نفي منطقي نقي وآمن دون إثارة أي تنبيهات نظامية معطلة في ورقة العمل.

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

5.3 البدائل المنطقية الممكنة لدالة ISNUMBER ومزاياها النسبية

على الرغم من الهيمنة المعيارية لدالة ISNUMBER في هذا التركيب، يبتكر مهندسو البيانات حلولاً وبدائل منطقية أخرى لتحقيق النتيجة ذاتها وفق متطلبات الأداء المتباينة. من أبرز هذه البدائل استخدام دالة التدقيق في الأخطاء ISERROR مسبوقة بدالة النفي NOT، لتصبح الصيغة: =IF(NOT(ISERROR(SEARCH("text", A1))), "Yes", "No"). يقوم هذا التركيب بفحص ما إذا كانت دالة البحث قد أطلقت خطأ، ثم يعكس النتيجة منطقياً ليتوافق مع مسار الصواب والخطأ.

يتمثل بديل تركيبي آخر في استخدام دالة العد الرقمي COUNT، مثل: =IF(COUNT(SEARCH("text", A1))>0, "Yes", "No"). تستند هذه الفكرة إلى أن دالة COUNT تقوم بحساب الخلايا أو القيم التي تحتوي على أرقام فقط وتتجاهل الأخطاء تماماً؛ فإذا أعادت دالة البحث موضعاً رقمياً، يكون ناتج العد 1، وهو أكبر من الصفر مما يُفعل شرط الصواب، وإن أطلقت خطأ، كان الناتج صفراً مما يُفعل مسار الخطأ.

توضح المقارنة الحسابية أن دالة ISNUMBER تظل الخيار الأكثر كفاءة وسرعة؛ نظراً لكونها دالة تقييم نوعي أحادية خفيفة تستهلك دورات معالجة أقل في وحدة المعالجة المركزية (CPU Cycles) مقارنة بدوال النفي المركبة أو دوال العد الإحصائي، مما يجعلها الخيار الذهبي المعتمد في بناء النماذج المؤسسية المعقدة.

6. تخصيص المخرجات الشرطية عبر دالة IF: ما بعد الإجابة بـ “نعم” أو “لا”

6.1 إرجاع قيم ديناميكية مخصصة مبنية على سياق الأعمال

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

علاوة على ذلك، يمكن للدالة استدعاء قيم ديناميكية من خلايا ونطاقات أخرى عند تحقق شرط الاحتواء النصي بدلاً من توليد نصوص جديدة؛ كأن يتم سحب اسم المدير المسؤول تلقائياً من العمود C إذا احتوى وصف المشروع في الخلية A2 على الكود الإقليمي “WEST”. وتتيح هذه الخاصية بناء تقارير ديناميكية ترتبط فيها السجلات ببياناتها المرجعية بمرونة فائقة:

=IF(ISNUMBER(SEARCH("WEST", A2)), C2, "غير محدد")

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

6.2 تنفيذ عمليات حسابية متقدمة بدلاً من إرجاع نصوص ثابتة

تمتد القدرات التشغيلية للصيغة لتشمل تنفيذ عمليات رياضية وحسابية معقدة يتم إطلاقها شرطياً بناءً على الاحتواء النصي للخلية. ففي نماذج التسعير والمبيعات، يمكن احتساب نسب خصم محددة أو فرض ضرائب تصاعدية بمجرد اكتشاف كلمة مفتاحية داخل وصف الصنف؛ كأن يتم تطبيق خصم قدره 15% على إجمالي الفاتورة في الخلية B2 إذا احتوى الوصف في الخلية A2 على كلمة “تصفية”:

=IF(ISNUMBER(SEARCH("تصفية", A2)), B2 * 0.85, B2)

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

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

6.3 دمج الشروط المتداخلة (Nested IFs) لتعدد مستويات التصنيف

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

يوضح المثال البرمجي التالي كيفية تصنيف وسائل النقل في الخلية A2 بناءً على الكلمات الدلالية المتضمنة:

=IF(ISNUMBER(SEARCH("شاحنة", A2)), "نقل ثقيل", IF(ISNUMBER(SEARCH("دراجة", A2)), "نقل خفيف", IF(ISNUMBER(SEARCH("سيارة", A2)), "نقل خاص", "أخرى"))

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

7. تطبيقات ونماذج عملية: خطوات تطبيق الصيغة على مجموعات البيانات في إكسيل

7.1 تطبيق الصيغة خطوة بخطوة على سجلات أداء الفرق واللاعبين

لتوضيح التطبيق العملي للصيغة على أرض الواقع، نستعرض سيناريو حقيقي لتحليل بيانات الأداء الرياضي لفرق كرة السلة الأمريكية (NBA). نفترض وجود جدول بيانات يحتوي على عمود يسجل الاسم الكامل للفريق متبوعاً بالمدينة (مثل “Dallas Mavs” أو “LA Lakers”) في العمود A، والمطلوب هو إنشاء عمود فرز مساعد في العمود B يحدد بدقة ما إذا كان السجل ينتمي لفريق “Mavs” لتطبيق تحليلات إحصائية متقدمة على أدائهم الفردي.

تبدأ الخطوة التنفيذية الأولى بتحديد الخلية B2 وكتابة الصيغة المعيارية بدقة:

=IF(ISNUMBER(SEARCH("mavs", A2)), "Yes", "No")

يقوم محرك إكسيل فوراً بفحص محتوى الخلية A2؛ وبفضل خاصية عدم الحساسية لحالة الأحرف في دالة SEARCH، يتم التعرف على الكلمة سواء كُتبت بأحرف كبيرة أو صغيرة أو حتى ضمن تركيب مدمج مثل “DallasMavs”.

Excel if contains example
Excel if contains example

بعد التحقق من استقرار الصيغة في الخلية الأولى وإرجاعها النتيجة الصحيحة، يتم الانتقال إلى خطوة التعميم التلقائي؛ حيث يضع المستخدم مؤشر الفأرة على مقبض التعبئة التلقائية (Auto-fill Handle) في الركن السفلي الأيسر للخلية B2، ويقوم بالسحب المزدوج السريع (Double-Click) لتمتد الصيغة لحظياً وتغطي كافة الصفوف في الجدول مع تحديث المراجع النسبية تلقائياً لكل لاعب.

7.2 التحقق من صحة العناوين البريدية وتصنيف النطاقات الجغرافية

يُمثل فحص العناوين البريدية للعملاء وتصنيفها جغرافياً أحد أكثر الاستخدامات طلباً في إدارة علاقات العملاء (CRM). فعند تدفق آلاف السجلات التي تحتوي على عناوين مدمجة في حقل نصي واحد (مثل: “123 شارع الملك فهد، الرياض، المملكة العربية السعودية”)، يمكن استخدام صيغة الاحتواء الشرطي لاكتشاف اسم المدينة تلقائياً وتصنيف العملاء حسب المناطق الإدارية دون الحاجة لتفكيك النصوص المعقدة.

يتم كتابة الصيغة لفحص وجود اسم العاصمة وتحديد المنطقة:

=IF(ISNUMBER(SEARCH("الرياض", A2)), "المنطقة الوسطى", IF(ISNUMBER(SEARCH("جدة", A2)), "المنطقة الغربية", "منطقة أخرى"))

كما تُطبق هذه المنهجية بكفاءة عالية في تصفية وفرز عناوين البريد الإلكتروني للمؤسسات؛ حيث يمكن فحص نطاق البريد (Domain) للتمييز بين المؤسسات التعليمية والحكومية والتجارية عبر فحص الامتدادات داخل عنوان البريد في الخلية A2:

=IF(ISNUMBER(SEARCH(".edu", A2)), "قطاع تعليمي", IF(ISNUMBER(SEARCH(".gov", A2)), "قطاع حكومي", "قطاع تجاري"))

ولضمان دقة النتائج في معالجة العناوين، يُنصح دائماً بدمج دالة إزالة المسافات الزائدة TRIM مع النص المفحوص، لضمان التخلص من أي فراغات بادئة أو لاحقة قد تكون تسربت أثناء عمليات النسخ أو الاستيراد من قواعد البيانات الخارجية المعيبة.

7.3 التدقيق في الحسابات المالية وفحص كشوفات الحساب البنكية

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

فعلى سبيل المثال، إذا تضمن وصف القيد المصرفي في الخلية C2 عبارات تدل على عمليات تمويلية أو استردادية، يمكن بناء صيغة فرز تصنف النفقات التشغيلية والرسوم البنكية تلقائياً:

=IF(ISNUMBER(SEARCH("رسوم سحب", C2)), "عمولات بنكية", IF(ISNUMBER(SEARCH("فاتورة كهرباء", C2)), "مرافق وطاقة", "مصروفات عامة"))

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

8. التعامل مع النصوص والشروط المتعددة: توسيع الصيغة بمنطق (OR / AND)

8.1 التحقق من احتواء الخلية على أحد النصوص المحددة (منطق OR)

في كثير من الحالات التحليلية، يكون الهدف هو التحقق من احتواء الخلية على كلمة واحدة على الأقل من بين مجموعة كلمات مفتاحية محددة، وهو ما يُعرف منطقياً بمعامل OR. لتحقيق هذا الغرض، يتم توسيع الصيغة المعيارية عبر دمج دالة OR المنطقية لاحتضان عدة اختبارات متزامنة لدوال ISNUMBER(SEARCH()) داخل التعبير الشرطي لدالة IF:

=IF(OR(ISNUMBER(SEARCH("عاجل", A2)), ISNUMBER(SEARCH("مهم", A2)), ISNUMBER(SEARCH("فوري", A2))), "أولوية قصوى", "عادي")

يوفر إكسيل أيضاً طريقة أكثر أناقة ومرونة باستخدام ثوابت المصفوفات (Array Constants)؛ حيث يتم تمرير قائمة النصوص المستهدفة محاطة بأقواس معقوفة {} إلى دالة SEARCH مباشرة، ثم استخدام دالة التجميع المنطقي OR أو دالة الجمع الرياضي SUM لفحص وجود أي تطابق محقق:

=IF(OR(ISNUMBER(SEARCH({"عاجل", "مهم", "فوري"}, A2))), "أولوية قصوى", "عادي")

تتميز صيغة المصفوفات هذه باختزال طول التعبير البرمجي وسهولة قراءته وتعديله عند إضافة كلمات مفتاحية جديدة. يقوم محرك إكسيل بتقييم كل عنصر في المصفوفة بشكل مستقل، وإن نجح البحث في توليد رقم واحد على الأقل، تُطلق دالة OR القيمة المنطقية TRUE وتُفعل مسار الاستجابة الفورية المحدد في الصيغة.

8.2 التحقق من احتواء الخلية على جميع النصوص مجتمعة (منطق AND)

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

تُصاغ هذه العلاقة الشرطية الصارمة بدمج دالة AND لاحتواء كافة اختبارات التحقق النصي:

=IF(AND(ISNUMBER(SEARCH("تقرير", A2)), ISNUMBER(SEARCH("معتمد", A2))), "جاهز للنشر", "مسودة قيد المراجعة")

كما يمكن تحقيق السلوك الرياضي ذاته عبر تقنية الضرب المنطقي (Boolean Multiplication) بدون استخدام دالة AND، حيث يتم ضرب نتائج دوال ISNUMBER ببعضها حسابياً؛ وبما أن TRUE تعادل 1 و FALSE تعادل 0، فإن ناتج الضرب لن يساوي 1 إلا إذا كانت جميع نتائج الفحص صائبة ومحققة في آن واحد:

=IF(ISNUMBER(SEARCH("تقرير", A2)) * ISNUMBER(SEARCH("معتمد", A2)), "جاهز للنشر", "مسودة قيد المراجعة")

تُعد هذه التقنيات المتقدمة ضرورية للغاية في تدقيق العقود والوثائق القانونية المؤتمتة، حيث يشترط وجود بنود وإشارات مصطلحية محددة مجتمعة للتحقق من امتثال العقد للشروط واللوائح التنظيمية المعتمدة قبل اعتماده النهائي.

8.3 بناء قوائم فحص ديناميكية بناءً على نطاقات خلايا خارجية

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

إذا كانت قائمة الكلمات الدلالية المستهدفة مسجلة في النطاق $E$2:$E$10، والخلية المراد فحصها هي A2، تُصاغ المعادلة الاحترافية على النحو التالي:

=IF(SUMPRODUCT(--ISNUMBER(SEARCH($E$2:$E$10, A2))) > 0, "مطابق للمعايير", "غير مطابق")

تعمل علامة السالب المزدوجة (Double Unary --) على تحويل مصفوفة القيم المنطقية (TRUE/FALSE) الناتجة من فحص كل خلية في النطاق إلى مصفوفة أرقام ثنائية (1/0). تقوم دالة SUMPRODUCT بعد ذلك بجمع هذه الأرقام؛ فإذا وجد تطابق مع كلمة واحدة أو أكثر، سيكون المجموع أكبر من الصفر، مما يطلق شرط الإيجاب تلقائياً.

يوفر هذا النموذج الديناميكي مرونة غير محدودة لفرق العمل؛ حيث يمكن لمدير النظام إضافة أو حذف الكلمات المفتاحية من جدول المعايير الخارجي دون لمس الصيغ الرياضية أو القلق بشأن تعطل العمليات الحسابية في أوراق العمل الإنتاجية.

9. التكامل مع أدوات إكسيل المتقدمة: التنسيق الشرطي والتحقق من صحة البيانات

9.1 تطبيق التنسيق الشرطي (Conditional Formatting) القائم على صيغة الاحتواء

يُعد التنسيق الشرطي أحد أقوى أدوات التمثيل البصري في إكسيل، ويتيح تمييز السجلات الهامة أو الشاذة وتلوينها تلقائياً بمجرد استيفاء نصوصها لمعايير محددة. لا يتطلب التنسيق الشرطي كتابة دالة IF كاملة، بل يكتفي بالطبقة المنطقية التأسيسية التي تُرجع TRUE لتطبيق التنسيق، أو FALSE لتجاهله، مما يجعل الصيغة =ISNUMBER(SEARCH("خطر", $A2)) كافية تماماً لإدارة القواعد اللونية.

لتطبيق هذه القاعدة على جدول بيانات كامل، يتم تحديد نطاق البيانات المستهدف (مثلاً من A2 إلى D100)، ثم فتح مدير قواعد التنسيق الشرطي واختيار “استخدام صيغة لتحديد الخلايا التي سيتم تنسيقها”. يتم إدخال صيغة الفحص مع مراعاة تثبيت العمود باستخدام علامة الدولار ($A2) ليتم تلوين الصف بأكمله عند احتواء خلية العمود A على الكلمة المحددة، واختيار لون التعبئة والخط المطلوبين.

تتطلب إدارة القواعد المتعددة فهماً دقيقاً لنظام أسبقية التنسيقات (Rule Precedence) داخل إكسيل؛ حيث يجب ترتيب القواعد بحيث تسبق الشروط الأكثر تخصيصاً الشروط العامة، مع تفعيل خيار “إيقاف إذا تحقق الشرط” (Stop If True) عند الرغبة في منع تداخل الألوان وتضارب الأنماط التنسيقية على السجل الواحد، مما يضمن عرضاً بصرياً فائق الوضوح والانضباط.

9.2 تقييد إدخال البيانات باستخدام أدوات التحقق من الصحة (Data Validation)

تُمثل أداة التحقق من صحة البيانات (Data Validation) خط الدفاع الأول لمنع دخول البيانات المشوهة أو غير المكتملة إلى جداول النظام. بالاعتماد على صيغ الاحتواء النصي، يمكن فرض قيود صارمة على المستخدمين تجبرهم على إدخال نصوص تلتزم بهياكل أو كلمات مفتاحية إلزامية لا تصح المعاملة بدونها.

لتطبيق هذا القيد، يتم تحديد النطاق المراد حمايته، وفتح نافذة “التحقق من صحة البيانات”، واختيار المعيار “مخصص” (Custom)، ثم كتابة الصيغة الشرطية:

=ISNUMBER(SEARCH("@company.com", A2))

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

ولتعزيز تجربة المستخدم، يُتيح إكسيل تصميم رسائل خطأ مخصصة (Custom Error Alerts) تظهر للمستخدم عند مخالفة الشرط، تشرح له بدقة طبيعة الخطأ المرتكب والمعايير المطلوبة للإدخال الصحيح، مما يُقلص زمن تدريب الموظفين ويضمن أعلى مستويات النظافة الهيكلية للبيانات من المنبع.

9.3 إنشاء مؤشرات ولوحات معلومات ديناميكية (Dashboards)

تُشكل صيغ التحقق من الاحتواء النصي المحرك الخفي وراء تشغيل لوحات المعلومات التفاعلية (Dashboards) المتقدمة. فمن خلال تصنيف البيانات النصية إلى مخرجات قياسية، يمكن ربط هذه النتائج بأدوات العرض المرئي مثل الرسوم البيانية التفاعلية (Dynamic Charts) ومؤشرات الأداء اللحظية لتحديث الإحصاءات بمجرد تدفق سجلات جديدة إلى النظام.

تتكامل هذه المخرجات بسلاسة مع الجداول المحورية (Pivot Tables)، حيث تُستخدم الأعمدة المحسوبة القائمة على صيغة IF(ISNUMBER(SEARCH())) كحقول تجميع رئيسية لفرز المبيعات حسب قطاعات السوق أو فئات المنتجات غير المصنفة مسبقاً. كما يتيح ذلك ربط مقاسم العرض (Slicers) بهذه الحقول لتوفير تجربة تصفية سلسة وجذابة لمديري المؤسسات ومتخذي القرار.

علاوة على ذلك، يمكن ربط صيغ الاحتواء بمربعات الاختيار (Checkboxes) وقوائم الإسقاط (Drop-Down Lists) في لوحة القيادة؛ بحيث يقوم المستخدم باختيار الكلمة المفتاحية من القائمة لتتغير على إثرها كافة التحليلات والرسوم البيانية في لوحة التحكم ديناميكياً استجابةً للشرط المحدد، مما يُحول جداول إكسيل التقليدية إلى تطبيقات أعمال برمجية متكاملة وفائقة التفاعل.

10. استراتيجيات معالجة الأخطاء وتحسين الأداء الحسابي في الجداول الضخمة

10.1 التعامل مع الخلايا الفارغة والمراجع غير الصالحة

يُعد التعامل مع الخلايا الفارغة والمراجع التالفة من أهم متطلبات بناء النماذج المالية والتحليلية المستقرة؛ إذ تُظهر دالة SEARCH سلوكاً خوارزمياً غير متوقع عندما يكون معامل البحث المستهدف (find_text) خلية فارغة تماماً، حيث تفترض الدالة أن الفراغ يعادل موضع البداية (المحرف 1)، مما يجعلها تُرجع الرقم 1 وتطلق نتيجة إيجابية خاطئة (False Positive) حتى وإن كانت الخلية المفحوصة فارغة أيضاً.

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

=IF(OR(ISBLANK(A2), ISBLANK($E$1)), "فارغ", IF(ISNUMBER(SEARCH($E$1, A2)), "Yes", "No"))

كما تُعد دالة الحماية العامة IFERROR صمام أمان إضافي لا غنى عنه لتطويق أي أخطاء جانبية غير متوقعة قد تنشأ عن تلف مراجع الخلايا (مثل خطأ #REF!) أو القسمة على الصفر في الصيغ المركبة الممتدة. يُغلف التعبير كاملاً بـ IFERROR لضمان استقرار العرض:

=IFERROR(IF(ISNUMBER(SEARCH("هدف", A2)), "Yes", "No"), "خطأ في المرجع")

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

10.2 تحسين سرعة الحساب وإدارة استهلاك الذاكرة

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

من أهم قواعد تحسين الأداء تجنب الإشارة إلى النطاقات العمودية الكاملة مثل A:A أو B:B داخل الصيغ، واستبدالها بنطاقات محددة بعناية (مثل A2:A10000) أو استخدام جداول إكسيل الديناميكية ذات الهيكلية المهندسة (Excel Tables). تعتمد الجداول المهيكلة على تسميات موجهة تفحص البيانات الفعلية فقط وتتجاهل ملايين الخلايا الفارغة في قاع الورقة، مما يوفر موارد الذاكرة بشكل ملحوظ.

كما يُوصى بشدة في معالجة البيانات التاريخية والأرشيفية التي لم تعد تتطلب تحديثاً دورياً بتحويل الصيغ المركبة بعد تنفيذها إلى قيم ثابتة ومجردة عبر خيار “لصق كقيم” (Paste Special Values). تُحرر هذه الخطوة إكسيل من أعباء إعادة تقييم مصفوفات السلاسل النصية المعقدة في كل دورة حسابية، مما يستعيد خفة المصنف وسرعته الأصلية الفائقة.

10.3 أفضل الممارسات لتنظيف النصوص قبل المعالجة (Data Cleansing)

تُمثل مرحلة تنظيف البيانات النصية (Data Cleansing) الخطوة التمهيدية الإلزامية لضمان نجاح وموثوقية عمليات البحث الشرطي. فالكثير من حالات فشل المطابقة لا تعود إلى عيب في صيغة SEARCH أو FIND، بل إلى وجود شوائب نصية غير مرئية تفصل بين الكلمات أو تحيط بها وتمنع خوارزميات إكسيل من التعرف على التطابق الحقيقي.

تتصدر دالة TRIM قائمة أدوات التنظيف النصي التي يجب دمجها مع الصيغ؛ وتختص هذه الدالة بحذف كافة المسافات الزائدة البادئة واللاحقة للسلسلة النصية، واختزال المسافات المتكررة بين الكلمات لتصبح مسافة فردية قياسية واحدة. وإلى جانبها، تبرز دالة CLEAN المخصصة لحذف أول 32 محرفاً غير قابل للطباعة في ترميز ASCII ذي الـ 7 بت، وهي الرموز الخفية وفواصل الأسطر التي غالباً ما تتسرب عند استيراد البيانات من أنظمة قواعد البيانات القديمة أو ملفات الويب النصية.

تُدمج هذه الدوال الوقائية مباشرة داخل معامل البحث والنص المفحوص لصناعة محرك فحص منقى بالكامل:

=IF(ISNUMBER(SEARCH("مكتمل", TRIM(CLEAN(A2)))), "Yes", "No")

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

11. البدائل الحديثة في الإصدارات المتقدمة: دوال Excel 365 وDynamic Arrays

11.1 التصفية المباشرة باستخدام دالة FILTER مع ISNUMBER وSEARCH

أحدث إطلاق محرك المصفوفات الديناميكية (Dynamic Arrays) في إصدارات Microsoft 365 ثورة جذرية في طرق معالجة واستخراج البيانات النصية؛ حيث لم يعد المحلل بحاجة إلى إنشاء أعمدة مساعدة (Helper Columns) تحتوي على صيغ IF لتحديد الصفوف المطابقة ثم تصفيتها يدوياً، بل أصبح بإمكانه استخراج البيانات المطابقة لحظياً في جدول منفصل باستخدام دالة FILTER المتقدمة.

تُدمج مصفوفة ISNUMBER(SEARCH()) مباشرة داخل المعامل الشرطي (include) لدالة FILTER، لتنسكب النتائج تلقائياً في ورقة العمل (Dynamic Spilling) دون الحاجة لسحب الصيغة:

=FILTER(A2:D100, ISNUMBER(SEARCH("معتمد", B2:B100)), "لا توجد سجلات مطابقة")

يقوم هذا السطر البرمجي الواحد بفحص كافة السجلات في النطاق B2:B100، واستخراج الصفوف الكاملة المقابلة من النطاق A2:D100 التي تحتوي على كلمة “معتمد”، وتوليد مصفوفة حية تتحدث لحظياً بمجرد تعديل أو إضافة أي بيانات جديدة في الجدول الأصلي، مما يختصر عشرات الخطوات اليدوية ويؤسس لنماذج تقارير آلية غاية في القوة والبساطة.

11.2 الثورة القادمة: دوال التعابير النمطية الجديدة (REGEXTEST, REGEXEXTRACT)

أعلنت شركة مايكروسوفت عن تقديم الدعم الأصلي للتعبيرات النمطية (Regular Expressions) في إصدارات Excel 365 التجريبية والمتقدمة، عبر إطلاق حزمة دوال جديدة تُعد البديل العصري والشامل لكافة التراكيب التقليدية الملتوية؛ وتتصدرها دالة REGEXTEST المصممة خصيصاً للتحقق من احتواء النصوص ومطابقة الأنماط المعقدة في خطوة واحدة فائقة السلاسة.

تُغني دالة REGEXTEST عن دمج ISNUMBER و SEARCH تماماً؛ إذ إنها مبرمجة داخلياً لإرجاع القيمة المنطقية TRUE أو FALSE مباشرة بمجرد فحص النمط النصي، مما يسمح بكتابة صيغة الاحتواء بالشكل المباشر التالي:

=IF(REGEXTEST(A2, "mavs", 1), "Yes", "No")

حيث يُشير المعامل 1 في الدالة إلى عدم الحساسية لحالة الأحرف. كما تفتح التعبيرات النمطية آفاقاً غير مسبوقة لبناء شروط فحص بالغة التعقيد لا يمكن للصيغ الكلاسيكية تحقيقها، مثل التحقق من احتواء الخلية على رقم هاتف بصيغة محددة، أو اكتشاف العناوين التي تحتوي على أرقام بريدية تبدأ بنمط رقمي محدد، مما يرفع إكسيل إلى مصاف لغات البرمجة المتقدمة في معالجة السلاسل النصية.

11.3 تطوير دوال مخصصة مبسطة باستخدام دالة LAMBDA

تُمثل دالة LAMBDA إحدى أعظم النقلات النوعية في تاريخ إكسيل؛ حيث تتيح للمستخدمين ابتكار وتطوير دوالهم المخصصة بالكامل دون الحاجة لكتابة شيفرات VBA المعقدة. من خلال LAMBDA، يمكن تغليف الصيغة المركبة الطويلة IF(ISNUMBER(SEARCH())) داخل دالة نظيفة ومخصصة تحمل اسماً بديهياً مثل CONTAINS وإعادة استخدامها في كافة أرجاء المصنف بسهولة تامة.

يتم بناء الدالة المخصصة في مدير الأسماء (Name Manager) وفق التعريف التالي:

=LAMBDA(text, substring, ISNUMBER(SEARCH(substring, text)))

وبعد حفظ هذا التعريف باسم CONTAINS، يستطيع أي مستخدم للمصنف كتابة الصيغة الشرطية بأبسط شكل ممكن وأكثره وضوحاً:

=IF(CONTAINS(A2, "تصفية"), "خصم 20%", "سعر عادي")

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

12. دليل إرشادي منهجي وأفضل الممارسات لإدارة النصوص والبيانات المنطقية

12.1 قواعد اختيار الصيغة المناسبة وفقاً لحجم وهيكل البيانات

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

  • البيانات العامة غير المنظمة (الإصدارات الكلاسيكية والحديثة): يُعتمد التركيب القياسي =IF(ISNUMBER(SEARCH(find_text, within_text)), value_if_true, value_if_false) لضمان أقصى درجات التوافق والمرونة وتجاهل حالة الأحرف.
  • الأكواد المشفرة والبيانات الحساسة للحالة (Case-Sensitive): يُلجأ حصراً إلى تركيبة =IF(ISNUMBER(FIND(find_text, within_text)), value_if_true, value_if_false) لفرض التطابق الثنائي الصارم ومنع الأخطاء الوظيفية.
  • بيئات العمل الحديثة (Excel 365) والتصفية الشاملة: تُستخدم دوال المصفوفات المباشرة مثل FILTER مدمجة مع SEARCH أو دوال REGEXTEST و LAMBDA المخصصة لاختزال بنية الصيغ ورفع كفاءة المعالجة.

كما تقتضي قواعد النمذجة الجيدة توثيق الصيغ المركبة المعقدة من خلال إضافة تعليقات توضيحية داخل أوراق العمل أو تخصيص دليل للبيانات (Data Dictionary) في ورقة مستقلة، لشرح الغرض من معايير البحث والمنطق المتبع، مما يضمن سهولة قراءة ومراجعة النموذج من قِبل المدققين وفرق العمل اللاحقة.

12.2 منهجية الفحص والتدقيق (Formulas Auditing) للتحقق من دقة النتائج

يُمثل التدقيق الحسابي خطوة جوهرية لا غنى عنها قبل اعتماد أي نموذج تحليلي؛ وتوفر بيئة إكسيل أدوات تشخيصية متطورة للتحقق من صحة عمل الصيغ المركبة. تأتي في مقدمة هذه الأدوات أداة “تقييم الصيغة” (Evaluate Formula) المتاحة في تبويب “صيغ” (Formulas)، والتي تتيح للمحلل تتبع خطوات التنفيذ الخوارزمي لحظة بلحظة وبشكل تفاعلي من الداخل إلى الخارج.

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

كما تشمل منهجية التدقيق الاحترافية بناء “عينات اختبار قياسية” (Test Suites) تحتوي على الحالات الحدية (Edge Cases)؛ مثل الخلايا الفارغة، والنصوص التي تتضمن رموزاً خاصة، والكلمات المكررة، وحالات تباين الهمزات والمسافات الزائدة. يضمن اختبار النموذج على هذه العينات المتطرفة صمود الصيغ البرمجية أمام تقلبات البيانات الحقيقية وتجنب صدور قرارات إدارية مبنية على نتائج حسابية خاطئة.

12.3 الخلاصة والتوصيات التنفيذية لرفع كفاءة النمذجة في إكسيل

يُعد إتقان الصيغة المركبة =IF(ISNUMBER(SEARCH())) مهارة محورية وأساسية لكل من يتطلع إلى احتراف إدارة وتحليل البيانات في برنامج إكسيل. إن هذه التركيبة الهندسية، رغم بساطة مكوناتها الفردية، تُشكل الأساس المنطقي لمحاكاة الوظائف الشرطية المتقدمة، وسد الفجوة المعمارية الناتجة عن غياب دالة CONTAINS المباشرة، مما يمنح المحلل مرونة فائقة في تطويع البيانات وتصنيفها آلياً.

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

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

المراجع (References)

اقتباس هذا المقال

looti, M. (2026, أغسطس 31). إكسيل: صيغة بسيطة لـ “إذا كان يحتوي على”. عرب سايكلوجي. https://arabpsychology.com/statistics/excel-simple-formula-if-contains/
looti, Mohammed. “إكسيل: صيغة بسيطة لـ “إذا كان يحتوي على”.” عرب سايكلوجي, 31 أغسطس 2026, https://arabpsychology.com/statistics/excel-simple-formula-if-contains/.
looti, Mohammed. “إكسيل: صيغة بسيطة لـ “إذا كان يحتوي على”.” عرب سايكلوجي. أغسطس 31, 2026. https://arabpsychology.com/statistics/excel-simple-formula-if-contains/.