كيف تحسب العمر بدقة بالسنوات والأشهر والأيام انطلاقًا من تاريخ الميلاد في Excel؟
في العديد من السيناريوهات العملية—مثل إدارة الموارد البشرية، وسجلات الرعاية الصحية، وقواعد بيانات الطلاب، وأنظمة العضوية—يُعد حساب عمر الفرد بدقة بالسنوات والأشهر والأيام بناءً على تاريخ ميلاده أمرًا بالغ الأهمية. إذا كانت لديك قائمة بتواريخ الميلاد في Excel، فقد تحتاج إلى تحديد العمر الدقيق لكل شخص بسرعة، سواء بصيغة مفصلة تعرض السنوات والأشهر والأيام، أو كقيمة عشرية أو عدد صحيح. ويُسهم ذلك في رفع دقة البيانات لدعم أهداف مثل التحقق من الأهلية، وتطبيق السياسات، ومتابعة المعالم الزمنية بدقة. وفي هذا المقال، ستجد عدة طرق فعّالة لأداء هذه الحسابات في Excel بكفاءة وسهولة.
جدول المحتويات
احسب العمر بالسنوات والأشهر والأيام من تاريخ الميلاد
احسب العمر كعدد عشري من تاريخ الميلاد
احسب العمر كعدد صحيح من تاريخ الميلاد![]()
رمز VBA - أتمتة حساب العمر عبر مجموعة بيانات كبيرة باستخدام ماكروهات مخصصة
طرق Excel المدمجة الأخرى - استخدم Power Query لحساب العمر عن طريق تحويل البيانات
احسب العمر بالسنوات والأشهر والأيام من تاريخ الميلاد
إحدى الطرق العملية لحساب العمر بدقة—والتي تُستخدم على نطاق واسع في إعداد التقارير واتخاذ قرارات الأهلية—هي اعتماد صيغة تُظهر عدد السنوات والأشهر والأيام بين تاريخ الميلاد وتاريخ مرجعي معيّن (غالبًا يكون تاريخ اليوم). وتُعد هذه الطريقة مثالية للسيناريوهات التي يكتسب فيها تحديد المدى الزمني الدقيق أهمية بالغة، مثل المناسبات السنوية أو شروط القبول أو حساب الاستحقاقات.
حدد الخلية التي تريد أن يظهر فيها نتيجة العمر، ثم أدخل هذه الصيغة:
=DATEDIF(A2،$F$2،«Y»)&« سنة، »&DATEDIF(A2،$F$2،«YM»)&« شهرًا، »&DATEDIF(A2،$F$2،«MD»)&« يومًا»
بعد إدخال الصيغة، اضغطEnter. بعد ذلك، يمكنك استخدام مقبض الملء التلقائي في Excel لسحب الصيغة لأسفل وتعبئة الصفوف الإضافية حسب الحاجة.
في هذه الصيغة، يشيرA2 إلى الخلية التي تحتوي على تاريخ الميلاد، ويجب أن يحتويF2 على التاريخ المرجعي (مثل تاريخ اليوم). يوفّر هذا الهيكل تقسيمًا دقيقًا، لذا تأكد من أن كلا الخليتين منسقتين كتواريخ. إذا ظهر خطأ#NUM!، فقد يعني ذلك أن تاريخ الميلاد لاحقٌ للتاريخ المرجعي، فراجِع مدخلاتك مجددًا.
احسب العمر كعدد عشري من تاريخ الميلاد
عندما تحتاج إلى عرض العمر كعدد عشري—مثلًا في التقارير الإحصائية، أو لتجميع الأعمار بسرعة، أو لتحديد حدود الأهلية—فإن الصيغة المختصرة تكون الخيار الأمثل. إذ تُعطيك هذه الطريقة عمرًا دقيقًا مثل "24.11"، مما يسهّل تحليل البيانات أو تصفية النتائج بكفاءة.
حدد الخلية التي تريد أن يُعرض فيها العمر العشري، ثم أدخل الصيغة التالية:
=DATEDIF(A2,$F$2,«Y»)&"."&DATEDIF(A2,$F$2,«YM»)
اضغطEnter لتأكيد الصيغة، ثم اسحب مقبض الملء لأسفل لتطبيقها تلقائيًا على الصفوف الأخرى.
كما في الطريقة السابقة،A2 هو تاريخ ميلادك وF2 يجب تعيينه كتاريخ حالي أو مرجعي. تأكد من تنسيق خلايا التواريخ بشكل صحيح. وعلى الرغم من أن هذه الطريقة مباشرة وتسهّل العمل مع البيانات الرقمية، إلا أنها لا تأخذ الأيام في الاعتبار—فإذا كنت بحاجة إلى هذا المستوى من التفصيل، فاستخدم طريقة التقسيم الكاملة بدلاً من ذلك.
احسب العمر كعدد صحيح من تاريخ الميلاد
إذا كان هدفك الحصول على عمرك كعددٍ صحيح—وهو ما يُستخدم غالبًا لتحديد الأهلية في التعليم أو التأمين أو التحكم في الوصول—فإن النتيجة الصحيحة للعمر تكون كافية وغالبًا ما تُطلب. ويُبسّط Kutools لـ Excel هذه العملية عبر دالة مخصصة تُسمى «حساب العمر بناءً على تاريخ الميلاد»، مما يوفّر عليك عناء إدخال صيغ معقدة يدويًّا. وهذا مفيدٌ بشكل خاص عند التعامل مع قوائم طويلة أو عند الحاجة إلى إجراء هذا الحساب مرارًا وتكرارًا.
بعدالتثبيت المجانيKutools لـ Excel، اتبع الخطوات التالية:
1. حدد الخلية التي تريد أن يظهر فيها العمر المحسوب، ثم انقرKutools > مساعد الصيغة > مساعد الصيغة.
2. في مربع حوارمساعد الصيغة، اخترحساب العمر بناءً على تاريخ الميلادمن قسمحدد صيغة، ثم حدد الخلية التي تحتوي على تاريخ الميلاد لمربع النصDate، ثم انقرOK.
3. ستحصل الآن على العمر كعددٍ صحيح؛ اسحب مقبض الملء لأسفل حسب الحاجة لتطبيقه على الخلايا الأخرى. تجنّب هذه الطريقة أخطاء الإدخال اليدوي وتبسّط المهام المتكررة لحساب العمر.
تلميح:إذا أردت تحديث العمر تلقائيًا مع مرور الوقت، فتأكد من ضبط التاريخ المرجعي على=TODAY() في Excel.
رمز VBA - أتمتة حساب العمر عبر مجموعة بيانات كبيرة باستخدام ماكروهات مخصصة
عندما تحتاج إلى معالجة آلاف السجلات وحساب العمر بدقة بالسنوات والأشهر والأيام لكلٍّ منها، قد يصبح سحب الصيغ يدويًّا عملية تستغرق وقتًا طويلاً. يتيح لك ماكرو VBA أتمتة حساب العمر لعمودٍ كامل دفعة واحدة، مما يوفّر لك جهدًا كبيرًا في المهام المتكررة ويضمن اتساق النتائج—حتى لو كانت قائمة تواريخ الميلاد الخاصة بك تتغيّر باستمرار. هذه الطريقة مثالية أكثر للمستخدمين المتقدمين المتمرسين في البرمجة أو الذين يديرون تحديثات بيانات ضخمة.
1. انقرDeveloper > Visual Basic لفتح نافذة Microsoft Visual Basic for Applications. بعد ذلك، انقرInsert > Module وأدخل الكود التالي في الوحدة النمطية:
Function AgeYMD(ByVal dob As Date, ByVal refDate As Date) As String
'Updated by Extendoffice 20250902
Dim y As Long, m As Long, d As Long
Dim t As Date
If Not IsDate(dob) Or Not IsDate(refDate) Or refDate < dob Then
AgeYMD = "Invalid date"
Exit Function
End If
' Years
y = Year(refDate) - Year(dob)
If DateSerial(Year(refDate), Month(dob), Day(dob)) > refDate Then y = y - 1
' Move dob forward by y years
t = DateAdd("yyyy", y, dob)
' Months
m = DateDiff("m", t, refDate)
If DateAdd("m", m, t) > refDate Then m = m - 1
' Move temp forward by m months
t = DateAdd("m", m, t)
' Days (now always >= 0)
d = refDate - t
AgeYMD = y & " Years, " & m & " Months, " & d & " Days"
End Function
Sub CalculateAgesAllRows()
Dim ws As Worksheet, lastRow As Long, birthCell As Range, resultCell As Range
Dim refDate As Date, xTitleId As String
xTitleId = "KutoolsforExcel"
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Example prompt; default is today. Make sure you enter a valid date (e.g., 2025-09-02)
refDate = Application.InputBox("Enter reference date (e.g., 2025-09-02)", _
xTitleId, Date, Type:=1)
For Each birthCell In ws.Range("A2:A" & lastRow)
Set resultCell = ws.Cells(birthCell.Row, "B")
If IsDate(birthCell.Value) Then
resultCell.Value = AgeYMD(CDate(birthCell.Value), refDate)
Else
resultCell.Value = "Invalid date"
End If
Next birthCell
End Sub 2. انقر زر
التشغيل لتنفيذه. سيتم مطالبتك بإدخال تاريخ مرجعي (مثل تاريخ اليوم)، وبعد ذلك سيقوم الماكرو بكتابة العمر المحسوب لكل صف في العمود B، بجانب تاريخ الميلاد المقابل في العمود A.
نصائح:تأكد من أن العمود A يحتوي على تواريخ صالحة، مع وجود رأس الجدول في الصف الأول (ابتداءً من الخلية A2). إذا ظهرت النتائج كـ «Invalid date»، فتحقق من تنسيق التواريخ في عمود المصدر.
توفر أتمتة VBA كفاءةً عاليةً عند التعامل مع مجموعات البيانات الكبيرة أو التي يتم تحديثها بانتظام، لكنها تتطلب ملفات مُمكَّنة للماكرو وإعدادات مركز الثقة أن تكون مضبوطة بشكل صحيح. إذا كنت تفضّل تجنُّب استخدام الكود، ففكّر في استخدام Power Query كبديل خالٍ من البرمجة.
طرق Excel المدمجة الأخرى - استخدم Power Query لحساب العمر عن طريق تحويل البيانات
يقدّم Power Query نهجًا سهل الاستخدام وخاليًا من البرمجة لحساب العمر مباشرةً ضمن واجهة Excel الحديثة. فبمجرد تحميل جدولك الذي يحتوي على تواريخ الميلاد في Power Query، يمكنك إضافة عمود مخصص لحساب الأعمار بالسنوات والأشهر والأيام—بدون الحاجة إلى صيغ أو نسخ يدوي. وتُوصى هذه الطريقة بشدة للمستخدمين الذين يعملون مع بيانات مستوردة أو يحتاجون إلى تحويل بياناتهم وتحديث الحسابات بانتظام.
خطوات التنفيذ:
1. حدد جدول تواريخ الميلاد الخاص بك، ثم انتقل إلىData > From Table/Range لتحميل بياناتك في Power Query.
2. في محرر Power Query، حددAdd Column > Custom Column.
3. في مربع الصيغة، أدخل كود M التالي لحساب العمر بالسنوات:
Date.Year(DateTime.LocalNow()) - Date.Year([DateOfBirth]) استبدلDateOfBirth برأس عمودك حسب الحاجة.

