بحث هذه المدونة الإلكترونية

الأحد، 2 أبريل، 2017

دالة IF الشرطية وآلية عملها


 دالة IF الشرطية وآلية عملها





لسلام عليكم, تحدثنا سابقاً عن دالة IF الشرطية وكيفية استخدامها, لكنني احببت توسعة الكلام قليلاً عن هذه الدالة لاهميتها لكل مستخدمي برنامج اكسل Excel. إن فهم آلية عمل دالة IF الشرطية سيزيد من درجة فعالية استخدامنا لها ويقلل من احتمالية ارتكابنا لاي خطأ في طريقة بناء حدودها. اتكلم هنا عن المرات التي استخدمنا فيها دالة IF الشرطية لتعود لنا بنتيجة غير التي نتوقعها. هل كان من الممكن كتابة الدالة من أول مرة بدون اخطاء؟ المفتاح لهذا الأمر برأيي يتمثل في فهم آلية عملها كدالة وكيفية تطبيقها من قبل اكسل Excel.

كيف تعمل دالة IF الشرطية:

تخيل معي أنك واثناء قيادتك لسيارتك في طريق ما تجد نفسك امام نهاية الطريق والذي يتضح انه من النوع T أي أنك لن تستطيع الإستمرار بالقيادة للأمام وانما يمكنك فقط التوجه يميناً أو يساراً. في هذه اللحظة, ستطرح على نفسك السؤال التالي “هل اتجه يميناً؟” لو كانت اجابتك نعم, اذاً ستتجه يميناً أما لو كانت لا, فأنت ستتجه بطبيعة الحال يساراً (على افتراض ان الوقوف او التراجع ليسا متاحين كخيارين في هذا الموقف).
الطريق كتشبيه لدالة If الشرطية
الطريق T كتشبيه لدالة If الشرطية

هذا هو تماماً آلية عمل دالة IF الشرطية. سؤال منطقي يتبعه أمرين لاكسل Excel الأول لارجاع قيمة ما في حال الجواب الايجابي والثاني لارجاع قيمة أخرى في حال الجواب السلبي. بالكلام عن السؤال أو الشرط المنطقي يجب أن يكون جوابه هو نعم True أو لا / خطأ False. مثلاً هل لون هذه التفاحة هو الأحمر؟ هل علامة الطالب اكبر من 50؟ هل راتب هذا الموظف أقل من 10000؟….) يمكن كذلك طرح اسئلة مركبة (عن طريق استخدام دالّات مساعدة) مثل (هل لون هذه التفاحة هو الأحمر ووزنها أكبر من 200 غرام؟, هل علامة هذا الطالب في مادة الرياضيات أو مادة العلوم أقل من 50؟).

آلية عمل دالة IF الشرطية المتداخلة – مثال 1:

حسناً, لنفترض أنه وعند اكمالنا لنزهتنا السابقة مع افتراض اننا توجهنا يساراً (الاتجاه الأحمر في لصورة ادناه),
نهاية أول شارع في رحلة دالة IF الشرطية
نهاية أول شارع في رحلة دالة IF الشرطية

سنكتشف لاحقاً نهاية مشابهة (من حيث المبدأ) لما مرّ معنا منذ قليل تتمثل بنهاية طريق من النوع T مع امكانية الذهاب يميناً أو يساراً,
نهاية ثاني شارع في رحلة دالة IF الشرطية
نهاية ثاني شارع في رحلة دالة IF الشرطية

نختار الاتجاه الأحمر مجدداً, لنجد نهاية طريق من النوع T مجدداً وهكذا مراراً وتكراراً,
رحلة دالة IF الشرطية
رحلة دالة IF الشرطية

