Skip to main content

Kutools for Office — مجموعة واحدة. خمسة أدوات. أنجز المزيد.

كيفية العثور على القيمة القصوى أو الدنيا ضمن نطاق تاريخ معين (بين تاريخين) في Excel؟

Author Siluvia Last modified

في تحليل البيانات اليومي، خاصة عند العمل مع السجلات المعاملاتية أو بيانات السلاسل الزمنية، قد تحتاج غالبًا إلى تحديد أعلى أو أدنى قيمة تحدث خلال فترة زمنية محددة. على سبيل المثال، تخيل أن لديك جدولًا كما هو موضح في لقطة الشاشة أدناه، وتريد تحديد القيمة القصوى أو الدنيا بين تاريخين — مثل من 2016/7/1 إلى 2016/12/1. هذا شرط شائع عند إنشاء تقارير عن فترات محددة، أو مقارنة الأداء الشهري، أو تتبع الذروات والقيعان في البيانات. سيوجهك هذا المقال عبر عدة حلول عملية باستخدام صيغ Excel، وأكواد VBA، والميزات المدمجة، مما يساعدك على استخراج القيمة التي تحتاجها بسرعة ودقة.

A screenshot showing an Excel table with dates and values to calculate max or min in a date range


العثور على القيمة القصوى أو الدنيا ضمن نطاق تاريخ معين باستخدام الصيغ المصفوفة

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

لنفترض أن ورقة عملك تحتوي على تواريخ في العمود A (A5:A17) والقيم المقابلة في العمود B (B5:B17)، مع إدخال تواريخ بداية ونهاية النطاق في الخلايا B1 وD1 على التوالي.

1. حدد خلية فارغة حيث تريد عرض النتيجة (مثل الخلية E2).

العثور على القيمة القصوى بين 2016/7/1 و2016/12/1:

2. أدخل الصيغة التالية في الخلية المحددة. بعد التعديل، اضغط على Ctrl + Shift + Enter (وليس فقط Enter)، حتى يتعرف Excel عليها كصيغة مصفوفة:

=MAX(IF((A5:A17<=$D$1)*(A5:A17>=$B$1),B5:B17,""))

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

A screenshot showing the result of finding the max value within a date range using an array formula in Excel

العثور على القيمة الدنيا بين 2016/7/1 و2016/12/1:

3. للعثور على القيمة الدنيا ضمن نفس نطاق التاريخ، استخدم نهجًا مشابهًا. أدخل الصيغة التالية (وأكد مرة أخرى باستخدام Ctrl + Shift + Enter):

=MIN(IF((A5:A17<=$D$1)*(A5:A17>=$B$1), B5:B17, ""))

تعمل هذه الصيغة بنفس الطريقة، لكنها ترجع القيمة الدنيا التي تطابق معايير التاريخ الخاصة بك.

A screenshot showing the result of finding the min value within a date range using an array formula in Excel

ملاحظات:

  • في الأمثلة أعلاه، A5:A17 هو النطاق الذي يحتوي على التواريخ، $B$1 هو تاريخ البداية، $D$1 هو تاريخ النهاية، وB5:B17 هو نطاق القيم التي تريد تقييمها. قم بتعديل هذه المراجع لتتناسب مع بياناتك الفعلية.
  • تأكد من أن النطاقين اللذين تشير إليهما لهما نفس الطول — وإلا فقد تولد الصيغة أخطاء.
  • تأكد مجددًا من أن إدخالات التاريخ مُنسقة على أنها تواريخ، وليس كنص، أو قد لا تعمل الصيغة كما هو مقصود.

نصائح:

  • إذا كنت تعمل مع Office 365 أو Excel 2021 وما بعدها، يمكنك استخدام دوال MAXIFS وMINIFS لإجراء حسابات قائمة على معايير أكثر بساطة.
  • إذا أرجعت الصيغة 0 أو فارغة بشكل غير متوقع، تحقق من أن نطاق التاريخ يتداخل مع تواريخ البيانات المتاحة وتحقق من وجود أي خلايا فارغة غير ملحوظة.

