你需要三件才能使这个工作。第一是这样的式(我们开始对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))
我工作的事情,但你会更容易将有第三个标签,称为交付的依赖。这对于每个行都是单行的,例如de1 | D1,de1 | D2等 - 是否有可能? – Cronan
嗨Cronan - 那么你的意思是删除可交付物 - 依赖列和移动到第三个选项卡?如果它仅用于计算目的,我可以创建另一个选项卡并在那里复制这两列。那会有用吗? – Ankit
对不起,不,我的意思是另一个选项卡,它有两列,依赖和交付。如果de1有两个依赖项,这个新选项卡将有两行,de1重复两次。是什么让你的问题真的很难,就是把选项卡2上的依赖关系合并到一个单元格中的方式。 – Cronan