如何从自定义列中的任何任务ID中检索完成日期? (自定义字段?)

时间:2019-04-12 09:50:00

标签: formula ms-project

我正在跟踪文档,并使用MS Project来大致了解任务的持续时间,例如:

### ID | task | Duration  | Start | Finish  ###
1 | Document version 1 issue | 0 days | date1 | date1

2 | Comments version 1       | 0 days | date2 | date2

3 | Document version 2 issue | 0 days | date3 | date3

4 | Review approval ver 2    | 0 days | date4 | date4

所有任务都取决于外部因素,因此,将工期设置为0且开始完成是相同的日期。根据文档的不同,审核和批准可能需要更长的时间。

我想做的是添加另一列,这很容易添加,以计算任务之间的实际持续时间。例如:

### ID | task | Duration  | Start | Finish | DAYS ###
1 | Document version 1 issue | 0 days | date1 | date1 | 

2 | Comments version 1       | 0 days | date2 | date2 | days between ID2 and ID1

3 | Document version 2 issue | 0 days | date3 | date3 | days between ID3 and ID2

4 | Review approval ver 2    | 0 days | date4 | date4 | days between ID4 and ID3

我尝试使用“海关字段”,但无法弄清楚如何在另一个“任务ID”行中检索选定任务ID(在另一行中)的日期。

假设我会做类似的事情

DateDiff(“ d”,完成([ID]),完成([ID] -1)

然后,我希望得到不同的日子,以便我可以从经验中学到审查某些信息实际上需要多长时间。

有人建议执行此任务吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,根据这句话的结尾...

  

然后,我希望得到不同的日子,以便我可以从经验中学到审查某些信息实际上需要多长时间。

...我建议不要做任何特殊的编码。相反,我建议您更改时间表的结构。我将在这些里程碑之间放入“审阅”任务,这些任务代表进行审阅的工作。最初,它们的持续时间是根据要审核的事物的大小和性质进行估算,但可以随着审核过程的进行而更新。

如果您必须以这种方式进行结构化,则代码如下:

Sub CalcCustomDuration()
Dim P As Project
Dim T As Task
Set P = Application.ActiveProject
For Each T In P.Tasks
    If Not (T Is Nothing) Then
        If T.Number1 > 0 Then
            T.Number2 = Application.DateDifference(P.Tasks(T.ID - 1).Finish, T.Start) / 60 / 8
        End If
    End If
Next T
End Sub