كود VBA: البحث تلقائيًا عن القيمة القصوى أو الدنيا ضمن نطاق تاريخ محدد

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

1. انتقل إلى Developer > Visual Basic. في نافذة محرر VBA التي تظهر، انقر فوق Insert > Module، ثم انسخ والصق الكود التالي في الوحدة الجديدة:

Sub FindMaxMinInDateRange_Robust()
    Dim ws As Worksheet
    Dim dateRange As Range, valueRange As Range
    Dim startCell As Range, endCell As Range
    Dim startDate As Date, endDate As Date
    Dim i As Long
    Dim d As Date, v As Variant
    Dim hasHit As Boolean
    Dim maxV As Double, minV As Double
    Const TITLE As String = "KutoolsforExcel"
    
    On Error GoTo FailFast
    
    Set ws = ActiveSheet
    
    
    Set dateRange = Application.InputBox("Select the DATE range:", TITLE, Type:=8)
    If dateRange Is Nothing Then Exit Sub
    Set valueRange = Application.InputBox("Select the VALUE range (same rows as date range):", TITLE, Type:=8)
    If valueRange Is Nothing Then Exit Sub
    
    If dateRange.Rows.Count <> valueRange.Rows.Count Then
        MsgBox "Date range and value range must have the SAME number of rows.", vbExclamation, TITLE
        Exit Sub
    End If
    
   
    Set startCell = Application.InputBox("Select START date cell:", TITLE, Type:=8)
    If startCell Is Nothing Then Exit Sub
    Set endCell = Application.InputBox("Select END date cell:", TITLE, Type:=8)
    If endCell Is Nothing Then Exit Sub
    
    If Not IsDate(startCell.Value) Or Not IsDate(endCell.Value) Then
        MsgBox "Start/End cell must contain valid dates.", vbExclamation, TITLE
        Exit Sub
    End If
    
    startDate = CDate(startCell.Value)
    endDate = CDate(endCell.Value)
 
    If startDate > endDate Then
        Dim tmp As Date
        tmp = startDate: startDate = endDate: endDate = tmp
    End If
    

    For i = 1 To dateRange.Rows.Count
        If IsDate(dateRange.Cells(i, 1).Value) Then
            d = CDate(dateRange.Cells(i, 1).Value)
            If d >= startDate And d <= endDate Then
                v = valueRange.Cells(i, 1).Value
                If IsNumeric(v) And Not IsEmpty(v) Then
                    If Not hasHit Then
                        maxV = CDbl(v): minV = CDbl(v)
                        hasHit = True
                    Else
                        If CDbl(v) > maxV Then maxV = CDbl(v)
                        If CDbl(v) < minV Then minV = CDbl(v)
                    End If
                End If
            End If
        End If
    Next i
    
    If hasHit Then
        MsgBox "Max value in range: " & maxV & vbCrLf & _
               "Min value in range: " & minV, vbInformation, TITLE
    Else
        MsgBox "No rows matched the date range (or values were non-numeric).", vbExclamation, TITLE
    End If
    Exit Sub

FailFast:
    MsgBox "Something went wrong: " & Err.Description, vbExclamation, TITLE
End Sub

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

نصائح:

  • تأكد من أن نطاقات التاريخ والقيم المحددة تحتوي على نفس عدد الصفوف وتتوافق مباشرة مع بعضها البعض.
  • هذا النهج مفيد بشكل خاص لمعالجة القوائم الطويلة أو أتمتة عمليات الحساب القصوى/الدنيا المتكررة بناءً على معايير متغيرة.
  • إذا تم اختيار نطاق فارغ أو غير صالح، أو إذا لم يتم تنسيق إدخال التاريخ بشكل صحيح، فقد لا ينتج عن الكود نتيجة صالحة — تحقق مجددًا من اختياراتك قبل التشغيل.