لحساب تقسيم أكثر تفصيلًا(سنوات، أشهر، وأيام)، يمكنك إضافة أعمدة منفصلة باستخدام:
let
Today = Date.From(DateTime.LocalNow()),
Birth = Date.From([Birthday]), Years = Date.Year(Today) - Date.Year(Birth) -
(if Date.AddYears(Birth, Date.Year(Today)-Date.Year(Birth)) > Today then 1 else 0),
AnchorY = Date.AddYears(Birth, Years),
mDiff = (Date.Year(Today)-Date.Year(AnchorY))*12 + (Date.Month(Today)-Date.Month(AnchorY)),
Months = if Date.AddMonths(AnchorY, mDiff) > Today then mDiff-1 else mDiff,
AnchorM = Date.AddMonths(AnchorY, Months),
Days = Duration.Days(Today - AnchorM)
in
Text.From(Years) & " years " & Text.From(Months) & " months " & Text.From(Days) & " days"

4. انقرOK. تُنتج هذه الطريقة عمودًا يعرض العمر، أو السنوات والأشهر والأيام، بناءً على الكود الذي استخدمته.
4. ثم انقر علىClose & Load لإرجاع البيانات المحولة إلى ورقة العمل الخاصة بك.
ملاحظات واستكشاف الأخطاء وإصلاحها:
- يتعامل Power Query مع مجموعات البيانات الكبيرة بكفاءة، ويُعيد الحساب تلقائيًا عند التحديث.
- إذا احتوى عمود تاريخ الميلاد على إدخالات غير صالحة أو فارغة، فتأكد من تنظيف البيانات قبل إنشاء أعمدة مخصصة.
- تأكد من مراجعة أسماء الأعمدة وضبط الصيغ بما يتوافق معها.
يُعد Power Query الحل المثالي للمستخدمين الذين يبحثون عن أداة ديناميكية وقابلة لإعادة الاستخدام دون الحاجة إلى كتابة صيغ Excel أو ماكرو. ومع ذلك، قد لا يكون متاحًا في إصدارات Excel الأقدم من 2016 أو في Excel Online (حسب مجموعة الميزات المتاحة).
استكشاف الأخطاء والاقتراحات:
بغض النظر عن طريقة حساب العمر التي تختارها، تأكد دائمًا من أن خلايا المصدر منسَّقة كتواريخ، وراجع المنطق مرتين إذا ظهرت نتائج غير متوقعة (مثل أعمار سالبة أو أخطاء في القيم). عند استخدام الصيغ، لن يتم تحديث تواريخ المرجع الثابتة تلقائيًا مع مرور الوقت، لذا استخدم=TODAY() للحفاظ على تحديث الأعمار باستمرار. تعد حلول VBA وPower Query الخيار الأمثل للتقارير المتقدمة أو الواسعة النطاق أو التي تتطلب تحديثًا دوريًّا. قيِّم احتياجاتك بدقة لتحديد الأنسب لسير عملك. ولا تنسَ دائمًا حفظ ملفك قبل تطبيق أي ماكرو أو تحويلات شاملة، واحتفظ بنسخة احتياطية عند الحاجة لتجنب فقدان البيانات أو إدخال تغييرات غير مقصودة.
أفضل أدوات الإنتاجية لمكتبتك
عزِّز مهاراتك في 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 يومًا بكامل الميزات— بدون تسجيل، بدون بطاقة ائتمان
- أفضل قيمة— وفِّر مقارنةً بشراء الإضافات بشكل منفصل