يُمثل هذا المثال تماماً آلية عمل دالة IF الشرطية المتداخلة Nested If Statement حيث أن اكسل ومع كل أو بعض الإلتفافات, سيجد اسئلة منطقية جديدة تحدد هل سيستمر في نزهته خلال دالة IF المتداخلة أو سينهيها. طبعاً في مثالنا السابق, ستنتهي الرحلة مباشرةً في حال تم اتباع الطريق ذو اللون الأخضر والذي يمثل الجواب الايجابي لأي من الشروط المنطقية المستخدمة في هذه النزهة. لنأخذ مثالاً تطبيقياً ونرى هل اصبح فهمنا لهذه الدالة اكثر صفاءاً!
لديك قيمة مبيعات مدراء المبيعات في شركتك وتريد أن تحسب لهم قيمة عمولتهم والتي تُحسب كنسبة مئوية تصاعدية بمقدار 1% لكل 10000 من المبيعات. أي:
• 1% من قيمة المبيعات لمن كانت مبيعاته أقل او تساوي 10000
• 2% —————————————- أقل او تساوي 20000
• 3% —————————————- أقل أو تساوي 30000
• …
• 6% —————————————- أقل أو تساوي 60000
• 7% من قيمة المبيعات لمن كانت مبيعاته أكبر من 60000
في حال قمت بكتابة المعادلة بشكل صحيح, فإن اكسل Excel سيترجمها كالتالي,
• هل قيمة المبيعات أقل أو تساوي 10000, ارجع القيمة 1% في حال الايجاب وإلا فانتقل الى السؤال التالي,
• هل قيمة المبيعات أقل أو تساوي 20000, ارجع القيمة 2% في حال الايجاب وإلا فانتقل الى السؤال التالي, (لاحظ أننا لم نسأل هل قيمة المبيعات هي أكبر من 10000 و أقل أو تساوي 20000 والسبب أننا وبسبب فهمنا لآلية عمل دالة IF الشرطية فإن اكسل Excel لن يصل لهذه النقطة من رحلته لو لم تكن قيمة المبيعات أكبر من 10000 وإلا فانه كان سينفّذ جواب الشرط الايجابي لأول سؤال. طالما انه تجاوز أول سؤال, اذاً لاداعي لتذكير اكسل Excel بوجوده. لقد تجاوزته مركبتنا منذ زمن)
• هل قيمة المبيعات أقل أو تساوي 30000, ارجع القيمة 3% في حال الايجاب وإلا فانتقل الى السؤال التالي,
• …
• هل قيمة المبيعات أقل أو تساوي 60000, ارجع القيمة 6% في حال الايجاب وإلا فانتقل الى السؤال التالي,
• اذا كانت قيمة المبيعات لا تنطبق على أي من الشروط السابقة, اذاً ارجع القيمة 7% والنهاية.
عند قولي انتقل للسؤال التالي, فأنا اقصد هنا IF شرطية جديدة ولتي تم اضافتها كجواب للنفي بعد كل سؤال وذلك لربط جميع الاحتمالات في معادلة IF رئيسية واحدة تحوي أكثر من مستوى من مستويات IF المتداخلة
فكّر مرة أخرى بمثال السيارة, ألا يشبه مسارنا بالسيارة في المثال اعلاه بما فعلناه منذ قليل؟. حسناً, يوجد فرق بسيط جداً يتمثل بخط النهاية وهو غير الزامي ولكنني انصح به وبشدة وفكرته كالتالي, يمثّل السطر الأخير شرطاً مفتوحاً وهو اذا كانت القيمة لاتنطبق على ماسبق من شروط ارجع القيمة 7%. هذا يعني انه لو اننا وبالخطأ كتبنا القيمة التالي 3025.2.3 مكان قيمة المبيعات, اكسل Excel سيسأل نفسه عن كل الشروط السابقة حتى يصل الى الشرط الأخير والذي يقول في حال كانت القيمة لا تنطبق على ماسبق, ارجع 7% وهو ماسيرجعه اكسل وطبعاً النتيجة خاطئة لكن اكسل Excel لايتحمل هكذا خطأ كونه قام بتنفيذ ماطلب منه بدقة. مثال آخر, لو كنت تريد عزل قائمة الطلاب الناجيح بعلامة 50 واكثر عن الطلاب الراسبين لكنك بالخطأ كتبت الشرط أكبر من 50 (وليس أكبر أو يساوي) إذاً الطالب ذو العلامة 50 سيعتبر راسباً حسب المعادلة لكن هذا خطأ.
برأيي اكثر الاخطاء المرتكبة عند كتابة دالة IF الشرطية تتمثل باختيار شروط خاطئة لا تمثل الاحتمالات المطلوبة لذا يجب التنبه لهذه النقطة والعمل على طرح الشروط على شكل سلسلة من الاسئلة المنطقية المتعاقبة مع التأكد من تغطيتها لكل الاحتمالات المطلوبة.
اذاً الفكرة أنه قد يكون من الآمن اكثر ان تكتب كل الشروط منفصلة وتترك آخر احتمال للخطأ (أكثر من خمسين, ناجح أما أقل من خمسين فراسب وإلا ارجع “خطأ”), هذا الاجراء و حتى وان كان غير إلزامي لكنه أكثر اماناً و قد يحميك احياناً من اخطاءٍ كارثية. بناءاً عليه فإن الحل الأمثل في مثالنا السابق سيكون باستبدال آخر شرط فيما سبق بالشرطين التاليين,
• هل قيمة المبيعات أكبر من 60000, ارجع القيمة 7% في حال الايجاب وإلا فانتقل الى السؤال التالي,
• اذا كانت قيمة المبيعات لا تنطبق على أي من الشروط السابقة, اذاً ارجع القيمة “خطأ” والنهاية. (طبعاً يمكنك استبدال الكلمة خطأ بأي عبارة تناسب احتياجاتك).

