كيفية العثور على القيمة القصوى أو الدنيا ضمن نطاق تاريخ معين (بين تاريخين) في Excel؟
في تحليل البيانات اليومي، خاصة عند العمل مع السجلات المعاملاتية أو بيانات السلاسل الزمنية، قد تحتاج غالبًا إلى تحديد أعلى أو أدنى قيمة تحدث خلال فترة زمنية محددة. على سبيل المثال، تخيل أن لديك جدولًا كما هو موضح في لقطة الشاشة أدناه، وتريد تحديد القيمة القصوى أو الدنيا بين تاريخين — مثل من 2016/7/1 إلى 2016/12/1. هذا شرط شائع عند إنشاء تقارير عن فترات محددة، أو مقارنة الأداء الشهري، أو تتبع الذروات والقيعان في البيانات. سيوجهك هذا المقال عبر عدة حلول عملية باستخدام صيغ Excel، وأكواد VBA، والميزات المدمجة، مما يساعدك على استخراج القيمة التي تحتاجها بسرعة ودقة.
➤ العثور على القيمة القصوى أو الدنيا ضمن نطاق تاريخ معين باستخدام الصيغ المصفوفة
➤ كود VBA: البحث تلقائيًا عن القيمة القصوى أو الدنيا ضمن نطاق تاريخ محدد
➤ طرق أخرى مضمنة في Excel: استخدام جدول محوري لتصفية وعرض القيم القصوى/الدنيا حسب نطاق التاريخ
العثور على القيمة القصوى أو الدنيا ضمن نطاق تاريخ معين باستخدام الصيغ المصفوفة
إحدى الأساليب البسيطة هي استخدام الصيغ المصفوفة في 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,""))
تتحقق هذه الصيغة ما إذا كانت التواريخ تقع بين تاريخ البداية والنهاية، وتأخذ فقط القيم من الصفوف المتطابقة لحساب القيمة القصوى.
العثور على القيمة الدنيا بين 2016/7/1 و2016/12/1:
3. للعثور على القيمة الدنيا ضمن نفس نطاق التاريخ، استخدم نهجًا مشابهًا. أدخل الصيغة التالية (وأكد مرة أخرى باستخدام Ctrl + Shift + Enter):
=MIN(IF((A5:A17<=$D$1)*(A5:A17>=$B$1), B5:B17, ""))
تعمل هذه الصيغة بنفس الطريقة، لكنها ترجع القيمة الدنيا التي تطابق معايير التاريخ الخاصة بك.
ملاحظات:
- في الأمثلة أعلاه، 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. لتشغيل الماكرو، انقر فوق الزر في محرر 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.
مقالات ذات صلة:
- كيفية العثور على موقع أول/آخر رقم في سلسلة نصية في Excel؟
- كيفية العثور على أول أو آخر جمعة من كل شهر في Excel؟
- كيفية استخدام vlookup للعثور على أول، ثاني أو الـnth قيمة مطابقة في Excel؟
- كيفية العثور على القيمة الأكثر تكرارًا في نطاق في Excel؟
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في 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 وPowerPoint + Office Tab Pro
- مثبّت واحد، ترخيص واحد — إعداد في دقائق (جاهز لـ MSI)
- الأداء الأفضل معًا — إنتاجية مُبسطة عبر تطبيقات Office
- تجربة كاملة لمدة30 يومًا — بدون تسجيل، بدون بطاقة ائتمان
- قيمة رائعة — وفر مقارنة بشراء الإضافات بشكل منفرد