Excel 如何查找特定变量长度的结束子字符串并返回不包含该结束子字符串的字符串?

Excel 如何查找特定变量长度的结束子字符串并返回不包含该结束子字符串的字符串?

我不知道该如何提出这个问题。

我面临一个复杂的挑战,我不确定如何在 Excel 中解决。

我有一列包含较长的可变长度字符串,例如

c68d7a51-5cef-4a5c-b417-b2751fe9754b  
c68d7a51-5cef-4a5c-b417-b2751fe9754b-0  
c68d7a51-5cef-4a5c-b417-b2751fe9754b-1
09573f-1780c84f-e5ff-85821a-6236e0399d
09573f-1780c84f-e5ff-85821a-6236e0399d-10
09573f-1780c84f-e5ff-85821a-6236e0399d-123

对于以“-***”结尾的字符串,我需要一个新列,该列返回不带结尾右侧子字符串的字符串,否则为空。结尾子字符串位于“-”特定字符后 1 到 3 个字符的长度范围内。根据注释,我还需要注意,我无法从左侧开始工作,因为字符串的长度和“-”位置会发生变化。唯一不变的是,其中一些字符串在最后一个“-”后有 1 到 3 位数字的子子字符串值。

到目前为止我的提纲是这样的

=IF(RIGHT(A1,4) contains "-", RIGHT(A1, LEN(A1) - number_of_chars_to_remove), else null. 

如果您不介意的话,我该如何实现这一目标?

感谢您的帮助,谢谢!

答案1

用这个:

=IF(ISNUMBER(FIND("-",RIGHT(A1,4))),LEFT(A1,FIND("}}}",SUBSTITUTE(A1,"-","}}}",LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))))-1),"")

-它首先测试最后四个中是否有,如果有,它找到最后一个-并将其更改为}}}。然后它找到并将其作为左等式的末尾。

在此处输入图片描述

答案2

在我看来,根据您的示例数据,您可以计算字符串,如果它有 5 个破折号,则返回前 38 个字符,否则返回 NULL。这会简单得多。38 很重要,因为它是到第五个破折号为止的字符串长度。

相关内容