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

مطلوب شرح كود رائع


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

اساتذتى الكرام

الآتى كود للاستاذ عادل حنفى يقوم بعمل دالة sumif ارجو شرحه لاستيعابه حيث انه مفيد جداً فى التقارير وعمل الاحصائيات

ومرفق ملف مثال


Sub Test()

    Dim LastRow As Long

    Dim rngCriteria As Range, rngValue As Range

    LastRow = Cells(Rows.Count, "D").End(xlUp).Row

    Set rngCriteria = Range("D2:D" & VBA.CStr(LastRow))

    Set rngValue = Range("F2:I" & VBA.CStr(LastRow))


    Application.ScreenUpdating = False

    With rngCriteria

    .Offset(0, 2).FormulaR1C1 = "=SUMIF(Kind,RC[-2],Sales)"

    .Offset(0, 3).FormulaR1C1 = "=SUMIF(Kind,RC[-3],Purchases)"

    .Offset(0, 4).FormulaR1C1 = "=SUMIF(Kind,RC[-4],SalesRefunds)"

    .Offset(0, 5).FormulaR1C1 = "=SUMIF(Kind,RC[-5],PurchasesRefunds)"

    End With

    rngValue.Value = rngValue.Value

    Application.ScreenUpdating = False

End Sub

SumIfByCode.rar

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

السلام عليكم


Dim LastRow As Long

    Dim rngCriteria As Range, rngValue As Range

التعريف عن متغيرات ===============

LastRow = Cells(Rows.Count, "D").End(xlUp).Row

لاستخراج رقم أخر صف به بيانات (في مثالك 13) =======

Set rngCriteria = Range("D2:D" & VBA.CStr(LastRow))

تعريف المدى من D2 الى D و أخر صف به بيانات =====

Set rngValue = Range("F2:I" & VBA.CStr(LastRow))

تعريف المدى من F2 الى I و أخر صف به بيانات =======================

Application.ScreenUpdating = False

إيقاف اهتزاز الشاشة ===

With rngCriteria

	    .Offset(0, 2).FormulaR1C1 = "=SUMIF(Kind,RC[-2],Sales)"

	    .Offset(0, 3).FormulaR1C1 = "=SUMIF(Kind,RC[-3],Purchases)"

	    .Offset(0, 4).FormulaR1C1 = "=SUMIF(Kind,RC[-4],SalesRefunds)"

	    .Offset(0, 5).FormulaR1C1 = "=SUMIF(Kind,RC[-5],PurchasesRefunds)"

    End With

هذه الجزئية ساتناول السطر

.Offset(0, 2).FormulaR1C1 = "=SUMIF(Kind,RC[-2],Sales)"

والباقي بنفس الفكرة في المدى D2:D واخر صف فاضي والذي تم تعريفه بهذا الاسم (rngCriteria) الخلايا المزاحة بمقدار عمودين يتم وضع هذه الصيغة (دالة ) فيها

"=SUMIF(Kind,RC[-2],Sales)"

وكما هو معروف بالنسبة لدالة SUMIF وطريقة عملها مع العلم ان المدى Kind والمدى Sales تم تعريفهما مسبقاً ===========================

rngValue.Value = rngValue.Value

هذا السطر يعني ان قيمة المدى من F2:I واخر خليه بها بيانات التي تم جلبها بالدالة يتم استبدال الدالة بالقيمه الناتجة عنها

جرب مسحه وسترى ان الخلايا تحوي معادلات

================

ان شاء الله ان اكون وفقت في الشرح

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

السلام عليكم


RC[-2]

تشير الى مرجع الخلية النشطه R تمثل الصف و C العمود

ناقص 2

اي اذا الخليه النشطه هيا C1 تعتبر بالمرجع السابق هيا A1

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

اساتذتى الكبار

الاستاذ عبد الله المجرب

الاستاذ عباد

زادكم الله علماً وجعل علمكم نوراً لكل باحث علم وزادكم من فضله الواسع .. اللهم امين يا رب العالمين

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

زائر
هذا الموضوع مغلق.
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

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

Important Information