در بسیاری از پروژههای صنعتی، برنامهریز وزن (W) هر بسته کاری را میداند، بودجه یا ارزش (V) آن را در دست دارد و هزینه واقعی (C) را هم از سیستم مالی میگیرد — اما درصد پیشرفت فیزیکی (P) تکتک فعالیتها را ندارد. سؤال کلاسیک کنترلکننده پروژه دقیقاً همینجاست: با همین سه عدد (C، W، V) چطور ضریب وزن (W.F) و در نهایت درصد پیشرفت وزنی کل پروژه را حساب کنیم؟ این یادداشت یک پاسخ عملی میدهد — هم در اکسل و هم در Microsoft Project.
تعریف مختصر متغیرها
- W (وزن): وزن نسبی بسته کاری؛ مجموعش میتواند ۱۰۰ باشد یا هر عدد دیگری (مثلاً مجموع وزنها = ۱۰۰۰).
- V (ارزش / بودجه): ارزش پولی یا بودجهٔ تکمیل بسته — معادل BAC (Budget at Completion) آن فعالیت.
- C (هزینه واقعی): آنچه تاکنون خرج شده — معادل AC (Actual Cost) یا ACWP.
- W.F (ضریب وزن): سهم نرمالشدهٔ هر فعالیت از کل پروژه. دو تعریف رایج دارد (در ادامه).
فرمول پایه
۱) محاسبه ضریب وزن (W.F)
اگر وزندهی بر مبنای اهمیت فعالیتهاست:
W.F_i = W_i / ΣW
اگر ترجیح میدهید وزن را بر مبنای پول (ارزش) توزیع کنید — که در پروژههای نفت، گاز و پتروشیمی رایجتر است:
W.F_i = V_i / ΣV
در هر دو حالت، مجموع تمام W.Fها باید دقیقاً ۱ (یا ۱۰۰٪) باشد؛ این خودش یک چک اعتبارسنجی ساده است.
۲) پیشرفت وزنی وقتی P (پیشرفت فیزیکی) داریم
Weighted Progress = Σ ( W.F_i × P_i ) × 100
۳) وقتی فقط C داریم (سناریوی این پست)
وقتی درصد فیزیکی نداریم، از نسبت هزینه به عنوان برآورد پیشرفت استفاده میکنیم:
Cost Ratio_i = C_i / V_i Weighted Progress ≈ Σ ( W.F_i × (C_i / V_i) ) × 100
یعنی هر فعالیت را به اندازهٔ «سهم هزینهایاش از بودجه» پیش رفته فرض میکنیم، سپس با ضریب وزنش وزنیاش میکنیم.
مثال عددی
فرض کنید پروژه ۵ بسته کاری دارد:
| فعالیت | W | V (میلیون ریال) | C (هزینه تاکنون) | W.F = W/ΣW | نسبت هزینه C/V | سهم وزنیشده |
|---|---|---|---|---|---|---|
| A | 20 | 200 | 80 | 0.20 | 0.40 | 0.080 |
| B | 30 | 300 | 120 | 0.30 | 0.40 | 0.120 |
| C | 15 | 150 | 60 | 0.15 | 0.40 | 0.060 |
| D | 25 | 250 | 50 | 0.25 | 0.20 | 0.050 |
| E | 10 | 100 | 100 | 0.10 | 1.00 | 0.100 |
| جمع | 100 | 1000 | 410 | 1.00 | — | 0.410 |
پیشرفت وزنی تخمینی پروژه: 0.410 × 100 = ۴۱٪. نکتهٔ آموزنده در فعالیت D پیداست: فقط ۲۰٪ بودجهاش خرج شده (عقبتر از بقیه) و فعالیت E کاملاً تمام شده — دقیقاً همان چیزی که یک عدد واحد «میانگین هزینه کل» (۴۱٪) پنهان میکرد ولی وزندهی آن را شفاف نشان داد.
روش سلسلهمراتبی: وزن نسبت به سطح بالادستی (WBS)
در پروژههای واقعی، وزندهی تخت (همه فعالیتها نسبت به کل پروژه) خوانایی کمی دارد و با ساختار WBS همخوانی ندارد. روش حرفهای این است که وزن هر گره را نسبت به سطح بالادستی خودش (والد) تعریف کنیم — یعنی مجموع وزن فرزندان هر گره دقیقاً ۱۰۰٪ از آن والد باشد.
این دقیقاً همان چیزی است که مد نظر شماست: اگر وزن نسبتبهکلپروژه (همان «ارزش وزنی پروژه») و قیمت/ارزش (V) را داشته باشیم، وزن نسبتبهوالد را از این دو بهدست میآوریم:
W.F↑_i = V_i / V_parent ' یا معادلش — اگر وزن پروژهٔ خودِ گره و والد را داشته باشید: W.F↑_i = W.F_proj(i) / W.F_proj(parent) ' و وزن پروژهٔ نهاییِ گره = حاصلضرب وزنهای نسبتبهوالد در مسیر تا ریشه: W.F_proj(node) = W.F↑_node × W.F↑_parent × … × W.F↑_root
مثلاً اگر وزن پروژهٔ بسته الف را دارید (۰٫۱۸) و وزن پروژهٔ والدش — مثلاً «اجرا» (۰٫۶۰) — را هم دارید، وزن نسبتبهوالد = ۰٫۱۸ ⁄ ۰٫۶۰ = ۰٫۳۰ خواهد بود؛ بدون اینکه نیازی به جمعکردن کل پروژه باشد. اگر بهجای وزن پروژه، فقط قیمت (V) را دارید، همان رابطهٔ اول کافی است: ۰٫۳۰ = ۳۰۰ ⁄ ۱۰۰۰.
مثال دوسطحی
فرض کنید پروژه دو WBS بالا دارد: «مهندسی» (وزن پروژه ۰٫۴۰) و «اجرا» (وزن پروژه ۰٫۶۰). زیر «اجرا» سه بسته با قیمتهای زیر قرار دارد:
| بسته | والد | V (میلیون) | W.F↑ (نسبت به والد) | وزن پروژه |
|---|---|---|---|---|
| الف | اجرا | 300 | 300/1000 = 0.30 | 0.60 × 0.30 = 0.18 |
| ب | اجرا | 200 | 200/1000 = 0.20 | 0.60 × 0.20 = 0.12 |
| ج | اجرا | 500 | 500/1000 = 0.50 | 0.60 × 0.50 = 0.30 |
| جمع زیر اجرا | اجرا | 1000 | 1.00 | 0.60 |
توجه کنید: زیر «اجرا» جمع W.F↑ها دقیقاً ۱ است (یعنی ۱۰۰٪ والد)، و جمع وزن پروژهٔ فرزندان (۰٫۱۸ + ۰٫۱۲ + ۰٫۳۰ = ۰٫۶۰) دقیقاً برابر وزن پروژهٔ خودِ «اجرا» میشود. این خاصیت در هر سطح تکرار میشود و چککردن را ساده میکند — کافی است در هر گره مجموع فرزندانش ۱ باشد.
پیادهسازی در اکسل
جدول را به این شکل بچینید (سرستونها در سطر ۱، دادهها در سطرهای ۲ تا ۶):
| ستون | محتوا |
|---|---|
| A | نام فعالیت |
| B | W (وزن) |
| C | V (ارزش/بودجه) |
| D | C (هزینه واقعی) |
| E | W.F (ضریب وزن) |
| F | نسبت هزینه |
| G | سهم وزنیشده |
فرمولها (برای سطر ۲، سپس کشیدن به پایین):
E2: = B2 / SUM($B$2:$B$6) F2: = D2 / C2 G2: = E2 * F2 ' درصد پیشرفت وزنی کل (مثلاً در G7): G7: = SUM(G2:G6) * 100 ' نسخه مبتنی بر ارزش (اگر وزندهی بر مبنای پول باشد): E2: = C2 / SUM($C$2:$C$6)
نکته: علامت $ دور محدودهٔ SUM ضروری است تا وقتی فرمول را به پایین میکشید، مخرج همیشه کل ستون باقی بماند. ستون G را روی «درصد» فرمت کنید تا عدد نهایی خواناتر شود.
نسخه والدنسبت (در اکسل)
یک ستون «والد» (متن) اضافه کنید. وزن نسبتبهوالد را با SUMIF میگیریم — یعنی قیمت گره تقسیمبر مجموع قیمت همه فرزندان همان والد:
H2 (والد): متن، مثلاً "اجرا" I2 (W.F نسبتبهوالد): = C2 / SUMIF($H$2:$H$6, H2, $C$2:$C$6) J2 (وزن پروژه): = I2 * (وزن پروژهٔ والد از جدول سطح بالا) ' چک: جمع I برای هر والد باید ۱ باشد = SUMIF($H$2:$H$6, "اجرا", $I$2:$I$6)
اگر وزن پروژهٔ والد را از قبل دارید (همان «ارزش وزنی پروژه»)، نیازی به جمع کل پروژه نیست؛ فقط در امتداد مسیر WBS ضرب کنید.
پیادهسازی در Microsoft Project (MSP)
MSP بهتنهایی عددی به نام «W.F» ندارد، اما با فیلدهای سفارشی (Custom Fields) و Rollup میتوانید دقیقاً همین محاسبه را درون خود برنامه داشته باشید و در گزارشها بیاورید.
گام ۱ — فیلدهای پایه
- Number1 = W (وزن): برای هر فعالیت برگ (leaf) مقدار وزن را وارد کنید.
- Number2 = V (ارزش/بودجه): میتوانید همان «Baseline Cost» را بگیرید (بعد از تعریف Baseline) یا دستی وارد کنید.
- هزینه واقعی: از فیلد داخلی
ACWP(هزینه واقعی کار انجامشده) استفاده کنید — بعد از ثبت متریال و کار واقعی پر میشود.
گام ۲ — جمعکردن وزن در سطح پروژه (Rollup)
روی فیلد Number1 کلیک راست → Custom Fields → بخش Calculation for summary rows را روی Sum بگذارید. حالا Task خلاصهٔ پروژه (Project Summary) مقدار ΣW را نشان میدهد.
گام ۳ — فرمول ضریب وزن (W.F)
یک فیلد فرمولی جدید (مثلاً Number3) با این فرمول تعریف کنید:
Number3 (W.F) = [Number1] / [Rollup of Number1 at project summary]
عملیترین راه: چون MSP در فرمول بهسختی «مجموع کل» را مستقیم میدهد، مقدار Number1 را در Task خلاصهٔ پروژه (که حاصل Rollup است) به عنوان مخرج به کار ببرید. نتیجه برای هر فعالیت همان W.F_i میشود.
گام ۴ — نسبت هزینه و سهم وزنیشده
دو فیلد فرمولی دیگر اضافه کنید:
Number4 (Progress Proxy) = [ACWP] / [Baseline Cost] Number5 (Weighted) = [Number1] * [Number4] / 100
فیلد Number5 را هم روی Sum (Rollup) تنظیم کنید تا در سطح خلاصه جمع شود.
گام ۵ — درصد پیشرفت وزنی کل
در Task خلاصهٔ پروژه:
Weighted Progress % = (Sum of Number5) / (Sum of Number1) * 100
این عدد را میتوانید مستقیماً در نوار وضعیت، نمودارها یا گزارشهای MSP نمایش دهید — بدون نیاز به خروجی به اکسل.
والدنسبت در MSP
چون MSP ساختار WBS را میشناسد، والد هر فعالیت همان Task خلاصهٔ بالادستی است. کافی است فیلد ارزش (Number2) را روی Sum (Rollup) تنظیم کنید تا در سطح خلاصهٔ والد جمع شود، سپس فرمول والدنسبت را بنویسید:
Number6 (W.F relative to parent) = [Number2] / [Rollup of Number2 at parent summary]
وزن پروژهٔ هر گره را با ضرب در امتداد مسیر WBS (همانطور که در فرمول بالا آمد) بهدست آورید. مزیت این روش: وقتی ساختار WBS تغییر میکند یا بستهای جابجا میشود، وزن نسبتبهوالد ثابت میماند و فقط جمعهای سطح بالاتر تصحیح میشوند.
نکات حرفهای
- چک ΣW.F = ۱ (در هر سطح): در روش تخت، جمع کل W.Fها باید ۱ باشد؛ در روش سلسلهمراتبی، مجموع W.F↑ فرزندانِ هر گره باید ۱ باشد. اگر نشد، مخرج فرمول اشتباه کشیده شده است.
- Procurement را جدا ببینید: فعالیتهای خرید تجهیزات معمولاً پولشان زود خرج میشود ولی فیزیکی دیر؛ نسبت هزینه در آنها کمتر قابل اعتماد است.
- ترکیب با روش ۰-۵۰-۱۰۰ یا مایلاستون: برای بستههای حساس، وزن را با یک درصد فیزیکیِ حداقلی ترکیب کنید تا خطای نسبت هزینه کم شود.
- تورم: ارزش (V) را به قیمت روز نگه دارید؛ در پروژههای چندساله، V با سال پایهٔ ثابت باعث اشتباه در نسبت میشود.
جمعبندی
وقتی فقط هزینه (C)، وزن (W) و ارزش (V) دارید، ضریب وزن (W.F) پل میان «پولی که خرج شده» و «کار واقعی» است. فرمول ساده است: ابتدا W.F را با تقسیم بر مجموع وزنها نرمال کنید، سپس با نسبت هزینه (C/V) ضرب کنید و در نهایت جمع بگیرید. در اکسل این سه فرمول در چند ثانیه حاضر است و در MS Project با فیلدهای سفارشی و Rollup، همین عدد بهصورت زنده و یکپارچه با برنامه بهروز میماند. نتیجه یک پیشرفت وزنیِ دفاعپذیر است که هم برای گزارش به مدیریت کافی است و هم خطاهای پنهان در میانگین سادهٔ هزینه را آشکار میکند.