ویژگی تصویر

تابع WORKDAY در اکسل — محاسبه تاریخ‌های کاری به‌صورت دقیق

  /  اکسل   /  تابع WORKDAY در اکسل
بنر تبلیغاتی الف

تابع WORKDAY در اکسل ابزاری ساده اما قدرتمند برای محاسبه تاریخِ حاصل از افزودن یا کسری از روزهای کاری به یک تاریخ مبنا است. این تابع به شما امکان می‌دهد تعطیلات رسمی و روزهای غیرکاری (weekends) را حذف کنید تا تاریخ‌های دقیق تحویل، پرداخت حقوق، یا مهلت‌ها را محاسبه کنید.

تعریف و ساختار تابع WORKDAY

ساختار پایه تابع WORKDAY در اکسل به صورت زیر است:

فرممعنی
=WORKDAY(start_date, days, [holidays])محاسبه تاریخ بعد از افزودن تعداد مشخصی روز کاری به تاریخ شروع؛ آرگومان اختیاری holidays فهرستی از تعطیلات است.
  • start_date: تاریخ شروع (می‌تواند مرجع سلول یا مقدار تاریخ باشد).
  • days: تعداد روزهای کاری که باید اضافه یا کم شوند (عدد صحیح؛ مقادیر منفی برای برگشت به گذشته).
  • holidays: (اختیاری) برداری از تاریخ‌های تعطیل که نباید به‌عنوان روز کاری شمرده شوند.

مثال‌های عملی (فرمول‌های اکسل)

مثال ساده: اگر در سلول A2 تاریخ 2025/11/01 باشد و بخواهید 10 روز کاری بعد را پیدا کنید:

=WORKDAY(A2, 10)

این فرمول تاریخ 10 روز کاری (بدون احتساب شنبه و یکشنبه و تعطیلات) بعد از تاریخ A2 را بازمی‌گرداند. اگر A2 یک جمعه یا شنبه باشد، شمارش از اولین روز کاری بعدی انجام می‌شود.

مثال با لیست تعطیلات: فرض کنید محدوده C2:C6 شامل تاریخ‌های تعطیلات رسمی است:

=WORKDAY(A2, 10, C2:C6)

در این حالت، تاریخ‌های داخل C2:C6 نیز از شمارش حذف می‌شوند و تاریخ نهایی طبق تقویم کاری محاسبه می‌شود.

WORKDAY.INTL — کنترل کامل روی روزهای تعطیل هفتگی

تابع WORKDAY.INTL نسخه پیشرفته‌تر است که به شما اجازه می‌دهد الگوی تعطیلات هفتگی (weekend) را مشخص کنید. ساختار آن:

=WORKDAY.INTL(start_date, days, [weekend], [holidays])

آرگومان weekend می‌تواند یک عدد از پیش‌تعریف شده (۱ تا ۱۷) یا یک رشته ۷کاراکتری از 0 و 1 باشد که به ترتیب از دوشنبه تا یکشنبه نشان می‌دهد کدام روزها تعطیل هستند (1=تعطیل، 0=کاری).

مثال: شنبه و یکشنبه به‌عنوان تعطیلات (رشته):

=WORKDAY.INTL(A2, 5, "0000011", C2:C6)

در این رشته، دو رقم آخر (شنبه و یکشنبه) برابر 1 هستند، یعنی آن روزها جزو تعطیلات هفتگی محسوب می‌شوند.

جدول نمونه کدهای weekend (پرتکرار)

کدتعریف
1شنبه-یکشنبه (پیش‌فرض)
2یکشنبه-دوشنبه
11فقط یکشنبه تعطیل
17سفارشی با رشته ۷ رقمی

برای لیست کاملِ کدها می‌توانید به راهنمای اکسل مراجعه کنید، یا به‌جای کد از رشته ۷تایی برای کنترل دقیق استفاده کنید.

