我有一个通常看起来像这样的字符串:
X-马铃薯-2D-AB3F-N
它将始终采用该格式,并且我想将“AB3F”与另一个包含四个字符的字符串进行比较。这是捕获,这个字符串中的某些值可能会改变长度,所以我不能简单地比较“最后6个字符中的前四个”
破折号的数量总是保持不变。总是至少4个(在极少数情况下为5),我想要比较的字符串总是在最后两个之间。是否可以使用这些来隔离我想要比较的4个或5个字符?
我知道Stack溢出不喜欢模糊的问题。抱歉! :d
答案 0 :(得分:1)
你走了:
http://excel.tips.net/T003324_Finding_the_Nth_Occurrence_of_a_Character.html
基本上,这个公式:
=FIND("¬",SUBSTITUTE(A1,"-","¬",4))
A1是你的字符串。这将返回第4个“ - ”的位置。 (因为substitute
用“¬”替换第4个“ - ”,这不太可能出现在代码中,find
然后找到“¬”)
编辑,只是意识到第4组也可能有超过4位数,所以你可以用过于复杂的方法检索它:
=MID(A1,FIND("¬",SUBSTITUTE(A1,"-","¬",3))+1,FIND("¬",SUBSTITUTE(A1,"-","¬",4))-FIND("¬",SUBSTITUTE(A1,"-","¬",3))-1)
希望这有帮助!
答案 1 :(得分:1)
既然你提到可能有四个或五个连字符,并且你想要的值总是在最后两个之间,我建议如下:
=TRIM(LEFT(RIGHT(SUBSTITUTE(A1,"-",REPT(" ",99)),198),99))
此方法适用于四个或五个连字符。
如果您要在宏中使用它,以下代码将返回字符串中的“Next To Last”连字符描述的子字符串:
Dim V As Variant
V = Split(S, "-")
NextToLast = V(UBound(V) - 1)