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

sumifs داخل الكود


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

اخوانى الافاضل

لماذا لا تعمل الدالة داخل الكود وما هى الطريقة الصحيحة لاستخدامها فى الاكواد

Sub saad()

Application.ScreenUpdating = False

On Error Resume Next

Dim a, d, z As Range

ww = Application.WorksheetFunction

Set d = Sheets("saad").Range("c5:c1500")

Set a = Sheets("saad").Range("e5:e1500")

Set z = Sheets("saad").Range("b5:b1500")

Y = Sheets("saad").Cells(Sheets("saad").Rows.Count, Sheets("saad").Range("a5:a1000").Column).End(xlUp).Row

For i = 6 To Y

Cells(i, "c") = ww.SumIfs(a, z, Cells(i, "b"), d, Range("c5:c5"))

Next i

1.rar

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

السلام عليكم

 

بداية هذا السطر يتخطى الاخطاء و بذلك لن تعلم ما او اين الخطأ بالظبط فمن الافضل حذفه ام لم يكن وضعه ضروري 

On Error Resume Next

وهذا السطر اعتقد يجب ان يضاف له SET هكذا

Set ww = Application.WorksheetFunction

هذا لا بأس به لكن يمكن اختصاره ليصبح

Y = Sheets("saad").Range("a" & Rows.Count).End(xlUp).Row

اما بالنسبه لهذا فسوف يعمل لكن لاحظ ان عمود النتيجة هو C و C ايضا جزء من شروط المعادلة لا اعلم ان كان هذا مقصود 

Cells(i, "c") = ww.SumIfs(a, z, Cells(i, "b"), d, Range("c5"))

و هكذا يصبح الكود النهائي 

Sub saad()

Set ww = Application.WorksheetFunction
Set d = Sheets("saad").Range("c5:c1500")
Set a = Sheets("saad").Range("e5:e1500")
Set z = Sheets("saad").Range("b5:b1500")

Y = Sheets("saad").Range("a" & Rows.Count).End(xlUp).Row

For i = 6 To Y
Cells(i, "c") = ww.SumIfs(a, z, Cells(i, "b"), d, Range("c5"))
Next i

End Sub

هذا و الله اعلم

 

تحياتي 

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

اخى احمد عبدالناصر

اشكرك كل الشكر على شرحك

ولكنى نفذت كل النصائح ولم يعمل الكود

وارجو ممن يحاول فى الملف ان يغير اسم الورقة الى saad

1.rar

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

السلام عليكم

 

معذرة لم انتبه للملف المرفق في البداية 

 

علي اي حال جرب هذه المحاولة 

Sub saad()

Sheets("report").Range("b5:l1000").Clear
Sheets("data").Range("k7:k" & Sheets("data").Range("k" & Rows.Count).End(xlUp).Row).Copy
Sheets("report").Range("b5").PasteSpecial (xlPasteValuesAndNumberFormats)
Sheets("data").Range("l8:l" & Sheets("data").Range("l" & Rows.Count).End(xlUp).Row).Copy
Sheets("report").Range("c5").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True
Application.CutCopyMode = False
r = Sheets("report").Range("b" & Rows.Count).End(xlUp).Row
c = Sheets("report").Range("iv5").End(xlToLeft).Column
Sheets("report").Range(Cells(6, 3), Cells(r, c)).FormulaR1C1 = "=SUMIFS(saad!C4,saad!C1,RC2,saad!C2,R5C)"
Sheets("report").Range(Cells(6, 3), Cells(r, c)) = Sheets("report").Range(Cells(6, 3), Cells(r, c)).Value

End Sub

تحياتي

1++.rar

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

اخى احمد

هل ممكن تشرح تكوين المعادلة دى

c4هى العمود الرابع

c1هى العمود الاول

c2هى العمود الثانى لان c هو collumn

ما معنىrc2هل العمود الثانى فى اى صف

ارجو التوضيح ولك الشكر

 

FormulaR1C1 = "=SUMIFS(saad!C4,saad!C1,RC2,saad!C2,R5C)

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

السلام عليكم

 

هذه اصل المعادلة في الاكسيل 

=SUMIFS(saad!$D:$D;saad!$A:$A;$B6;saad!$B:$B;C$5)

بصراحة انا سجلتها بالمكرو ليحولها الاكسيل بنفسه 

 

علي اي حال 

 

RC2 تعني العمود الثاني (ثابت) مع تغير الصف تعادل هذه 


$B6

و العكس في R5C الصف الخامس ثابت مع تغير العمود حسب الخليه التي تحتوي علي المعادلة  تعادل


C$5

تحياتي

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

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

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



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

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

Important Information