نکات و جزئیات فنی

  • اگر مقدار days غیر عدد صحیح باشد، اکسل قسمت کسری را حذف می‌کند (Truncate) و فقط بخش صحیح را در نظر می‌گیرد.
  • اگر start_date متنی باشد، بهتر است با تابع DATE یا تبدیل تاریخ به فرمت صحیح از خطا جلوگیری کنید؛ اکسل تاریخ‌ها را بر پایه serial number ذخیره می‌کند.
  • WORKDAY در اکسل 2007 و بعد از آن به‌صورت داخلی موجود است؛ در نسخه‌های قدیمی‌تر ممکن است نیاز به افزودنی Analysis ToolPak باشد.
  • اگر بخواهید روزی را صرفاً به تاریخ کاری بعدی برگردانید (بدون تغییر در مقدار days)، از ترکیب با IF و WEEKDAY استفاده کنید؛ اما WORKDAY به طور ذاتی این کار را انجام می‌دهد وقتی days=0، خروجی اولین روز کاری بعدی یا همان روز است (بسته به اینکه start_date کاری باشد یا خیر).

نمونه کاربردها در مدیریت پروژه و منابع انسانی

  • محاسبه تاریخ تحویل وظایف با کنار گذاشتن تعطیلات و آخر هفته‌ها.
  • محاسبه تاریخ پرداخت حقوق یا پرداخت فاکتورها که باید در روزهای کاری انجام شود.
  • تنظیمات خودکار برای اعلان‌ها و یادآورها در سیستم‌های گزارش‌دهی بر اساس تاریخ کاری.
  • برنامه‌ریزی خطوط تولید که نیاز به محاسبه زمان کاری حقیقی دارد.

مثال VBA برای استفاده از WORKDAY

Sub CalcWorkdayVBA()
    Dim startDate As Date
    Dim resultDate As Date
    Dim daysToAdd As Long
    startDate = Range("A2").Value
    daysToAdd = Range("B2").Value
    resultDate = WorksheetFunction.WorkDay(startDate, daysToAdd, Range("C2:C6"))
    Range("D2").Value = resultDate
End Sub

این ماکرو تاریخ شروع را از سلول A2 می‌گیرد، تعداد روزهای کاری را از B2 می‌خواند، لیست تعطیلات را از C2:C6 استفاده می‌کند و نتیجه را در D2 درج می‌کند. تابع WorksheetFunction.WorkDay معادل تابع WORKDAY بر بستر VBA است.

موارد قابل توجه و اشتباهات رایج

  • آرایه holidays باید تاریخ‌های واقعی باشد؛ قراردادن متن‌های غیرقابل تبدیل به تاریخ منجر به خطا می‌شود.
  • استفاده از فرمت‌های تاریخ محلی (مثلاً dd/mm/yyyy یا mm/dd/yyyy) باید مطابق تنظیمات منطقه‌ای سیستم باشد تا خطا پیش نیاید.
  • برای محاسبات حجیم در شیت‌های بزرگ، لیست‌های holidays را در یک جدول داخلی نگه دارید تا محاسبات سریع‌تر و نگهداری آسان‌تر شود.

توصیه‌های متخصصی

  • برای انعطاف‌پذیری بیشتر، از WORKDAY.INTL استفاده کنید تا بتوانید الگوهای تعطیلی محلی یا شیفتی را مدل‌سازی کنید.
  • هنگام طراحی داشبوردهای زمان‌بندی، فهرست تعطیلات را در یک شیت جداگانه قرار دهید و با نام‌گذاری محدوده (Named Range) آن را در فرمول‌ها ارجاع دهید؛ این کار خوانایی و نگهداری را بهبود می‌دهد.
  • برای جلوگیری از خطا، ورودی‌های تاریخ را با Data Validation محدود کنید تا کاربران فقط تاریخ صحیح وارد کنند.

خلاصه

تابع WORKDAY و نسخه پیشرفته WORKDAY.INTL ابزارهای ضروری برای هر کسی هستند که می‌خواهد برنامه‌ریزی مبتنی بر روزهای کاری دقیق انجام دهد. از محاسبه مهلت‌ها گرفته تا زمان‌بندی پرداخت‌ها و گزارش‌های پروژه، این توابع کمک می‌کنند تاریخ‌های حقیقی کاری را بدون دردسر محاسبه کنید.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: