Skip to main content

كيفية حساب الوسيط إذا كانت هناك شروط متعددة في Excel؟

Author: Sun Last Modified: 2025-08-06

حساب الوسيط لمجموعة بيانات في Excel هو عملية مطلوبة بشكل متكرر في تحليل البيانات وإعداد التقارير. بينما يمكن إيجاد الوسيط لمنطقة بسيطة بسرعة باستخدام وظائف Excel القياسية، غالباً ما تنشأ حالات تحتاج فيها إلى قيمة الوسيط فقط من البيانات التي تلبي معايير محددة - على سبيل المثال، إيجاد قيمة مبيعات وسيطة لمنتج معين في تاريخ محدد ضمن مجموعة بيانات كبيرة. التعامل مع مثل هذه العمليات المعقدة والمشروطة باستخدام الوظائف التقليدية فقط يمكن أن يكون صعباً. في هذا البرنامج التعليمي، سنقدم حلولًا عملية متنوعة لحساب الوسيط بشروط متعددة في Excel، واستكشاف كل من الأساليب القائمة على الصيغ والأتمتة باستخدام VBA للاحتياجات المتقدمة.


احسب الوسيط إذا استوفى شروطاً متعددة

لنفترض أن لديك نطاق بيانات كما هو موضح أدناه، ومهمتك هي تحديد قيمة الوسيط التي تلبي معيارين: على سبيل المثال، تحديد قيمة الوسيط للعمود B حيث يكون العمود A يحتوي على القيمة "a" والعمود C يحتوي على التاريخ "2-يناير". هذا السيناريو شائع بشكل خاص في تقارير المبيعات، نتائج الاختبارات الصفية، وتحليل البيانات التجارية أو الأكاديمية الأخرى حيث يكون التصفية حسب فئات متعددة ضرورية.

a screenshot of the original data

للوضوح، دعنا نجهّز ورقة العمل كما يلي: في ورقة Excel الخاصة بك، أدخل شروطك وأنشئ تصميماً مشابهاً للصورة أدناه. هنا، يسرد العمود E معايير العمود A، وصف 1 من الأعمدة F وما بعدها يمثل معايير التاريخ من العمود C.

a screenshot of typing new required data

لحساب الوسيط الذي يستوفي شروطاً متعددة، يمكنك استخدام صيغة صفيف تستفيد من دالتي MEDIAN و IF لبناء قائمة مرشحة من القيم بناءً على شروطك. إليك الطريقة:

1. انقر فوق الخلية F2، حيث تريد أن يظهر نتيجة الوسيط، وأدخل الصيغة التالية:

=MEDIAN(IF($A$2:$A$12=$E2,IF($C$2:$C$12=F$1,$B$2:$B$12)))

تعمل هذه الصيغة عن طريق التحقق، لكل صف، مما إذا كانت القيمة في العمود A تتطابق مع الشرط في E2 وما إذا كانت القيمة في العمود C تتطابق مع العنوان في F1. إذا تم استيفاء كلا الشرطين، فإنه يجمع القيمة في العمود B لحساب الوسيط.

2. بعد إدخال الصيغة، اضغط على Ctrl + Shift + Enter (وليس فقط Enter)، لأن هذه صيغة صفيف. سيحيط Excel الصيغة تلقائيًا بأقواس { } للإشارة إلى أنها صيغة صفيف.

3. اسحب مقبض التعبئة من الزاوية اليمنى السفلى لـ F2 لنسخ الصيغة عبر الخلايا الأخرى ذات الصلة حيث تحتاج إلى وسيط تحت شروط مختلفة، كما هو موضح أدناه:

a screenshot of using the formula

شرح المعلمات ونصائح الاستخدام: في الصيغة، $A$2:$A$12 هو النطاق الذي يحتوي على الشرط الأول (مثل أسماء المنتجات)، $C$2:$C$12 هو النطاق الخاص بالشرط الثاني (مثل التواريخ)، و$B$2:$B$12 هو النطاق الذي يحتوي على القيم الرقمية التي تريد الوسيط لها. قم بتعديل هذه النطاقات حسب الحاجة لورقة العمل الخاصة بك. استخدم دائمًا المراجع المطلقة ($ symbols) لضمان عدم تغيير النطاقات عند نسخ الصيغة.

احتياطات: إذا لم تكن هناك قيم تلبي كلا الشرطين، ستعيد الصيغة خطأ #NUM!. لتجنب الالتباس، يمكنك وضع الصيغة داخل IFERROR لإرجاع خلية فارغة أو رسالة مخصصة:

=IFERROR(MEDIAN(IF($A$2:$A$12=$E2,IF($C$2:$C$12=F$1,$B$2:$B$12))),"No match")

