كيفية حساب متوسط القيم في excel عبر vba؟

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

المتوسط في VBA باستخدام WorksheetFunction

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

المتوسط في VBA باستخدام وظيفة جدول البيانات

دعونا نحسب متوسط القيم في النطاق A1:A10.

  1. أدخل أولاً خاصية دالة ورقة العمل، ثم حدد الدالة AVERAGE من القائمة.
    worksheet-function-average
  2. بعد ذلك، يجب عليك إدخال قوس البداية كما تفعل عند إدخال دالة في جدول البيانات.
    enter-starting-paranthesis
  3. بعد ذلك، نحتاج إلى استخدام كائن النطاق للإشارة إلى النطاق الذي نريد حساب المتوسط له.
    use-the-range-object
  4. في النهاية، اكتب قوس إغلاق وقم بتعيين القيمة المرجعة للدالة إلى الخلية B1.
    type-close-pranthesis
 Application.WorksheetFunction.Average( Range ("A1:A10"))

الآن عندما تقوم بتشغيل هذا الكود فإنه يقوم بحساب متوسط القيم لديك في النطاق A1:A10 وإدخال القيمة في الخلية B1.

تشغيل كود حساب المتوسط

متوسط قيم عمود أو صف كامل

في هذه الحالة، كل ما عليك فعله هو تحديد صف أو عمود بدلاً من النطاق الذي استخدمناه في المثال السابق.

 'for the entire column A Range ("B1") = Application.WorksheetFunction.Average( Range ("A:A")) 'for entire row 1 Range ("B1") = Application.WorksheetFunction.Average( Range ("1:1"))

استخدم VBA لمتوسط قيم التحديد

لنفترض الآن أنك تريد حساب متوسط قيمة الخلايا المحددة فقط حيث يمكنك استخدام كود مثل هذا.

 Sub vba_average_selection() Dim sRange As Range Dim iAverage As Long On Error GoTo errorHandler Set sRange = Selection iAverage = WorksheetFunction.Average(Range(sRange.Address)) MsgBox iAverage Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

في الكود أعلاه، استخدمنا التحديد، ثم حددناه في المتغير “sRange”، ثم استخدمنا عنوان متغير النطاق هذا للحصول على المتوسط.

VBA متوسط كافة الخلايا أعلاه

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

 Sub vba_auto_Average() 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.Average(iRange) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

حساب متوسط النطاق الديناميكي باستخدام VBA

وبالمثل، يمكنك استخدام النطاق الديناميكي أثناء استخدام VBA لحساب متوسط القيم.

 Sub vba_dynamic_range_average() 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.Average(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.Average(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.Average(Rows(iCol)) Exit Sub errorHandler: MsgBox "make sure to select a valid range of cells" End Sub

اضف تعليق

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