Excel,TRIM路径到最后的第二个“/”


1

我有以下路径:

堆栈溢出

超级/用户

一级方程式:

=RIGHT(A2,LEN(A2)-FIND("|",SUBSTITUTE(A2,"/","|",B2))+1)

这当前在A2中的路径,以及B2中的#I状态,根据#修剪路径。所以,如果我在B2中有2,它会给我流动,如果我放1,它会给我Over / Flow。问题是我的路径长度不均匀,也没有修剪终端节点。我的公式是C2。在B2中解析的数字。A2中的路径。

这里的技巧是让它提取第二个最后一个节点。

期望的输出

过度

Answers:


2

该方法将允许/基于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中,公式返回最后一个段的第二个段:

在此输入图像描述


你是什​​么意思定义一个名字?这是一个功能吗?
Jonnyboi 2017年

Define NameDefined Names公式栏的选项卡上的一个选项。名称可以指代位置或公式。在互联网上搜索如何使用此功能的示例; 只需将seq_99公式和公式复制到相应的框中即可。
Ron Rosenfeld

我要将哪个单元格定义为?B2:B1000(或我的上一个路径名)?
Jonnyboi 2017年

@Jonnyboi我不明白你的问题。我没有写任何关于任何已定义的名称seq_99。如果您想为自己的目的定义另一个名称,那么您当然可以这样做。
罗恩罗森菲尔德2017年

我的意思是我在哪个单元格中定义?我所有的路径名都是A2:A22350,所以我在B1中定义了seq_99。接下来我=INDEX(TRIM(MID(SUBSTITUTE(A2,"/",REPT(" ",99)),seq_99,99)),B2)在B2中使用。然后用对话替换forumla的'B2'部分(LEN(A2)-LEN(SUBSTITUTE(A2,"/","")))+2-B2
Jonnyboi 2017年

1

用这个:

=TRIM(MID(SUBSTITUTE(A2,"/",REPT(" ",99)),(LEN(A2)-LEN(SUBSTITUTE(A2,"/",""))-1)*99+1,99))

它将返回倒数第二个:

在此输入图像描述


谢谢斯科特,它适用于我的一些路径,而不是全部..在某些情况下,它返回第3个最后...在一些我有空白,有些是部分字符
Jonnyboi 2017年

请举一些错误的例子。@Jonnyboi
Scott

它很奇怪..想弄清楚为什么在我的路径中它不起作用..当做例子它工作正常..但我的数据集得到不同的回报。
Jonnyboi 2017年

复制并粘贴那些不能直接工作的,看看你是否遇到同样的问题。还要确保这些公式中的所有引用都属于同一个单元格。
Scott Craner 2017年

1
没有看到数据,我无法提供帮助。
Scott Craner 2017年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.