从Excel中的字符串中删除末尾的斜杠。

3
在Excel中有多行数据。以下是示例模式:
/xxx/yyy/zzz////
/xxx/yyy/zzz//
/xxx/yyy/zzz//////
/xxx/yyy/zzz

当斜杠被移除时,输出将如下所示:
/xxx/yyy/zzz
/xxx/yyy/zzz
/xxx/yyy/zzz
/xxx/yyy/zzz

请告诉我去除斜杠的Excel公式。最后一个示例模式不包含任何斜杠。谢谢!
我尝试了这个公式,但它不起作用 -
=IF(RIGHT(A1,1)="/",LEFT(A1,LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))+1),A1)

使用TEXTBEFORE()函数,这将是我在“答案”中展示的第三种简洁的方法。 - Mayukh Bhattacharya
使用 TEXTBEFORE()函数,这是我在“答案”中展示的第三种简洁的方法。 - Mayukh Bhattacharya
使用TEXTBEFORE()函数,这是我在“答案”中展示的第三种简洁的方法。 - undefined
5个回答

7
尝试使用 TEXTSPLIT( )TEXTJOIN( )

enter image description here


• 单元格 B1 中使用的公式
="/"&TEXTJOIN("/",,TEXTSPLIT(A1,"/",,1))

编辑:

使用 TEXTJOIN( ) TAKE( )TEXTSPLIT( )

enter image description here


• 单元格B1中使用的公式

=TEXTJOIN("/",0,TAKE(TEXTSPLIT(A1,"/"),,4))

或者,

• 在单元格 C1 中使用的公式

=TEXTJOIN("/",0,TAKE(TEXTSPLIT(A1,,"/"),4))

或者,如果你喜欢与DAF一起倾诉

enter image description here


• 在单元格B1
=MAP(A1:A4,LAMBDA(m,TEXTJOIN("/",0,TAKE(TEXTSPLIT(m,,"/"),4))))

注意事项:我认为在第二种方法中添加一个注意事项是有意义的。因为我假设在第四个斜杠(/)之前的任何内容都需要保留,而其余部分则被删除,如果没有第四个斜杠,则应该保持原样。
这是我的个人意见,再好不过了。使用TEXTBEFORE( )

enter image description here


• 在单元格 B1 中使用的公式

=TEXTBEFORE(A1&"/","/",4)

或者,一个洒出来的。

enter image description here


=TEXTBEFORE(A1:A4&"/","/",4)

由于我不知道您使用的Excel版本,所以提供一个适用于Excel 2010及更高版本的备选方案。

enter image description here


• 单元格 B1 中使用的公式
=LEFT(SUBSTITUTE(A1&"/","/","@",4),
FIND("@",SUBSTITUTE(A1&"/","/","@",4))-1)


1
太棒了,Mayukh!对于“TEXTBEFORE”方法,我有一个建议:我会使用=TEXTBEFORE(A1,"/",4,,1)=TEXTBEFORE(A1,"/",4,,,A1)来利用“TEXTBEFORE”的额外输入参数。 - David Leal
1
太棒了,Mayukh!对于“TEXTBEFORE”方法,我有一个建议,我会使用:=TEXTBEFORE(A1,"/",4,,1)=TEXTBEFORE(A1,"/",4,,,A1),以利用“TEXTBEFORE”的附加输入参数。 - David Leal
1
太棒了,Mayukh!对于“TEXTBEFORE”方法,我有一个建议,我会使用:=TEXTBEFORE(A1,"/",4,,1)=TEXTBEFORE(A1,"/",4,,,A1),以充分利用“TEXTBEFORE”的附加输入参数。 - undefined
谢谢,Mayukh - textbefore和textsplit版本的解决方案都不适用于我,因为我没有使用Excel 365。最后一个解决方案有效。祝你有美好的一天! - Alok
谢谢你,Mayukh - 之前的文本和分割版本的解决方案都不适用于我,因为我没有使用Excel 365。最后一个解决方案有效。祝你有美好的一天! - Alok
谢谢你,Mayukh - 之前的文本分割解决方案并没有起作用,因为我没有使用Excel 365。最后的解决方案有效。祝你有美好的一天! - undefined

