السلام عليكم
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 واخر خليه بها بيانات التي تم جلبها بالدالة يتم استبدال الدالة بالقيمه الناتجة عنها
جرب مسحه وسترى ان الخلايا تحوي معادلات
================
ان شاء الله ان اكون وفقت في الشرح