تأكد من أن بياناتك لا تحتوي على خلايا فارغة أو قيم غير رقمية في عمود الوسيط، لأن ذلك قد يؤثر أيضًا على النتائج.

هذا النهج القائم على الصيغة مناسب عندما تكون لديك شروط نسبية بسيطة (عادة ما يصل إلى معيارين أو ثلاثة). إنه سريع الإعداد ولا يتطلب أي مهارات برمجة. ومع ذلك، بالنسبة للتصفية المعقدة بشروط ديناميكية أو مجموعات بيانات أكبر، قد يصبح الحفاظ على صيغ الصفائف أو تعديلها مرهقًا.


رمز VBA - احسب الوسيط بشروط متعددة

بالنسبة للسيناريوهات التي تحتاج فيها إلى أتمتة حساب الوسيط المشروط - مثل عندما تكون هناك العديد من الشروط، مجموعات بيانات كبيرة، أو تتغير المعايير نفسها بشكل متكرر - يمكن لحل VBA أن يقدم بديلاً عمليًا. باستخدام VBA، يمكنك بناء ماكرو قابل لإعادة الاستخدام يحسب الوسيط بناءً على أي عدد من الشروط. تُعتبر الحلول القائمة على VBA مفيدة بشكل خاص إذا كنت ترغب في تبسيط التحليل المتكرر أو تطوير عمليات Excel مخصصة للتقارير واللوحة المعلوماتية.

اتبع هذه الخطوات لاستخدام VBA لحساب الوسيط المشروط:

1. انقر فوق أدوات المطور > Visual Basic. ستُفتح نافذة جديدة Microsoft Visual Basic for Applications. انقر فوق إدراج > وحدة، ثم ألصق الكود التالي في الوحدة:

Sub ConditionalMedian()
    Dim DataRange As Range
    Dim CriteriaRange1 As Range
    Dim CriteriaRange2 As Range
    Dim OutputRange As Range
    Dim Criteria1 As Variant
    Dim Criteria2 As Variant
    Dim TempArr() As Double
    Dim i As Long
    Dim j As Long
    Dim count As Long
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set DataRange = Application.InputBox("Select the range containing median values (e.g., B2:B12):", xTitleId, "", Type:=8)
    Set CriteriaRange1 = Application.InputBox("Select the first criteria range (e.g., A2:A12):", xTitleId, "", Type:=8)
    Criteria1 = Application.InputBox("Enter the first criteria value (e.g., a):", xTitleId, "", Type:=2)
    Set CriteriaRange2 = Application.InputBox("Select the second criteria range (e.g., C2:C12):", xTitleId, "", Type:=8)
    Criteria2 = Application.InputBox("Enter the second criteria value (e.g.,2-Jan):", xTitleId, "", Type:=2)
    Set OutputRange = Application.InputBox("Select the cell to output the result:", xTitleId, "", Type:=8)
    
    count = 0
    For i = 1 To DataRange.Rows.count
        If StrComp(CStr(CriteriaRange1.Cells(i, 1).Value), CStr(Criteria1), vbTextCompare) = 0 And _
           CStr(CriteriaRange2.Cells(i, 1).Value) = CStr(Criteria2) Then
            ReDim Preserve TempArr(count)
            TempArr(count) = DataRange.Cells(i, 1).Value
            count = count + 1
        End If
    Next i
    
    If count = 0 Then
        OutputRange.Value = "No match"
    Else
        Call QuickSort(TempArr, LBound(TempArr), UBound(TempArr))
        If count Mod 2 = 1 Then
            OutputRange.Value = TempArr(count \ 2)
        Else
            OutputRange.Value = (TempArr(count \ 2) + TempArr(count \ 2 - 1)) / 2
        End If
    End If
End Sub

Sub QuickSort(arr() As Double, first As Long, last As Long)
    Dim i As Long
    Dim j As Long
    Dim pivot As Double
    Dim temp As Double
    
    i = first
    j = last
    pivot = arr((first + last) \ 2)
    
    Do While i <= j
        Do While arr(i) < pivot
            i = i + 1
        Loop
        
        Do While arr(j) > pivot
            j = j - 1
        Loop
        
        If i <= j Then
            temp = arr(i)
            arr(i) = arr(j)
            arr(j) = temp
            i = i + 1
            j = j - 1
        End If
    Loop
    
    If first < j Then
        QuickSort arr, first, j
    End If
    
    If i < last Then
        QuickSort arr, i, last
    End If
End Sub

