كيفية استخدام sum في excel عبر vba؟

في Excel، يمكنك استخدام VBA لحساب مجموع القيم من نطاق من الخلايا أو نطاقات متعددة. وفي هذا البرنامج التعليمي، سوف نتعلم الطرق المختلفة التي يمكننا استخدامها.

الجمع في VBA باستخدام WorksheetFunction

في VBA، هناك العديد من الوظائف التي يمكنك استخدامها، ولكن لا توجد وظيفة محددة لهذا الغرض. هذا لا يعني أننا لا نستطيع جمع المبلغ. في VBA، توجد خاصية تسمى WorksheetFunction يمكنها مساعدتك في استدعاء الوظائف في التعليمات البرمجية لـ VBA.

مجموع في vba باستخدام جدول البيانات

ضع في اعتبارك مجموع القيم في النطاق A1:A10.

  1. أدخل أولاً خاصية دالة ورقة العمل، ثم حدد الدالة SUM من القائمة.
    enter-worksheet-function
  2. بعد ذلك، يجب عليك إدخال قوس البداية كما تفعل عند إدخال دالة في جدول البيانات.
    starting-parenthesis
  3. بعد ذلك، نحتاج إلى استخدام كائن النطاق للإشارة إلى النطاق الذي نريد حساب المجموع له.
    use-the-range-object
  4. في النهاية، اكتب قوس إغلاق وقم بتعيين القيمة المرجعة للدالة إلى الخلية B1.
    closing-parenthesis
 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 لإضافة قيم بمعايير كما في المثال التالي.

sumif-with-vba
 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

اضف تعليق

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *