MS Project公式计算返回不一致的结果

问题描述

在MS Project Professional中,我有一个自定义字段,该字段返回正确的值...有时,没有时间返回任何值,并且在其他时间返回#ERROR,没有明显的押韵或原因。

目标:我需要捕获[Resource Names]字段以在外部应用程序中使用-很容易-但是当我有一个固定单位任务且资源单位有限时,我需要排除“ [##%]”名称的一部分。例如:Sam [25%],但我只需要“ Sam”

公式:IIf(IsNumeric(InStr(1,[Resource Names],"[")),LEFT([Resource Names],Len([Resource Names])-5),[Resource Names])

结果总结如下:

  • 玛丽安== M
  • Sam == #ERROR
  • Sam [25%] == Sam
  • IDNR == #ERROR
  • Core Dev == Cor
  • Bindu == Bindu
  • Bindu [50%] == Bindu
  • 米歇尔== Mi
  • 米歇尔[25%] ==米歇尔
  • disha ==空
  • disha [33%] == disha
  • Stuart [50%] == Stuart
  • Stuart == S

奇怪的是,“摘要任务”没有显示正确的值。

需要:有人可以帮助我确定公式吗?或者,我应该吸干它并手动删除有问题的括号和数字吗?

解决方法

如果您只分配了一项任务资源,则此公式将起作用:IIf(0=InStr(1,[Resource Names],"["),Left([Resource Names],InStr(1,"[")-1))

但是,由于可用的功能有限,构建一个公式来处理多个资源会非常繁琐。在这种情况下,用于更新字段的宏会更好:

Sub GetResourceNames()
    Dim t As Task
    For Each t In ActiveProject.Tasks
        Dim resList As String
        resList = vbNullString
        Dim a As Assignment
        For Each a In t.Assignments
            resList = resList & "," & a.Resource.Name
        Next a
        t.Text2 = Mid$(resList,2)
    Next t
End Sub