طرق أخرى مضمنة في Excel: استخدام جدول محوري لتصفية وعرض القيم القصوى/الدنيا حسب نطاق التاريخ

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

1. حدد الجدول الخاص بك (بما في ذلك التواريخ والقيم)، ثم انتقل إلى تبويب Insert وانقر فوق PivotTable.

2. في مربع الحوار Create PivotTable، اختر المكان الذي تريد وضع PivotTable فيه، واضغط على OK.

3. في لوحة PivotTable Fields، اسحب حقل Date إلى منطقة Rows، وحقل Values (الذي تريد العثور على القصوى/الدنيا له) إلى منطقة Values. بشكل افتراضي، سيظهر المجموع؛ انقر على الحقل في Values، اختر Value Field Settings، وغير إلى Max أو Min حسب الحاجة.

4. لتصفية حسب نطاق تاريخ محدد، انقر فوق القائمة المنسدلة على تسميات الصفوف لحقل Date، اختر Date Filters > Between…، ثم حدد تواريخ البداية والنهاية (مثل 2016/7/1 إلى 2016/12/1) واضغط على OK.

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

ملاحظات:

  • تأكد من أن جميع الخلايا في عمود Date هي تواريخ فعلية (وليست نصوص). يمكن أن تسبب التنسيقات المختلطة تجاهل المرشحات للصفوف.
  • إذا تغيرت بيانات المصدر، انقر بزر الماوس الأيمن على PivotTable واختر Refresh لتحديث النتائج.
  • اعتمادًا على التخطيط الخاص بك، قد يقوم Excel بتجميع التواريخ حسب الشهر/الربع/السنة. إذا لزم الأمر، انقر بزر الماوس الأيمن على تاريخ في PivotTable واختر Ungroup (أو Group… لتعيين المستوى المطلوب).
  • بالنسبة لمجموعات البيانات الكبيرة جدًا، يمكن أن يؤدي وضع PivotTable على ورقة عمل جديدة إلى تحسين سهولة القراءة والأداء.

نصائح:

  • أضف Slicer لحقل Date (PivotTable Analyze > Insert Slicer) لتغيير النطاقات تفاعليًا.
  • هل تحتاج إلى قيمة قصوى/دنيا واحدة عبر النطاق المُرشح بالكامل؟ بعد التصفية، قم بفرز عمود Values أو أضف حقل Values ثانيًا وبدّله إلى Max/Min.
  • اقترن مع PivotChart للحصول على ملخص بصري يتحديث مع مرشحاتك.

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


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

أفضل أدوات الإنتاجية لمكتب العمل

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

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


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

  • تفعيل تحرير وقراءة عبر التبويبات في Word، Excel، PowerPoint، Publisher، Access، Visio وProject.
  • افتح وأنشئ عدة مستندات في تبويبات جديدة في نفس النافذة، بدلاً من نوافذ مستقلة.
  • يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات اليومية من الفأرة!

جميع إضافات Kutools. مثبت واحد

حزمة Kutools for Office تجمع بين إضافات Excel وWord وOutlook وPowerPoint إضافة إلى Office Tab Pro، وهي مثالية للفرق التي تعمل عبر تطبيقات Office.

Excel Word Outlook Tabs PowerPoint
  • حزمة الكل في واحد — إضافات Excel وWord وOutlook وPowerPoint + Office Tab Pro
  • مثبّت واحد، ترخيص واحد — إعداد في دقائق (جاهز لـ MSI)
  • الأداء الأفضل معًا — إنتاجية مُبسطة عبر تطبيقات Office
  • تجربة كاملة لمدة30 يومًا — بدون تسجيل، بدون بطاقة ائتمان
  • قيمة رائعة — وفر مقارنة بشراء الإضافات بشكل منفرد