پروفایل برنامه‌ریزی و کنترل پروژه
نادر خرمی راد

شمسی کردن تاریخ ها در پراجکت

عده‌ای از همکارانمون برای من برنامه‌ای (پراجکتی) فرستاده بودن که دیدم توش تاریخ‌ها با فرمول محاسبه می‌شه. چون این روش ممکنه برای بعضی‌ها به درد بخوره، فرمول‌هاش رو می‌ذارم اینجا. از اون همکاران پرسیدم که فرمول‌ها رو چه کسی تهیه کرده تا اینجا ازش نام ببرم، که متاسفانه اسمش رو نمی‌دونستن. در هر حال با تشکر از این فردی که نمی‌شناسیم.

فرمول تاریخ شروع:

(Int((Int([Start]-DateValue("21/3/1997 00:00:00"))-Int(Int([Start]-DateValue("21/3/1997 00:00:00"))/1461))/365)+76) & "/" & (IIf(((((Int([Start]-DateValue("21/3/1997 00:00:00")))-Int((Int([Start]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))<=186,Int(((((Int([Start]-DateValue("21/3/1997 00:00:00")))-Int((Int([Start]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))/31)+1,Int((((((Int([Start]-DateValue("21/3/1997 00:00:00")))-Int((Int([Start]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))-186)/30)+7)) & "/" & (IIf(((((Int([Start]-DateValue("21/3/1997 00:00:00")))-Int((Int([Start]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))<=186,Int(((((Int([Start]-DateValue("21/3/1997 00:00:00")))-Int((Int([Start]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365)) Mod 31)+1,Int((((((Int([Start]-DateValue("21/3/1997 00:00:00")))-Int((Int([Start]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))-186) Mod 30)+1+(IIf((Int([Start]-DateValue("21/3/1997 00:00:00"))) Mod 1461=0,1,0))))

فرمول تاریخ پایان:

(Int((Int([Finish]-DateValue("21/3/1997 00:00:00"))-Int(Int([Finish]-DateValue("21/3/1997 00:00:00"))/1461))/365)+76) & "/" & (IIf(((((Int([Finish]-DateValue("21/3/1997 00:00:00")))-Int((Int([Finish]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))<=186,Int(((((Int([Finish]-DateValue("21/3/1997 00:00:00")))-Int((Int([Finish]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))/31)+1,Int((((((Int([Finish]-DateValue("21/3/1997 00:00:00")))-Int((Int([Finish]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))-186)/30)+7)) & "/" & (IIf(((((Int([Finish]-DateValue("21/3/1997 00:00:00")))-Int((Int([Finish]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))<=186,Int(((((Int([Finish]-DateValue("21/3/1997 00:00:00")))-Int((Int([Finish]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365)) Mod 31)+1,Int((((((Int([Finish]-DateValue("21/3/1997 00:00:00")))-Int((Int([Finish]-DateValue("21/3/1997 00:00:00")))/1461)) Mod 365))-186) Mod 30)+1+(IIf((Int([Finish]-DateValue("21/3/1997 00:00:00"))) Mod 1461=0,1,0))))

فرمول‌ها رو تو یکی از فیلدهای Text وارد کنین و یادتون هم نره که برای خلاصه فعالیت‌ها گزینه Use Formulas رو انتخاب کنین.

اگه خواستین از چنین روشی استفاده کنین این مسایل رو در نظر داشته باشین:

  • برنامه به شدت کند می‌شه، چون بعد از هر تغییر نتیجه این فرمول‌ها دوباره محاسبه می‌شن. من خودم وقتی قراره با برنامه اون‌ها کار کنم مجبورم محاسبه رو غیر فعال کنم، چون اصلا نمی‌تونم با برنامه‌ای که کند باشه کار کنم و عصبی نشم.
  • محور گانت و کادرهای انتخاب تاریخ و … شمسی نمی‌شن دیگه… بدیهیه.

کلا پیشنهاد می‌کنم برای شمسی کردن تاریخ‌ها از برنامه‌های تجاری مثل پرنیان و ادسافت استفاده کنین.