4
如果你的模式真正代表性,那么
=LEFT(A1,FIND("//",A1&"//")-1)

enter image description here


1
太棒了!如果问题是关于删除尾部的//,那么这个方法非常适合!对于尾部有偶数个//的情况,就像问题中所描述的那样,这个方法也可以使用:=TEXTSPLIT(A1,"//",,1) - David Leal
1
太棒了!如果问题是关于删除尾部的//,这个方法非常适用!对于尾部有偶数个//的情况,就像问题中所描述的那样,这个公式也可以使用:=TEXTSPLIT(A1,"//",,1) - David Leal
1
太棒了!如果问题是关于删除尾部的 //,这个方法非常适用!对于问题中似乎有偶数个尾部 // 的情况,这个方法也可以使用:=TEXTSPLIT(A1,"//",,1) - undefined
2
@DavidLeal 尽管示例数据中有偶数个尾部斜杠,但我没有看到标题或问题的文本中提到这个限制。 - Ron Rosenfeld
2
@DavidLeal 尽管样本数据的尾部斜杠数量是偶数,但我没看到标题或问题文本中提到过这个限制。 - Ron Rosenfeld
显示剩余3条评论

3

删除字符串尾部的字符

enter image description here

=LET(data,A2:A11,ch,"/",dch,"@",es,"",od,"",
    BYROW(data,LAMBDA(br,
        IF(LEN(br)=0,es,LET(
            rd,REDUCE(br,SEQUENCE(LEN(br)),LAMBDA(rr,r,LET(
                    ri,RIGHT(rr,1),
                IF(ri=dch,rr,IF(ri=ch,LEFT(rr,LEN(rr)-1),rr&dch))))),
            IF(LEN(rd)=0,od,LEFT(rd,LEN(rd)-1)))))))

1
感谢您尝试这个解决方案 - 我对通过Excel使用VB不太熟悉。 - Alok
1
谢谢您尝试这个解决方案-我对通过Excel使用VB不太熟悉。 - Alok
1
谢谢您尝试这个解决方案 - 我对通过Excel使用VB不太熟悉。 - undefined

3
你是不是特别要求只有末尾的斜杠?如果是的话,你可以尝试一下这个方法:

enter image description here

B1单元格中的公式:

=MAP(A1:A6,LAMBDA(x,TEXTBEFORE(x,TEXTAFTER(x,TEXTSPLIT(x,"/",,1),-1),-1)))

或者,稍微严格一点(如果你只有斜杠):
=MAP(A1:A7,LAMBDA(x,LEFT(x,@TOCOL(FIND(REPT("/",SEQUENCE(LEN(x),,LEN(x)-1,-1))&"@",x&"@")-1,3))))

谢谢 - 我的Excel版本中没有可用的Textbefore函数。第二个解决方案给了我一个错误 - 那个函数是无效的! - Alok
谢谢 - 我的Excel版本没有Textbefore函数可用。第二个解决方案给了我一个错误 - 那个函数是无效的! - Alok
谢谢 - 我的Excel版本没有Textbefore函数可用。第二个解决方案出错了 - 那个函数是无效的! - undefined
1
太好了!我更喜欢使用被IFERROR包裹的第一个选项,如果为空或只有斜线,则返回空白。第二个选项如果只有斜线则返回一个斜线,如果为空则返回错误,但是这个想法非常棒。 - VBasic2008
1
太好了!我更喜欢第一个用IFERROR包裹的方法,如果为空或只有斜杠,则返回空白。第二个方法如果只有斜杠则返回单个斜杠,如果为空则返回错误,但是这个想法非常出色。 - VBasic2008
1
太好了!我更喜欢第一个用IFERROR包装的方法,如果为空或只有斜杠,则返回空白。第二个方法如果只有斜杠则返回一个斜杠,如果为空则返回错误,但是背后的思想是非常出色的。 - undefined

0
"最后一个样本模式不包含任何斜杠。假设最后一个单元格是A4。"
=LEFT(A1;LEN($A$4))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接