تابع today در اکسل
تابع TODAY یکی از توابع پایهای اکسل برای کار با تاریخ است که تاریخ روز جاری (بدون زمان) را برمیگرداند. این تابع در گزارشگیری، محاسبه عمر، هشدارهای تاریخ انقضا و داشبوردهای پویا بسیار پرکاربرد است. در ادامه نحوه کار، مثالهای عملی، نکات فنی و جایگزینهای مفید را بهصورت کاربردی بررسی میکنیم.
قواعد پایه
- نوشتار:
=TODAY()— بدون آرگومان. - خروجی: یک مقدار تاریخ (serial date) که فقط تاریخ را نشان میدهد و ساعت را صفر فرض میکند.
- قابلیت بازمحاسبه: volatile است؛ یعنی در هر بازمحاسبه (Recalculate) یا باز و بسته کردن فایل، مقدار آن بهروزرسانی میشود.
مثالهای ساده
=TODAY()این فرمول تاریخ امروز را وارد سلول میکند. چون volatile است، فردا بهصورت خودکار عدد جدید را نشان میدهد.
محاسبه سن (سال کامل)
=DATEDIF(B2, TODAY(), "Y")در این مثال فرض میکنیم تاریخ تولد در سلول B2 قرار دارد. تابع DATEDIF سالهای کامل بین تاریخ تولد و امروز را محاسبه میکند (مثلاً محاسبه سن).
محاسبه روزهای باقیمانده تا تاریخ انقضا
=ExpiryDate - TODAY()اگر تاریخ انقضا در سلول ExpiryDate باشد، نتیجه تعداد روزهای باقیمانده را بهصورت عددی نشان میدهد. میتوان قالب سلول را General یا Number گذاشت.
استفاده با شرطها برای هشدار
=IF(ExpiryDate-TODAY()<=30, "نزدیک به انقضا", "OK")این فرمول برای نمایش پیام هشدار در صورتی که تاریخ انقضا کمتر یا مساوی ۳۰ روز با امروز فاصله داشته باشد، کاربرد دارد.
مثال با NETWORKDAYS برای محاسبه روزهای کاری
=NETWORKDAYS(TODAY(), ProjectEnd, Holidays)این فرمول تعداد روزهای کاری بین امروز و تاریخ پایان پروژه را محاسبه میکند و میتوان محدوده تعطیلات رسمی را در پارامتر Holidays قرار داد.
مثال با EDATE و افزودن ماه
=EDATE(TODAY(), 3)این مثال تاریخ سه ماه بعد از امروز را برمیگرداند — مفید برای محاسبه تاریخ تمدید یا پرداختهای دورهای.
تبدیل تاریخ به متن قابل نمایش
=TEXT(TODAY(), "yyyy-mm-dd")این فرمول تاریخ امروز را به رشتهای با فرمت مشخص تبدیل میکند. توجه داشته باشید خروجی دیگر تاریخ محسوب نمیشود بلکه یک متن است.
تفاوت TODAY و NOW
- TODAY(): فقط تاریخ (بدون ساعت) را برمیگرداند.
- NOW(): تاریخ و زمان دقیق فعلی را برمیگرداند.
وقتی به ساعت نیاز ندارید از TODAY استفاده کنید تا خروجی تمیزتر و قابلخواناتر باشد.
نکات فنی و بهترین روشها
- volatile بودن: استفادهٔ زیاد از توابع volatile (مانند TODAY) در شیتهای بزرگ و محاسبات سنگین ممکن است سرعت محاسبات را کاهش دهد.
- برای تاریخ ثابت (غیر پویا) از کلید میانبر Ctrl + ; استفاده کنید که تاریخ ثابت را وارد میکند.
- اگر نیاز به تاریخ ثبتشده در زمان خاص دارید (مثلاً زمان ثبت رکورد) از VBA یا فرمولهای شرطی همراه با رویدادهای Worksheet_Change استفاده کنید.
- مطمئن شوید تاریخها بهصورت تاریخ (Date serial) ذخیره شدهاند نه متن؛ در غیر این صورت عملیات ریاضی روی تاریخها درست کار نمیکند.
نمونه VBA برای نوشتن تاریخ ثابت هنگام تغییر سلول
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A:A")) Is Nothing Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = Date
Application.EnableEvents = True
End If
End Subاین ماکرو وقتی سلولی در ستون A تغییر کند، در ستون کناری همان ردیف تاریخ ثابت امروز را قرار میدهد. از خاموش و روشن کردن events برای جلوگیری از حلقهٔ بینهایت استفاده شده است.
خطرات و خطاها
- تاریخها بهصورت متن: اگر تاریخها متن باشند، تفریق یا توابع تاریخ خطا میدهند یا نتایج اشتباه میشوند.
- منطقه جغرافیایی (Locale): فرمت نمایش تاریخ وابسته به تنظیمات منطقهای (مثلاً dd/mm/yyyy یا mm/dd/yyyy) است ولی عدد داخلی (serial) ثابت است.
- نوسان زمانبندی: در محیطهایی که تاریخ سیستم کاربر متفاوت است (مشتریان داخل یک شبکه) مقدار TODAY تابع تاریخ سیستم محلی را میگیرد.
مثالهای ترکیبی پیشرفته
محاسبه درصد تکمیل براساس زمان سپریشده نسبت به بازه پروژه:
=MIN(1, (TODAY()-StartDate)/(EndDate-StartDate))این فرمول درصد پیشرفت زمانی پروژه را بین 0 تا 1 (یا ضرب در 100 برای درصد) برمیگرداند و از MIN برای جلوگیری از مقادیر بالاتر از 100٪ استفاده شده است.
جدول خلاصه توابع مرتبط
| هدف | تابع | رویه/توضیح |
|---|---|---|
| تاریخ امروز | TODAY() | برمیگرداند تاریخ جاری بدون زمان |
| تاریخ و زمان | NOW() | تاریخ و زمان فعلی |
| تاریخ ثابت سریع | Ctrl + ; | میانبر کیبورد برای وارد کردن تاریخ بهصورت ثابت |
خلاصه و توصیههای عملی
تابع TODAY در اکسل ابزار ساده و قدرتمندی برای کارهای پویا با تاریخ است. هنگام استفاده دقت کنید که volatile بودن آن میتواند در دفترهای کاری بزرگ تأثیر بر عملکرد داشته باشد، و در صورت نیاز به تاریخ ثابت از میانبر یا ماکرو استفاده کنید. ترکیب TODAY با توابعی مانند DATEDIF، NETWORKDAYS و EDATE امکان طراحی هشدارها و داشبوردهای هوشمند را فراهم میکند.
اگر مایلید میتوانم چند نمونه آماده (template) برای محاسبه سن، هشدار تاریخ انقضا و داشبورد تاریخبندی برایتان آماده کنم تا مستقیم در فایل اکسل قرار دهید.
آیا این مطلب برای شما مفید بود ؟




