Excel: 在字符串中查找一定长度的单词?

Excel: Find words of certain length in string?

我有这个文件,我想在其中对包含字母组合“_SOL”或字符​​串后跟任何数字字符(如“_SOL1524”)的任何单元格进行条件检查,然后停止查找。所以我不想匹配“_SOLUTION”或“_SOLothercharactersthannumeric”。

所以当我使用下面的公式时,我也得到了像“_SOLUTION”这样的词的结果:

=IF(ISNUMBER(FIND("_SOL",A1))=TRUE,"Yay","")

如何避免这种情况,并且只有在匹配项为“_SOL”或“_SOLnumericvalue”(一个数字字符)时才获得匹配项

澄清:整个字符串可能是"Blabla_SOL_BLABLA"、"Blabla_SOLUTION_BLABLA"或"Blabla_SOL1524_BLABLA"

也许是这个,它会检查“_SOL”之后的字符是否为数字。

=IF(ISNUMBER(VALUE(MID(A1,FIND("_SOL",A1)+4,1))),"Yay","")

或者,根据 OP 的要求和建议,在 "SOL"

之后添加下划线的可能性
=IF(OR(ISNUMBER(VALUE(MID(A1,FIND("_SOL",A1)+4,1))),ISNUMBER(FIND("_SOL_",A1))),"Yay","")

这是一种替代方法,用于检查您的字符串是否包含 SOL,后跟任何内容或任何数值,最多为 SOL:

之后的任何字符
=IF(COUNT(FILTERXML("<t><s>"&SUBSTITUTE(A1,"_","1</s><s>")&"</s></t>","//s[substring-after(.,'SOL')*0=0]")>0),"Yey","Nay")

只是为了在你会遇到 SOL1TEXT 的不幸事件中使用。或者,也许节省(如果你有像 AEROSOL 这样的文本):

=IF(COUNT(FILTERXML("<t><s>"&SUBSTITUTE(A1,"_","</s><s>")&"</s></t>","//s[translate(.,'1234567890','')='SOL']")>0),"Yey","Nay")

为了防止出现 123SOL123 这样的文字,您甚至可以这样做:

=IF(COUNT(FILTERXML("<t><s>"&SUBSTITUTE(A1,"_","1</s><s>")&"</s></t>","//s[starts-with(., 'SOL') and substring(., 4)*0=0]")>0),"Yey","Nay")