كيفية استخدام sum في excel عبر vba؟
في Excel، يمكنك استخدام VBA لحساب مجموع القيم من نطاق من الخلايا أو نطاقات متعددة. وفي هذا البرنامج التعليمي، سوف نتعلم الطرق المختلفة التي يمكننا استخدامها.
الجمع في VBA باستخدام WorksheetFunction
في VBA، هناك العديد من الوظائف التي يمكنك استخدامها، ولكن لا توجد وظيفة محددة لهذا الغرض. هذا لا يعني أننا لا نستطيع جمع المبلغ. في VBA، توجد خاصية تسمى WorksheetFunction يمكنها مساعدتك في استدعاء الوظائف في التعليمات البرمجية لـ VBA.
ضع في اعتبارك مجموع القيم في النطاق A1:A10.
- أدخل أولاً خاصية دالة ورقة العمل، ثم حدد الدالة SUM من القائمة.
- بعد ذلك، يجب عليك إدخال قوس البداية كما تفعل عند إدخال دالة في جدول البيانات.
- بعد ذلك، نحتاج إلى استخدام كائن النطاق للإشارة إلى النطاق الذي نريد حساب المجموع له.
- في النهاية، اكتب قوس إغلاق وقم بتعيين القيمة المرجعة للدالة إلى الخلية B1.
Range ("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))
الآن عند تشغيل هذا الكود يقوم بحساب مجموع القيم الموجودة لديك في النطاق A1:A10 وإدخال القيمة في الخلية B1.
مجموع قيم عمود أو صف بأكمله
في هذه الحالة، ما عليك سوى تحديد صف أو عمود بدلاً من النطاق الذي استخدمناه في المثال السابق.
' for the entire column A Range ("B1") = Application.WorksheetFunction.Sum( Range ("A:A")) ' for entire row 1 Range ("B1") = Application.WorksheetFunction.Sum( Range ("1:1"))
استخدم VBA لإضافة قيم التحديد
لنفترض الآن أنك تريد جمع قيمة الخلايا المحددة فقط حيث يمكنك استخدام كود مثل هذا.
Sub vba_sum_selection() Dim sRange As Range Dim iSum As Long On Error GoTo errorHandler Set sRange = Selection iSum = WorksheetFunction.Sum(Range(sRange.Address)) MsgBox iSum errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
في الكود أعلاه، استخدمنا التحديد، ثم حددناه في المتغير “sRange”، ثم استخدمنا عنوان متغير النطاق هذا للحصول على المجموع.
مجموع VBA لجميع الخلايا المذكورة أعلاه
يقوم الكود التالي باستخراج كافة الخلايا ومجموع القيم وإدخال النتيجة في الخلية المحددة.
Sub vba_auto_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection. End (xlUp). End (xlUp).Address iLast = Selection. End (xlUp).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
إضافة نطاق ديناميكي باستخدام VBA
وبالمثل، يمكنك استخدام النطاق الديناميكي أثناء استخدام VBA لإضافة القيم.
Sub vba_dynamic_range_sum() Dim iFirst As String Dim iLast As String Dim iRange As Range On Error GoTo errorHandler iFirst = Selection.Offset(1, 1).Address iLast = Selection.Offset(5, 5).Address Set iRange = Range(iFirst & ":" & iLast) ActiveCell = WorksheetFunction.Sum(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
أضف عمودًا أو صفًا ديناميكيًا
وبالمثل، إذا كنت تريد استخدام عمود ديناميكي، فيمكنك استخدام الكود التالي الذي سيأخذ عمود الخلية النشطة ويضيف كل القيم الموجودة هناك.
Sub vba_dynamic_column() Dim iCol As Long On Error GoTo errorHandler iCol = ActiveCell.Column MsgBox WorksheetFunction.Sum(Columns(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
وعلى التوالي.
Sub vba_dynamic_row() Dim iRow As Long On Error GoTo errorHandler iRow = ActiveCell.Row MsgBox WorksheetFunction.Sum(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub
استخدم SUMIF مع VBA
تمامًا مثل sum، يمكنك استخدام الدالة SUMIF لإضافة قيم بمعايير كما في المثال التالي.
Sub vba_sumif() Dim cRange As Range Dim sRange As Range Set cRange = Range ("A2:A13") Set sRange = Range ("B2:B13") Range ("C2") = _ WorksheetFunction.SumIf(cRange, "Product B", sRange) End Sub