2. انقر فوق Run button (أو اضغط على F5) لتشغيل الكود. سيتم مطالبتك باختيار كل النطاقات المطلوبة وإدخال معاييرك. بعد الانتهاء من المطالبات، ستظهر النتيجة (الوسيط الذي يستوفي جميع الشروط) في الخلية المستهدفة التي حددتها.

يتيح لك هذا الماكرو اختيار النطاق المراد حسابه، نطاقات الشروط، قيم الشروط وأين يتم إخراج النتيجة كل مرة يتم فيها تشغيل الكود. يمكنك أيضًا تعديل الكود بسهولة لتضمين المزيد من الشروط إذا لزم الأمر.

نصائح واستكشاف الأخطاء وإصلاحها: عند استخدام حلول VBA، تأكد من أن جميع النطاقات المحددة لها نفس الطول، وتتطابق المعايير مع نوع البيانات الصحيح والتنسيق (مثل النص مقابل التواريخ). إذا لم تكن هناك قيمة تلبي المعايير، سيعرض الإخراج "لا توجد مطابقة." لضمان أفضل استقرار، احفظ مصنفك قبل تشغيل الماكرو وقم دائمًا بتمكين الماكرو عندما يُطلب منك ذلك. هذا الحل باستخدام VBA مناسب للمستخدمين الذين يعرفون إعدادات أمان الماكرو وللاستخدام في سير عمل Excel المُؤتمتة.

باختصار، يُساعد النهج القائم على VBA في أتمتة العمليات المعقدة لحساب الوسيط التي تكون مرهقة أو صعبة التنفيذ باستخدام الصيغ فقط. وهو مناسب بشكل خاص عند التعامل مع شروط متغيرة، إعادة الحساب المتكررة، ومجموعات البيانات الكبيرة.


مقالات ذات صلة:


أفضل أدوات زيادة الإنتاجية لمجموعة Office

🤖 Kutools AI Aide: أحدث ثورة في تحليل البيانات بفضل: التنفيذ الذكي|توليد الشيفرة|إنشاء الصيغ المخصصة|تحليل البيانات وتوليد الرسوم البيانية|استدعاء الوظائف المحسنة
الميزات الشائعة: إيجاد أو تمييز أو وضع علامة على المكررات|حذف الصفوف الفارغة|دمج الأعمدة أو الخلايا دون فقدان البيانات|تقريب...
بحث متقدم: بحث V بمعايير متعددة|بحث V بقيم متعددة|بحث في عدة ورقات|مطابقة غامضة ....
قائمة منسدلة متقدمة: أنشئ قائمة منسدلة بسرعة|قائمة منسدلة معتمدة|قائمة منسدلة متعددة الاختيار ....
إدارة الأعمدة: إضافة عدد معين من الأعمدة |نقل الأعمدة |تغيير حالة إظهار/إخفاء الأعمدة المخفية| مقارنة النطاقات و الأعمدة ...
ميزات مميزة: التركيز على الشبكة|عرض التصميم|شريط الصيغ المحسن|إدارة أدوات المصنف وورقة العمل|مكتبة النص التلقائي (Auto Text)|منتقي التاريخ|دمج البيانات |تشفير/فك تشفير الخلايا|إرسال البريد الإلكتروني حسب القائمة|مرشح متقدم|تصفية خاصة (تصفية الخلايا التي تحتوي على خط عريض أو مائل أو يتوسطه خط...) ...
أفضل15 مجموعة أدوات:12 أداة نصية (إضافة نص، حذف الأحرف المحددة، ... )|أكثر من50 نوعاً من الرسوم البيانية (مخطط جانت، ...)|أكثر من40 صيغة عملية (حساب العمر بناءً على تاريخ الميلاد، ...)|19 أداة إدراج (إدراج رمز الاستجابة السريعة، إدراج صورة من المسار، ... )|12 أداة تحويل (تحويل إلى كلمات، تحويل العملة، ...)|7 أدوات دمج و تقسيم (دمج متقدم للصفوف، تقسيم الخلايا، ...)|... والمزيد
استخدم Kutools بلغتك المفضلة – يدعم الإنجليزية، الإسبانية، الألمانية، الفرنسية، الصينية، وأكثر من40 لغة أخرى!

عزز مهاراتك في Excel مع Kutools لـ Excel، وتمتع بكفاءة غير مسبوقة. يقدم Kutools لـ Excel أكثر من300 ميزة متقدمة لتعزيز الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...


Office Tab يجلب تجربة التبويبات إلى Office، ويجعل عملك أسهل بكثير

  • فعّل تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint
  • افتح وأنشئ مستندات متعددة في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ جديدة.
  • يمنحك زيادة إنتاجية تصل إلى50% ويوفر عليك مئات النقرات يومياً!