2017-08-24 451 views
0

我的Excel表中有两个选项卡。跟踪Excel中的任务依赖关系

选项卡1:包含跨多个功能区域的所有依赖项的列表。这些列是功能区,依赖项说明,依赖项ID,计划结束日期,目标结束日期。

标签2:包含的任务有以下的列的列表:

功能区,交付名称,交割描述,目标日期,日期推算,依赖性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是要找出一个办法,如果我的任何依赖联系在一个规定交付的有个约会过我的交付物的目标日期,我的预计日期应填充到所有依赖项中的最新日期。所以在上面的例子中,de1的预计日期应该填充到8/23,而d2的预计日期应该是8/22。请指教。谢谢。

+0

我工作的事情,但你会更容易将有第三个标签,称为交付的依赖。这对于每个行都是单行的,例如de1 | D1,de1 | D2等 - 是否有可能? – Cronan

+0

嗨Cronan - 那么你的意思是删除可交付物 - 依赖列和移动到第三个选项卡?如果它仅用于计算目的,我可以创建另一个选项卡并在那里复制这两列。那会有用吗? – Ankit

+0

对不起,不,我的意思是另一个选项卡,它有两列,依赖和交付。如果de1有两个依赖项,这个新选项卡将有两行,de1重复两次。是什么让你的问题真的很难,就是把选项卡2上的依赖关系合并到一个单元格中的方式。 – Cronan

回答

1

你需要三件才能使这个工作。第一是这样的式(我们开始对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),",",""))

我们将采取每个公式,并在VLOOKUP包裹起来 - 这是要查找从TAB1目标结束日期:

=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,我假设目标结束日期在第三栏。请注意,这还假定依赖项列是列B.

此公式原样将为我提供第一个依赖关系的目标结束日期。

我们差不多准备好这些包装成一个单一的功能,但我们做之前,我们要谨防VLOOKUP错误:

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

现在我们可以用max函数把三者结合起来,这将给予我们最大(最新)日期:

=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))

+0

此方法不需要添加第三个选项卡 - 请让我知道是否有任何不清楚的内容 – Cronan

+0

谢谢Cronan。我会马上给你一个尝试,让你知道它的工作 – Ankit

+0

嗨克罗南 - 公式的作品完美,但他们无论如何使这个公式动态,因为一些功能区有3个依赖项,有些有6个,有些有8个。而且这些依赖关系可以不断添加,删除,因此需要以这种方式使其变为动态 – Ankit