跟踪Excel中的任务依赖关系

我在我的Excel表中有两个选项卡。

选项卡1 :包含跨多个function区域的所有依赖项的列表。 这些列是function区,依赖项描述,依赖项ID,计划结束date,目标结束date。

选项卡2 :包含具有以下列的任务列表:

function区域,交付名称,交付物描述,目标date,预计date,依存关系ID

例如

Functional Area Dependencies Plan end date Target End date F1 D1 8/22 8/22 F1 D2 8/23 8/23 F2 D3 8/24 8/24 F2 D4 8/25 8/25 Functional Area Deliverable Dependencies Target Date Projected Date F1 de1 D1, D2 8/20 F1 de2 D1 8/20 F2 de3 D3, D4 8/20 F2 de4 D3 8/20 

依赖关系ID将包含与选项卡1中给定可交付成果相关的所有ID。我想要的帮助是一种方法,用于发现如果与给定可交付成果有关的任何依赖关系具有超过可交付成果的目标date的date,预计date应填充到所有依赖关系中的最新date。 所以在上面的例子中,de1的预计date应该填充到8/23,而d2的预计date应该是8/22。 请指教。 谢谢。

你需要三件才能做到这一点。 第一个是这个公式(我们开始在Tab2上工作):

=TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),1*255,255),",",""))

单元格C2包含依赖项的列表,例如D1,D2

注意公式中的1 * 255位 – 如果将1更改为2,则此公式将为您提供依赖项列表中的第二项,然后是第三项等。

现在我们有三个公式可以给你第一,第二或第三个依赖:

=TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),1*255,255),",",""))

=TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),2*255,255),",",""))

=TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),3*255,255),",",""))

我们将采取每个公式,并把它们包装在一个虚拟浏览器中 – 这将从Tab1中查找目标结束date:

=VLOOKUP(TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),1*255,255),",","")),Tab1!$B$2:$D$100,3,FALSE)

在这个公式中,我假设要查找的数据是在Tab1!$B$2:$D$100 ,我假设目标结束date在第三列。 注意这还假设依赖列是列B.

这个公式将给我第一个依赖关系的目标结束date。

我们几乎已经准备好将它们包装成一个单一的function,但是在我们做之前,我们想要防止出现vlookup错误:

=IFERROR(VLOOKUP(TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),1*255,255),",","")),'Tab1'!$B$2:$D$100,3,FALSE),0)

现在我们可以使用Max函数结合所有这三个函数,这将给我们最大的(最新)date:

=MAX(IFERROR(VLOOKUP(TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),1*255,255),",","")),'Tab1'!$B$2:$D$100,3,FALSE),0),IFERROR(VLOOKUP(TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),2*255,255),",","")),'Tab1'!$B$2:$D$100,3,FALSE),0),IFERROR(VLOOKUP(TRIM(SUBSTITUTE(MID(SUBSTITUTE("," & C2&REPT(" ",6),",",REPT(",",255)),3*255,255),",","")),'Tab1'!$B$2:$D$100,3,FALSE),0))