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

نادر خرمی راد

تحلیل و درک فرمول‌های طولانی

سوالی تو یه ایمیل از من شده بود که الان فکر کردم بهتره جوابش رو اینجا بنویسم، چون احتمالا سوال کسای دیگه‌ای هم باشه.

نویسنده ایمیل در جستجوی معنی این فرمول بود که تو یه فایل پراجکت دیده:

=IIf(ID=0,ROUND(IIf([Number1]=0,[Number4],[Number5]/[Number1]*100),2),ROUND(IIf([Number1]=0,[Number4],[Number5]/[Number1]*100),1))

و به خاطر طولانی بودن فرمول به نتیجه نرسیده بود. حالا با هم روند درک یه فرمول طولانی رو بررسی می‌کنیم.

فرمول‌های اینچنینی تابعی هستن و به همین خاطر اولین قدم درک اجزای توابعه. کل این فرمول داخل یه تابع IF هست و توابع شرطی معمولا سه بخش دارن: اگه شرط برقرار بود فلان مقدار، وگرنه بهمان مقدار.

پس اولین کارمون اینه که بخش‌های مختلف این تابع رو از هم جدا کنیم. اگه به کارهای اینچنینی عادت داشته باشین به سرعت و با نگاه می‌تونین از هم جداشون کنین و اگر هم نه، می‌تونین با مقایسه پرانتزهایی که باز و بسته می‌شن به نتیجه برسین. ولی به هر حال کار راحت‌تری هم می‌شه کرد. نرم‌افزار Notepad++ رو دانلود و نصب کنین. این نرم‌افزار خیلی ساده و سبکیه که زندگی بدون اون برای من سخت می‌شه!

حالا فرمول رو اونجا کپی می‌کنیم:

اولین پارامتر ورودی تابع شرطی ID=0 هست که ساده‌س. بعدی تابع ROUND هست که راحت نمی‌شه انتهاش رو پیدا کرد. اشاره‌گر متن رو می‌بریم روی پرانتز شروع ROUND و نرم‌افزار پرانتز پایان رو با رنگ قرمز بهمون نشون می‌ده.

حالا این محدوده که عملا می‌شه دومین پارامتر تابع شرطی رو Cut می‌کنیم و به جاش یه متغیر می‌ذاریم، مثلا A. اون پایین هم می‌نویسیم که A خودش چطوری محاسبه می‌شه (اون عبارتی که قبلا Cut کرده بودیم رو Paste می‌کنیم).

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

خوب، همین الان خیلی ساده شده، درسته؟ می‌تونیم یه مرحله دیگه هم ساده‌ش کنیم؛ عبارتی که تو متغیرهای A و B تکرار شده رو هم ازشون خارج می‌کنیم و به جاش C می‌ذاریم.

الان دیگه فرمول عظمت قبل رو نداره و راحت می‌تونیم درکش کنیم. با C شروع می‌کنیم: حاصل تقسیم Number 5 بر Number1 محاسبه شده و به مقیاس ۱۰۰ در اومده (تا شکل درصدی به خودش بگیره). بعد چون ممکن بوده Number1 بعضی وقت‌ها صفر باشه و در نتیجه خطای تقسیم بر صفر ایجاد کنه، یه تابع شرطی هم نوشته شده که اگه اون صفر بود، به جای حاصل تقسیم، مقدار Number4 رو نشون بده. حالا این‌که این سه فیلد اختصاصی پراجکت چی هستن رو می‌شه حدس زد،‌ ولی بهتره که فرمول‌هاشون رو جداگانه چک کنیم که مطمئن بشیم.

حالا فرمول اصلی چیه؟ فرمول اصلی اینه که اگه برای ردیف صفر، یعنی خلاصه فعالیت پروژه محاسبه می‌شد، مقدار C رو به دو رقم اعشار گرد کنه و در غیر این صورت به یک رقم.

ساده نبود؟

نوشته نادر خرمی راد (Nader Khorrami Rad)

ارجاع به فیلدهای دیگر در فرمول‌های پراجکت

شاید وقتی فرمول‌نویسی می‌کنین به این فکر کرده باشین که چطوری می‌شه به فیلدی از یه آیتم دیگه (مثلا خلاصه فعالیتِ هر فعالیت) ارجاع داد. متاسفانه امکانی عمومی برای این کار وجود نداره؛ هرچند که امکانات محدودی مثل project start، project finish و امثال اون‌ها برای ارجاع دادن به فیلدهای project summary وجود داره. اگه امکانی در نظر می‌گرفتن که هر آیتم به تمام فیلدهای آیتم مادر و آیتم فرزندش و project summary بتونه ارجاع بده، اونوقت اکثر نیازها برطرف می‌شه. به هر حال که فعلا اینطوری نیست!
اگه لازم باشه که کارهای پیچیده‌ای با ترکیب اطلاعات آیتم‌های مختلف انجام بدین، باید برنامه‌نویسی VBA بکنین.

نوشته نادر خرمی راد (Nader Khorrami Rad)

خودآموز فرمول نویسی در اکسل

کارهای بعد از تالیف کتاب داره پیش می‌ره. البته به نظر من حقش بود که به نمایشگاه کتاب برسه، که به هر حال نرسید. چند روز پیش برای کنترل فرستاده بودنش پیشم.

کلا فکر می‌کنم چیز زیادی تا چاپش نمونده باشه، چون کتاب خیلی کوچیکه (اگه درست یادم باشه حدود 160 صفحه).

فکر می‌کنم کتاب بدی نشده باشه.

نوشته نادر خرمی راد (Nader Khorrami Rad)
اشتراک مطالب سایت

با اشتراک در فرم زیر مطالب جدید برایتان ایمیل می‌شوند:

اشتراک مطالب در تلگرام