اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

إستخدام الدالتين IF و AND للعديد من الشروط


إذهب إلى أفضل إجابة Solved by فضل حسين,

الردود الموصى بها

السلام عليكم ورحمة الله وبركاته

أحاول إنشاء معادلة لأكثر من خمسة عشر شرط بإستخدام الدالتين IF  و AND  لكنها بعد تنفيذ هذا العدد من الشروط ستكون طويلة جدا جدا

وسأكتفى بعد طلب الاذن من حضراتكم بعرض ثلاثة شروط على النحو التالى 

**** لو الخلية 8A تحتوى على كلمة الاول وجملة النطاق من الــ B8 الى E8 أكبر من أويساوى 10000 لا تعطى شيئا أى فراغ

         وان لم يكن كذلك ( أقل من الـ 10000 ) فسيتم طرح مبلغ الــ 10000.00 من جملة  النطاق من الــ B8 الى E8 

**** لو الخلية A8 تحتوى على كلمة الثانى وجملة  نفس النطاق أكبر من أويساوى 8000 لا تعطى شيئا أى فراغ

         وان لم يكن كذلك ( أقل من الـ 8000 ) فسيتم طرح مبلغ الــ 8000 من نفس النطاق .

***** لو الخلية 8A تحتوى على كلمة  الثالث وجملة  نفس النطاق أكبر من أويساوى 6000 لا تعطى شيئا أى فراغ

          وان لم يكن كذلك ( أقل من الـ 6000 ) فسيتم طرح مبلغ الــ 6000 من نفس النطاق .

كيف يمكن تحقيق هذه المسألة بمعادلة مختصرة بطريفة أخرى ****  أو كود برمجى يفوم بتفيذ هذة الشروط **** برجاء الاطلاع على المرفق التالى 

شاكر فضل حضراتكم وجزاكم الله خيرا

محاولة.xlsx

تم تعديل بواسطه ناصرالمصرى
اضافة معادلة
رابط هذا التعليق
شارك

السلام عليكم

أقدم لك حلين في المرفق، الأول تبسيط لمعادلات IF والثاني باستعمال دوال أخرى (يمكن إضافة شروط أخرى)... أرجو أن تفي الغرض المطلوب...

بن علية حاجي

محاولة.xlsx

  • Like 2
رابط هذا التعليق
شارك

وعليكم السلام ورحمة الله وبركاته

شاكر فضل حضرتك أستاذى الفاضل / بن عليه حاجى  لمشاركتك الطيبة فبارك الله فى عمرك وجزاكم الله تعالى عنى خير الجزاء

رغم تبسيطكم القيم لمعادلات IF  فى مرفقى ومع إضافة باقى الشروط فى الملف الاصلى بإستخدام الحلين المقترحين من سيادتكم 

إلا أنه أصبح الملف ثقيل جدا جدا نظرا لما يحتويه على مايقرب من 22000 ألف صف 

أعتقد أننا فى حاجة إلى داله معرفه UDF لتحقيق هذة الشروط بحيث يمكن إستدعاء هذة الدالة من خلال معادله بسيطة 

ولكنى لست متمكن من تنفيذ ذلك بإستخدام الــ VBA  فكيف يمكن تحقيق ذلك 

شاكر فضل حضرتك وجزاكم الله خيرا

 

 

تم تعديل بواسطه ناصرالمصرى
رابط هذا التعليق
شارك

شاكر فضل حضرتك أستاذى الفاضل / فضل على إهتمامكم البالغ لمشاركتى فى هذا الموضوع

فجزاكم الله تعالى خير الجزاء **** نعم بالتأكيد هو المطلوب من حيث النتائج

ولكن هناك بعض الامور الفنية التى حاولت العمل عليها دون جدوى لعدم خبرتى فى مجال الــ VBA

ألا وهى من الضرورى وعلى حد علمى أنه يجب الاعلان عن المتغيرات Option Explicit

فضلا عن جزئية اهتزاز الشاشة فى بداية ونهاية الكود 

النقطة الاخيرة وهى أننى لا أريد  إستخدام أية Buttons  لتنفيذ تلك العمليات الحسابية

بقدر ما أريد أن تتم هذة العمليات تلقائيا فكيف يمكن تحقيق ذلك .

أضفت فى هذا المرفق شرطا أخر  مع أختلاف نطاق الجمع ولحالتيين فقط وهما يعملان بطريقة ممتازة من حيث النتائج

لكنى فى حاجة الى ضبط النقاط التى نوهت عنها بعاليه هذا بعد طلب الإذن فضلا  لا  أمرا 

شاكر فضل حضرتك وجزاكم الله خيرا

 

محاولة بالكود +1111.xlsm

تم تعديل بواسطه ناصرالمصرى
اضافة مرفق
رابط هذا التعليق
شارك

  • أفضل إجابة

الاستاذ الفاضل / ناصر

بعد التحية

ارجو تقبل اسفى لتأخيرى على الرد ولكن كان التأخير خارج عن ارادتى فكان النت عندى مقطوع ولااعرف ايه السبب

اخى العزيز الملف المرفق زر الكود يعمل به فقمت بتعريف المتغير ووضعت امر لاهتزاز الشاشة هذا بالنسبة لزر الكود

ووضعت كود فى الورقة رقم 1 فى زر الحدث change كل ماتغير فى اى خلية يتغير تلقائيا الناتج 

شوف ويارب يكون ده المطلوب وينال رضاكم 

فاصبح عندك زر الكود والحل الاخر بتغيير اى خلية يظهر الناتج تلقائيا

 

محاولة بالكود +1111.xlsm

رابط هذا التعليق
شارك

أخى الفاضل الاستاذ / فضل حسين

بداية جزاكم الله خيرا وبارك فيكم ولا داعى إطلاقا على تقديم أى إعتذار 

العكس تماما أنا من يجب تقديم الاعتذار لأخذ جزء من وقتكم الثمين فجزاكم الله تعالى عنى خير الجزاء

اعتقد أن هناك حلقة تكرارية بهذا السطر من الكود من بداية الصف الثامن وحتى الصف الــ 500

For i = 8 To 500

كيف يمكن تغيير هذا السطر لنجعله الى أخر صف به بيانات أو ماهى الجملة التى يجب تغييرها أو ماهو المقصود بالرقم 500

أعتذر لجهلى فى هذه النقطة ***** شاكر فضل حضرتك وجزاكم الله خيرا

رابط هذا التعليق
شارك

اتفصل يااستاذا / ناصر
lastrow = Cells(Rows.Count, "a").End(xlUp).Row       هذا السطر بيعرف اخر صف به بيانات

For i = 8 To lastrow   حلقة تكرارية جعلت البداية 8 والنهاية اخر صف عندك فى البيانات

ملحوظة لجعل الاهتزاز الخاص بالشاشة اقل 

ضع كلمة rem  قبل سطر الكود الاخير ليكون كالاتى

 rem Application.ScreenUpdating = true

وياحبيبى احنا كلنا بنتعلم وياما تعلمنا من هذا المنتدى العظيم ومازلنا نتعلم 

رابط هذا التعليق
شارك

فضلك الله تعالى يا أستاذ فضل وجعل الله لك نصيبا من إسمك الكريم

بهذه التوضيحات أكتملت الفائدة ***** شاكر فضل حضرتك*** تقبل وافر تقديرى واحترامى *** وجزاكم الله خيرا

 

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information