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

اريد دالة اكسل للجمع بشرط فاذا تحقق الشرط تجمع الخلايا المفلترة فقط


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

اريد دالة اكسل للجمع بشرط فاذا تحقق الشرط تجمع الخلايا المفلترة فقط يعني subtotal داخلها Sumif

=(SUBTOTAL(9;(sumif(g3:g8000;"200 مم";h3:h8000))))
 

 

لكن هذه الصيغه لا يقبلها اكسل حيث انه يريد بدل هذا الجزء (sumif(g3:g8000;   يريد  (g3:g8000 فقط

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

السلام عليكم

 

إستخدام المعادلة المركبة

كالتالي

=Sum_Ali(G3:G26;"200 مم")
Public Function Sum_Ali(rng As Range, الشرط$) As Double
Dim Irn As Range
Dim Cn#
Application.Volatile
'**************
 S$ = الشرط '"200 مم"
'**************
 For Each Irn In rng
    If Irn = S Then
     If Irn.Rows.Hidden = 0 Then
      Cn = Cn + Val(Irn.Offset(0, 1))
     End If
    End If
 Next
 Sum_Ali = Cn
End Function
رابط هذا التعليق
شارك

او هكذا

Public Function Sum_Ali(rng As Range, الشرط$) As Double
Dim Rr As Range
Dim Irn As Range
Application.Volatile
'**************
 s$ = الشرط '"200 مم"
'**************
 For Each Irn In rng
    If Irn = s And Not Irn.Rows.Hidden Then
     If Not Rr Is Nothing Then
       Set Rr = Union(Rr, Irn.Offset(0, 1))
        Else
       Set Rr = Irn.Offset(0, 1)
     End If
     End If
 Next
 Sum_Ali = Application.Sum(Rr)
End Function
رابط هذا التعليق
شارك

الاخ الكريم ( طالب علم مجتهد )

بارك الله فيك ونفع بك وجعله زخرا لك يوم القيامة 

لكن رجاء لا امرا ... انا اريد الدالة بنفس صيغة Sumif

يعني يكون الشرط من عمود مقابل للعمود المراد الجمع منه بحيث اذا طبق الشرط في عمود مثلا G3 فيحسب في الجمع الخانة  H3



جزاك الله خيرا  

 

مرفق ملف 


 

sheet.rar

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

الاخ العزيز جرب استخدام subtotal فقط

 

مع استخدام الفلاتر لتاريخ التنفيذ والطول م.ط

 

جرب واعلمنى بالنتيجة

sheet2.rar

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

تفضل 

Public Function Sum_Ali(rng As Range, الشرط$) As Double
Dim Rr As Range
Dim Irn As Range
Application.Volatile
'**************
 s$ = الشرط '"200 مم"
'**************
 For Each Irn In rng
    If Irn = s Then
     If Not Rr Is Nothing Then
       Set Rr = Union(Rr, Irn.Offset(0, 1))
        Else
       Set Rr = Irn.Offset(0, 1)
     End If
     End If
 Next
 Sum_Ali = Application.Subtotal(9, Rr)
End Function

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

الاخ ( عباد) ... بارك الله فيك 

الدالة  تعمل بشكل ممتاز

 

جزاك الله خيرا علي المساعده وبارك الله فيك وجعلك من عباده المخلصين


 

تم تعديل بواسطه 838383mohamed
رابط هذا التعليق
شارك

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

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



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

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

Important Information