我有以下路径:
堆栈溢出
超级/用户
我有公式:
=RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"/","|",B2))+1)
目前,这会采用 A2 中的路径,无论我在 B2 中输入什么 #,都会根据 # 修剪路径。因此,如果我在 B2 中输入 2,它将返回 flow,如果我输入 1,它将返回 Over/Flow。问题是我拥有的路径长度不一致,并且不会修剪结束节点。我的公式在 C2 中。要解析的数字在 B2 中。路径在 A2 中。
这里的技巧是让它提取倒数第二个节点。
期望输出:
超过
极好的
答案1
/
这种方法将允许根据 B2 中的值提取任何分离的段。
首先定义一个名字seq_99
seq_99 refers to: =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)
这将创建一个值数组{1;99;198;297;...}
笔记如果你的任何片段可能更长,则增加 99;例如增加到 999)
然后尝试这个公式:
=INDEX(TRIM(MID(SUBSTITUTE(A2,"/",REPT(" ",99)),seq_99,99)),B2)
其中 B2 包含您想要提取的片段的位置。
如果你想反向计算,例如
1 = 最后一段
2 = 倒数第二段
然后将 B2 替换为:
(LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))+2-B2
因此公式如下:
=INDEX(TRIM(MID(SUBSTITUTE(A2,"/",REPT(" ",99)),seq_99,99)),(LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))+2-B2)
以下是使用公式的示例。请注意,2
B 列中的 表示倒数第二段,公式如下: