我想在 Excel 中返回我的第 3 级 WBS 结构,无论字符长度如何。
具体例子:如果我的 WBS 是 1.2.3.1,我想返回 1.2.3;如果我的 WBS 是 1.200.4.2,我想返回 1.200.4。换句话说,句点之间的字符长度无关紧要。
我正在使用,LEFT()
但这没有考虑字符长度。任何帮助都将不胜感激。
答案1
我假设您需要做的就是删除第三个“。”及其后面的任何字符。在这种情况下,假设 WBS 字符串位于单元格 A1 中,您可以使用
=LEFT(A1,SEARCH(".",A1,SEARCH(".",A1,SEARCH(".",A1)+1)+1)-1)
如果 A1 包含“1.200.4.2”,则将返回“1.200.4”。
答案2
此公式将从存储在的完整描述符中提取 WBS 3 级描述符A1
:
=LEFT(A1,FIND("~",SUBSTITUTE(A1,".","~",3))-1)
请注意,此公式可以适用于提取任何级别描述符。只需替换3
用所需的级别替换即可。
例如,要提取 2 级描述符,请使用:
=LEFT(A1,FIND("~",SUBSTITUTE(A1,".","~",2))-1)
另请注意,如果提供的描述符已经是 3 级,则此公式将返回错误。以下方法允许这种情况:
=
IFERROR(
LEFT(A1,FIND("~",SUBSTITUTE(A1,".","~",3))-1),
IFERROR(SUBSTITUTE(A1,".",".",2),NA())
)
您可能会发现另一个有用的公式是:
=LEFT(A1,FIND("~",SUBSTITUTE(A1,".","~",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))-0))-1)
它返回祖先级别。请注意,此公式也是多级的。要返回上两级的祖先,请将 替换为-0
。-1
要返回上三级,请使用-2
等。