|
TF يا TaskFieldValue
اين تابع مقدار فيلدهاي پراجكت را براي هر فعاليت دلخواه برميگرداند. شكل كلي
اين تابع بصورت زير است:
TF(FieldName,[TaskID],[AtDate],[Timescale],[Count])
كه در آن:
FiledName: نام فيلد مورد نظر است.
TaskID: شماره فعاليت مورد نظر است. در صورتيكه اين فيلد خالي رها شود و يا
مقدار صفر داشته باشد، فيلد مورد نظر براي كل پروژه محاسبه ميشود. درصورتيكه شماره
مورد نظر درست نباشد (كمتر از صفر يا بيشتر از تعداد فعاليتها باشد) TF رشتهاي
خالي (Blank) را برميگرداند.
AtDate: در مورد فيلدهاي وابسته به زمان تاريخي است كه براي محاسبه فيلد،
مورد نظر است. اين فيلد ميتواند به صورت تقويم شمسي و يا ميلادي معرفي شود. در
صورت استفاده از تقويم شمسي آنرا حتما با شكل yyyy/mm/dd وارد كنيد و حتما سال را
به صورت كامل (1383 و نه 83) معرفي كنيد.
Timescale: در صورتيكه فيلد وابسته به زمان به صورت پريوديك مورد نظر باشد،
اين پارامتر مشخص كننده نوع پريود است. مقادير قابل قبول براي اين فيلد اعداد صفر
براي روزانه، 1 براي هفتگي و 2 براي ماهيانه است. همچنين ميتوان از حروف اختصاري
d,w يا m استفاده كرد. در صورتيكه مقدار منفي يك (-1) به اين پارامتر اختصاص داده
شود، اين تابع از مقدار پيشفرض تنظيم شده در پنجره تنظيمهاي پيكسل استفاده خواهد
كرد.
Count: در صورت تنظيم مقدار براي Timescale با اين پارامتر ميتوان تعداد
دلخواهي از پريود انتخاب شده را مشخص كرد. براي مثال اگر پريود زماني به صورت
روزانه باشد، ميتوان با مقدار 10 براي Count پريود زماني را به صورت 10 روزه تنظيم
كرد.
TF در صورت بروز اشكال ممكن است يكي از مقادير زير را برگرداند:
"": در حالتي كه شماره فعاليت صحيح نباشد (كوچكتر از صفر و يا بيشتر از تعداد
فعاليتهاي پروژه باشد).
#Name: در حالتيكه نام فيلد درست نباشد.
#Value: در صورتيكه اشكالي در پارامترها و يا اتصال به MSP وجود داشته باشد.
#NA: در صورتيكه اطلاعات وابسته به زمان براي تاريخهاي نامناسب درخواست شود. مثلا
فيلد پيشرفت واقعي براي تاريخي بعد از تاريخ وضعيت (Status Date).
مثال:
| |
|
=TF("Start") |
تاريخ شروع پروژه |
|
=TF("Finish";1) |
تاريخ پايان براي فعاليت شماره 1 |
|
=TF("%Complete";;"1383/1/1") |
مقدار پيشرفت تا تاريخ 1/1/83 براي كل پروژه |
=TF("Cost";;"1383/1/1";2) |
مقدار هزينه پروژه براي فروردين ماه 83 |
=TF("BCWS";;"1383/1/1";0;10) |
مقدار BCWS براي ده روزي كه 1/1/83 در آن قرار دارد |
=TF("Name";B4) |
نام فعاليتي كه شماره آن در خانه B4 است. |
=TF("BP";;C4;-1) |
مقدار BP براي كل پروژه در تاريخ مشخص شده در خانه C4 و با اسكيل زماني
پيشفرض (معرفي شده در پنجره تنظيم) |
ترفندها و نكات مهم
• استفاده از شماره فعاليت در تابع TF اين مشكل را دارد كه بعضا در پراجكت با درج و
حذف فعاليتها شماره فعاليتهاي ديگر تغيير ميكند. براي آنكه اطلاعات فعاليت خاصي
را نمايش دهيد و مطمئن باشيد كه با تغيير پروژه و تغيير در شماره فعاليت مشكلي پيش
نخواهد آمد ميتوانيد از تابع UID استفاده كنيد. اين تابع شماره يك فعاليت را
براساس شماره يكتاي آن (Unique ID) بر ميگرداند. از آنجاييكه UID مربوط به يك
فعاليت هرگز تغيير نميكند، دچار مشكل تغيير در شماره فعاليتها نخواهيد شد. براي
مثال
:TF("Name";UID(1))
همواره نام فعاليتي كه Unique ID آن 1 است را برميگرداند.
• براي دسترسي به دسته خاصي از فعاليتها ميتوانيد از تابع ListQuery كه توضيح آن
ذيلا ميآيد استفاده كنيد.
• مقدار برگشتي براي فيلدهاي تاريخ نظير Start و يا Finish از نوع عددي تاريخ است.
براي نمايش مناسب آنها لازم است فرمت خانه براي تاريخ تنظيم شود و يا از توابع فرمت
كردن تاريخ نظير JFormatDate استفاده شود.
• در صورتيكه TF مقدار #Value بر ميگرداند، ابتدا اطمينان حاصل كنيد كه كليه
پارامترها به درستي معرفي شدهاند، پس از آن از طريق پنجره تنظيم اتصال به پرونده
مورد نظر را چك كنيد.
در ضميمه 1 ليست كليه فيلدهايي كه شما ميتوانيد از طريق تابع TF به آنها دسترسي
داشته باشيد آورده شده است. به صورت كلي اين ليست شامل كليه فيلدهاي استاندارد
پراجكت به اضافه فيلدهاي تخصصي پيكسل ميشود.
مايكروسافت پراجكت ميتواند فيلدهاي ارزش بدست آمده را بر حسب هريك از خطوط مبناي
مختلف (Baseline1 – 10) محاسبه كند. اينكار از طريق منوي Tools/Options در قسمت
Calculation و با استفاده از كليد Earned Value انجام ميشود. در پيكسل براي آنكه
دسترسي به اين فيلدها ساده شود قرارداد خاصي اختيار شده است به اين ترتيب كه
اينگونه فيلدها را ميتوان با شمارهي خط مبناي مورد نظر محاسبه كرد. براي مثال:
=TF("BCWS1")
مقدار فيلد BCWS را بر اساس Baseline1 برميگرداند.
StatusDate:
اين تابع تاريخ وضعيت تنظيم شده در پراجكت را بر ميگرداند و بصورت زير استفاده
ميشود.
=StatusDate()
همانطور كه در قسمت معرفي نوارابزار پيكسل توضيح داده شده، براي تنظيم تاريخ وضعيت
پروژه لازم نيست به پرونده پروژه در پراجكت مراجعه نمود و از آنجا اين تغيير را
اعمال نمود و اين كار از داخل Excel هم امكانپذير ميباشد. اما از هر جايي كه اين
تنظيم صورت گرفته باشد؛ تابع StatusDate اين مقدار را برميگرداند.
TimeScale
اين تابع براي آنكه كاربر بتواند يك Range از خانههاي اكسل را شبيه به محور زمان
(TimeScale) در پراجكت در آورد، استفاده ميشود. تعريف اين تابع به شكل زير است:
Timescale(No,Date1,Date2,Units,Count)
كه در آن
No: شماره خانه مورد نظر است.
Date1و Date2: محدوده تاريخ را مشخص ميكند. در صورت معرفي نشدن اين محدوده
از محدوده تنظيم شده در پنجره تنظيم استفاده ميشود.
Units: مقدار عددي كه مشخص كننده نوع پريود است. در صورت معرفي نشدن از
مقدار پيشفرض در پنجره تنظيم استفاده خواهد شد.
Count: تعداد پريود را مشخص ميكند. در صورت معرفي نشدن از مقدار پيشفرض در
پنجره تنظيم استفاده خواهد شد.
براي مثال براي آنكه در سه خانه متوالي اكسل ماههاي فروردين ارديبهشت و خرداد را
نمايش دهيم ميتوانيم از فرمولهاي زير استفاده كنيم:
=Timescale(1,"1383/1/1","1383/3/1",3,1)
=Timescale(2,"1383/1/1","1383/3/1",3,1)
=Timescale(3,"1383/1/1","1383/3/1",3,1)
براي توضيح بيشتر به صفحه زير دقت كنيد:
|
5 |
4 |
3 |
2 |
1 |
|
=Timescale(H10) |
=Timescale(G10) |
=Timescale(F10) |
=Timescale(E10) |
=Timescale(D10) |
در اينجا در سطر اول اعداد 1 تا 5 قرار داده شده و در پايين مقدار تاريخ براي اين
شمارهها (با استفاده از پيشفرضهاي تنظيم شده محاسبه ميشوند.) درصورتيكه اين
تنظيمها به شكل زير انجام شود:

كه در آن محدوده تاريخ از 1/1/1383 تا 1/4/1383 و پريود زماني ماهيانه و تعداد آن 1
است پس از محاسبه صفحه زير حاصل ميشود:
|
5 |
4 |
3 |
2 |
1 |
|
|
1383/04/01 |
1383/03/01 |
1383/02/01 |
1383/01/01 |
از آنجاييكه تاريخ تا 1/4/83 محدود شده است،خانه پنجم خالي است.
حال اگر تنظيم به شكل زير انجام شود:

كه در آن پريود زماني هفته است، نتيجه به شكل زير درميآيد:
|
5 |
4 |
3 |
2 |
1 |
|
1383/01/23 |
1383/01/16 |
1383/01/09 |
1383/01/02 |
1382/12/24 |
كه در آن تاريخها به صورت هفتههاي متوالي آورده شدهاند.
ListQuery
تابع ListQuery به منظور فيلتر كردن و مرتب سازي فعاليتها طراحي شده است. شكل كامل
اين تابع به صورت زير است.
ListQuery (FieldName, FilterOperator,FilterValue, SortBy,Level)
كه در آن:
FieldName: نام فيلدي است كه ميخواهيم فيلتر و يا سورت بر اساس آن صورت
گيرد.
FilterValue: مقدار فيلتر است. در صورت خالي بودن فيلتري تنظيم نخواهد شد.
(مثلا براي فقط سورت كردن).
FilterOperator: اپراتوري كه براي تست فيلتر استفاده خواهد شد. اين اپراتور
ميتواند مقادير "=",">","<",">=", "<=" را داشته باشد.
SortBy: عددي كه نمايانگر نحوه مرتب سازي است. 1 براي سورت صعودي و -1 براي
سورت نزولي.
Level: با اين عدد ميتوانيد خروجي را به يك سطح خاص از فعاليتها محدود
كنيد. براي مثال عدد 1 يعني تمامي فعاليتهاي سطح 1. براي آنكه تنها فعاليتهاي
آخرين سطح (و نه فعاليتهاي خلاصه) را ببينيد ميتوانيد مقدار 100 را براي اين
پارامتر انتخاب كنيد.
نتيجه تابع ListQuery يك رشته است كه شماره فعاليتهاي مورد نظر (فيلتر و مرتب شده)
در آن با ";" از هم جدا شدهاند. براي دسترسي به اين رشته لازم است از تابع
ListTaskID كه در پايين توضيح داده ميشود، استفاده شود.
مثال:
| |
|
= ListQuery ("%Complete";"=";100) |
فعاليتهايي كه درصد پيشرفت آنها 100 است. |
|
= ListQuery ("%Complete";">";"100";1) |
فعاليتهايي كه درصد پيشرفت آنها بيشتر از 10
است به ترتيب صعودي درصد پيشرفت. |
|
= ListQuery ("%Complete";;;-1) |
همه فعاليتها به ترتيب نزولي درصد پيشرفت. |
= ListQuery ("%Complete";"=";100;;100) |
همه فعاليتهاي ريز (نه فعاليتهاي خلاصه) كه درصد پيشرفت آنها 100 است. |
Query نام ديگر همان ListQuery است.
ListTaskID
اين تابع همراه با تابع Query مورد استفاده قرار ميگيرد. با استفاده از اين
تابع ميتوان فهرست فعاليتهايي كه توسط تابع ListQuery محاسبه شده است را به
صورت ترتيبي مورد استفاده قرارداد. شكل كلي اين تابع به صورت زير است:
ListTaskID(ListSting,No)
كه در آن:
ListString: رشتهاي است كه توسط تابع Query محاسبه شده است.
No: شماره رديف در رشته است.
در صورتيكه No مقداري بزرگتر از تعداد فعاليتهاي موجود در ليست را داشته باشد،
اين تابع مقدار 1- را برميگرداند.
ListOfTasksAtLevel
اين تابع ليست فعاليتها را در هر سطح دلخواهي برميگرداند. شكل كامل اين
تابع به صورت زير است:
ListOfTasksAtLevel(LevelNo,UpTo)
كه در آن:
LevelNo: شماره سطح مورد نظر است.
UpTo: اگر مقدار 1 داده شود، همه فعاليتها تا سطح مورد نظر برگردانده
ميشود، در غير اين صورت فقط فعاليتهاي در سطح LevelNo محاسبه ميشود.
| |
|
=ListOfTasksAtLevel(1) |
تمامي فعاليتهاي سطح اول. |
|
=ListOfTasksAtLevel(3,1) |
تمامي فعاليتهاي تا سطح 3 |
خروجي اين تابع مانند تابع ListQuery به صورت يك رشته است كه با تابع
ListTaskID قابل دسترسي ميشود.
ListOfDetailTasks
اين تابع ليست تمامي فعاليتهاي ريز (غير Summary) را بر ميگرداند. شكل اين
تابه به صورت زير است:
ListOfDetalTasks()
خروجي اين تابع مانند تابع ListQuery به صورت يك رشته است كه با تابع
ListTaskID قابل دسترسي ميشود.
UID
اين تابع شماره فعاليت را بر حسب شماره يكتاي فعاليت (Unique ID)
برميگرداند. از آنجاييكه شماره فعاليتها در پراجكت ممكن است با حذف و درج
فعاليتهاي ديگر تغيير كند از اين تابع ميتوان براي حصول اطمينان از بروز
اشكالهاي اينگونه اجتناب كرد.
براي مثال فرمول
=TF("Name",1)
نام فعاليت شماره 1 را برميگرداند. حال اگر فعاليتي در بالاي اين فعاليتي
درج شود، شماره اين فعاليت به 2 تغيير مييابد و مشخصا فرمول فوق نام فعاليت
جديد را برميگرداند. در صورتيكه فرمول:
=TF("Name";UID(1))
همواره نام فعاليتي كه شماره يكتا (Unique ID) آن 1 است را محاسبه ميكند. |