اذهب الي المحتوي
أوفيسنا

طلب دالة أو ماكرو لجلب بيانات وفق شرط محدد


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

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

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

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

أحتاج المساعدة في تركيب دالة أو ماكرو لإستكمال البيانات حسب الشرح التفصيلي المرفق في الملف ... ولكم جزيل الشكر مقدما

Pic1.jpg

Pic2.jpg

Thanks.xlsx

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

وعليكم السلام -يمكنك استخدام هذه المعادلة المصفوفة (Ctrl+Shift+Enter)

عذراً أستاذى سليم فلا أرى رد حضرتك بارك الله فيك

=INDEX(DATA!$D$2:$D$19,MODE(IF(DATA!$A$2:$A$19=$A2,MATCH(DATA!$D$2:$D$19,DATA!$D$2:$D$19,0))))

Thanks1.xlsx

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

إستاذي الفاضل

قد احتاج الى إضافة صغيرة

image.png.ab70d9803a208b688c407029dff7334d.png

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

image.png.faba48736fdc858a9b4f9e390537a8f5.png

بينما أرغب في أن تتعرف الدالة على السعر صاحب الكمية الأكبر كما في المثال السابق التاجر محمد

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

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

وهيإرجاع قيمة السعر الذي يقابله أكبر كمية لذلك السعر

ولك جزيل الشكر وعظيم الامتنان

تعديل الاستاذ سليم حاصبيا.xlsx

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

أستاذي الفاضل السيد  سليم حاصبيا

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

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

ولعل الأمثلة التالية توضح أكثر حيث أوردتم بما تفضلتم به في الحل الأول  

image.png.5cfee8f52ee88ed48b59defc7da1904e.png

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

كما تفضلتم في إجابتكم الثانية

image.png.cbdd6d6b3b4aa710072c1d921cebb57d.png

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

لكن المطلوب يمكن أن يكون أوضح من خلال الشرح بهذه الطريقة

image.png.05f8294542b4c86aac27919fc508d487.png

 

وبعد عدة محاولات ومحتولات وأكثر من 7 ساعات عمل توصلت الى حل يوفر المطلوب لكن أطمح أن أنتهل من علمكم ليكون الحل أفضل وهو عن طريق إستخدام عمود وسيط

image.png.872eb3e9e62818d83f0b66551e46cac6.png

 

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

 

ولكم مني خالص التحية

وألف ألف شكر

 

Hashem_3.xlsx

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

  • أفضل إجابة

ربما ينفع هذا الماكرو

Option Explicit

Sub My_macro()
Dim D As Worksheet, RO_A%, i%, m%
Dim T As Worksheet
Dim arr(), it, MX, Cret, ky
Dim Dic As Object

Set D = Sheets("DATA")
Set T = Sheets("TEST")
RO_A = D.Cells(Rows.Count, 1).End(3).Row
arr = Array("A", "B", "C")
For Each it In arr

Set Dic = CreateObject("Scripting.Dictionary")
  
  For i = 2 To RO_A
    If D.Cells(i, 1) = it Then
      Dic(D.Cells(i, 4).Value) = _
      Dic(D.Cells(i, 4).Value) + Val(D.Cells(i, 3))
    End If
  Next i
      
      MX = Application.Max(Dic.Items)
      For Each ky In Dic.Keys
          If Dic.Item(ky) = MX Then
            Cret = ky
            Exit For
          End If
      Next ky
 
   T.Cells(m + 2, "E") = Cret
   m = m + 1
   Dic.RemoveAll
  Next it
 Set D = Nothing: Set T = Nothing
 Erase arr: Set Dic = Nothing

End Sub

الملف مرفق

Hashem_Dict.xlsm

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information