آلية عمل دالة IF الشرطية المتداخلة – مثال 2:

الآن, هل من الممكن حل المثال السابق لكن ابتداءاً من الشريحة العليا باتجاه الأسفل؟ يمكن ذلك عن طريق تغيير طريقة بناء معادلة IF كالتالي (مع الأخذ بعين الاعتبار ابقاء آخر حد لاحتمال الخطأ),
• هل قيمة المبيعات أقل أو تساوي 60000, انتقل للسؤال التالي في حالة الايجاب وإلا فارجع القيمة 7%
• هل قيمة المبيعات أقل أو تساوي 50000, انتقل للسؤال التالي في حالة الايجاب وإلا فارجع القيمة 6%
• …
• هل قيمة المبيعات أقل أو تساوي 10000, انتقل للسؤال التالي في حالة الايجاب وإلا فارجع القيمة 2%
• هل قيمة المبيعات أكبر من الصفر, ارجع القيمة 1% في حالة الايجاب وإلا فارجع القيمة “خطأ” والنهاية.
أو يمكننا تصور حركة الاسئلة كحركة السيارة في الطريق التالي,
تطبيق على استخدام دالة IF الشرطية
تطبيق على استخدام دالة IF الشرطية

الفرق هنا ان الشروط المتعاقبة كانت في حالة الجواب الايجابي وليس جواب النفي كما في المثال الأول. الفكرة تبقى كما هي دون تغيير. هذا يوصلنا الى فكرتنا الختامية لهذه المقالة وهي اننا ممكن أن نتشعب في طرح اسئلتنا المنطقية واحداً تلو الآخر وذلك باضافة مستويات جديدة من IF الشرطية من جهتي جواب الايجاب وكذلك جواب النفي. مثل بسيط عن هذا التشعب, هل معدل الطالب التراكمي أكبر من 70%:
• اذا كان الجواب ايجابي, إذاً اطرح السؤال التالي (الذي يمثل بدوره مستوى جديد من دالة IF الشرطية), هل معدله في المواد العلمية أكبر من 60%؟ ارجع القيمة “ناجح للقسم العلمي” في حال كان الجواب ايجابي وإلا ارجع القيمة “ناجح للقيم الأدبي.
• اذا كان الجواب سلبي, إذاً اطرح السؤال التالي (الذي يمثل بدوره مستوى جديد آخر من دالة IF الشرطية), هل معدله أكبر من 40% إذاً ارجع القيمة “راسب – للدورة التكميلية” وإلا ارجع القيمة “راسب – للاعادة”.
دالة IF شرطية معقدة من الطرفين
دالة IF شرطية معقدة من الطرفين

ملاحظات أخيرة على عمل دالة IF الشرطية:

الاحظ وجود عدم وضوح احياناً لدى بعض المستخدمين لطبيعة عمل دالة IF الشرطية لذى احببت التنويه الى أن عملها ينحصر بارجاع قيم ضمن الخلية التي تحوي المعادلة فقط مما يعني أن دالة IF الشرطية لا يمتد تأثيرها على اي خلية اخرى (هذا مجال عمل لغة البرمجة VBA). كذلك يجب التنبه الى أن دالة IF الشرطية لا تحدث اي تأثير في التنسيقات حتى على الخلية التي تحوي المعادلة (يمكن تنفيذ ذلك من خلال استخدام دالة IF الشرطية من خلال خاصيّة التنسيق الشرطي).
----------------
المصدر 
viaexcel
إرسال تعليق