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

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

قام بنشر

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

اريد كود نفس الكود التالي مع العلم أن الكود التالي هو لـ  sumifs

 XX  = Application.WorksheetFunction.SumIfs(sh.Range("f11:f" & LR2), sh.Range("c11:c" & LR2), YY)

وشرحة كالتالي :

xx =  متغير يتم تخزين القيمة الناتجة فية

f11: f  =    هو العمود الذي سوف نجمعه وهو الارقام  يبتدى من  f11   وحتى نهاية  f    وهو  (  sum_range ) >>>

lr2 : هو متغير  يقوم  بأخذ قيمة اخر صف موجود فية البيانات من الاسفل  وله الكود التالي (  LR2 = Cells(Rows.Count, 2).End(xlUp).Row  ..

c11: c  هو العمود الذي راح نبحث فية  عن تطابق   الكلمة  وهو ( criteria _range ) >>

YY =  وهو متغير يرمز للكلمة أو الرقم الذي نبحث عنه .. في العمود  سي .. واسم هذا المتغير  ( criteria ) >>

دالة MAXIF -MINIF.rar

  • أفضل إجابة
قام بنشر (معدل)

                       الســــلام عليكم

يمكن استدعاء تقريبا كافة معادلات الاكسيل فى ال VBA  باستخدام الامر                                       Application.Worksheetfunction     

وهو ما فعلتة حضرتك واستدعيت الدالة   SUMIF   ولكن    MAXIF     و      MINIF     ليست ضمن معادلات الاكسيل وانما تم مزج  IF  مع   MAX     فى معادلة صفيف   CTRL+SHIFT + ENTER    لايجاد اكبر قيمة بشرط  ... وكذلك الحال فى MINIF

                    لهذا لاحظ ما يلى

                               do.php?img=33765

                         

 

                              do.php?img=33766

يلاحظ عند استخدام   Evaluate   تم قراءة المحتوى ما بين ال   "  "  اى ال  1+1   كمعادلة  وتم ارجاع الناتج  على خلاف  FORMULA التى نسخت المعادلة الى الخلية

 وسنستخدم  Evaluate  فى تنفيذ MAXIF  و  MINIF 

 Range("D7").Value = Evaluate("=MAX(IF(D10:D13=B11,$E10:$E13))")
Range("D15").Value = Evaluate("=Min(if(D10:D13=B11,E10:E13))")

لاحظ كيف تم كتابة المعادلة بدون استخدام وسائط الاشارةالى النطاقات فى ال VBA  ك   RANGE  او ...  فقط تم كتابة المعادلة وكانها تكتب على ورقة العمل  ما بين ("  ")

ولكن  كيف سيعرف الاكسيل صفحة العمل التى تحوى تلك النطاقات  فقط لاحظ ما يلى

Range("D7").Value = Worksheets("  ورقة1   ").Evaluate("=MAX(IF(D10:D13=B11,$E10:$E13))")
 Range("D15").Value = Worksheets("  ورقة 1 ").Evaluate("=Min(if(D10:D13=B11,E10:E13))")

 

اليك المرفق

 دالة MAXIF -MINIF.rar

 

 

تم تعديل بواسطه خالد الرشيدى
  • Like 6
  • Thanks 1
قام بنشر

لكن  حصلت مشكلة في الكود عندما جيت أنقله ,,  وهي  المتغيرات .. 

حيث أن العمود d .. ليس له مدى محدد .. حيث يبداء من قيمة متغير وينتهي الي قيمة متغير .. ومثلة العمود e

كذالك القيمة التي  هي criteria  =  أيضاً متغير كما هو بالكود التالي .

 

 ooo = Worksheets("seen").Evaluate("=MAX(IF(("d" & LR3, "d" & LR4)=xx3,("e" & LR3, "e" & LR4))")

اقصد البداية من المتغير LR3  وينتهي  في  LR4   ووضعت هذه المتغيرات بدل أرقام الصفوف .

حسب القيمة التي هي في المتغير  xx3  والتي انت مسميها  b11 >>>  ووضعت هذا المتغير بدل المتغير الثابت .

 

 

 

قام بنشر

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

حاول تساعد الأعضاء عشان يقدروا يساعدوك

تقبل تحياتي

عموماً جرب الكود التالي

إذا ظبطت معاك كان بها فهي نعمة من الله

إذا لم تظبط معاك فلن أساهم في الموضوع إلا بعد إرفاق الملف الأصلي (يسر علينا كي تجد المساعدة)

Sub Max()
    Dim LR3 As Long, LR4 As Long, XX3
    
    LR3 = 10: LR4 = 13
    XX3 = Range("B11").Value
    
    Range("D7").Value = Worksheets("Seen").Evaluate("=MAX(IF(D" & LR3 & ":D" & LR4 & "= " & XX3 & ",E" & LR3 & ":E" & LR4 & "))")
End Sub

تقبل تحياتي

  • Like 2
قام بنشر

تحياتي لك  معلمي الاخ ياسر  في مثل يقول (( العين ما تعلى على الحاجب )) :wavetowel:  خيرك سابق كثير علينا .. وين مارحنا وين ما جينا ..

عالعموم .. رفعت لك الملف كامل .. بعد أن وضعت الكود فية .. هو مشى معايا بدون ما أعرف المتغيرات .

ولكن هل هذا الحل الذي قمت فية سليم ؟

هل يوجد مشاكل منه في المستقبل ..  أخاف اتورط مع الحسابات بعدين ..  :Rules: .. أو اكون ظالم بعض الموظفين :') ..

حافز المبيعات.rar

اقصد حلي انا هل هو سليم

قام بنشر

الحمد لله أن تم المطلوب على خير

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

يعني مع كل تطور بالملف ينصح بعمل نسخة احتياطي حتى إذا حدثت مشكلة ترجع لآخر نسخة سليمة ولا يضيع كل العمل هباء (مفيش حاجة مضمونة)

  • Like 1

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