检查列表是否以第二个列表中的多个字符串中的任何一个开头/结尾

时间:2019-04-13 16:42:05

标签: excel excel-formula

在excel中,检查列中的字符串列表是从另一字符串列表开始还是结束的最佳方法是什么?

示例:

第一个列表:
雷迪
CodeRed
扎比
KaBlueY

第二个列表:红色,蓝色,斑点,模糊

解决方案应返回:
Reddy-TRUE(因为它在开始或结束位置中包含第二个列表中的“红色”)
CodeRed-TRUE(因为它在开始或结束位置包含第二个列表中的“红色”)
Zabby-FALSE(因为它在开始或结束位置不包含第二个列表中的任何字符串。
KaBlueY-FALSE(因为它在开始或结束位置不包含第二个列表中的任何字符串。

1 个答案:

答案 0 :(得分:0)

  

修改后的答案:

问题已经更改,我的答案也应该更改为当前版本:

如果SEARCH函数的第二个参数是一个范围,则可以使用此公式。

解决方案4:检查范围中的任何字符串是否包含子字符串

=OR(ISNUMBER(SEARCH("red",range)))*1
Result: 1

=OR(ISNUMBER(SEARCH("redX",range)))*1
Result: 0

与下面的解决方案#1相同,但不是在“父”字符串中搜索子字符串,而是搜索多个字符串,并且可以通过创建数组公式来实现,并且只能通过按 CTRL 来完成 + Shift + ENTER 。在公式栏中检查公式周围的{},以确保您创建了数组公式。

由于数组公式中有多个结果,请用OR函数包装它,以查看范围中的任何字符串是否包含您要查找的字符串。最后,只需将其乘以1,即可将生成的布尔值转换为其数值。

希望有帮助!



  

原始答案:

有很多方法可以做到这一点。您可以使用SEARCHSUBSTITUTE函数与其他函数(例如返回布尔值的函数)结合使用来解析字符串,以根据前者的返回值检查预期结果。最后,要将布尔值转换为其数值,只需将其乘以1。

以下是一些入门指南:

解决方案#1

=ISNUMBER(SEARCH("red","reddy"))*1
Result: 1

=ISNUMBER(SEARCH("redX","reddy"))*1
Result: 0

如果能够在“父”字符串red中找到子字符串reddy,则SEARCH函数将返回一个数字-您要查找的子字符串的位置。否则,就像redX一样,它返回#VALUE!。要隐藏难看的#VALUE!错误消息并显示比仅显示子字符串位置更合适的消息,请使用ISNUMBER函数将其包装以返回TRUE或{{1} }。如果要将其转换为数值,请乘以1。


解决方案2

FALSE

此处,将=IF(SUBSTITUTE("reddy","red","anyText")="reddy",FALSE,TRUE)*1 Result: 1 =IF(SUBSTITUTE("reddy","redX","anyText")="reddy",FALSE,TRUE)*1 Result: 0 函数产生的字符串与{parent}字符串进行比较,方法是将其用SUBSTITUTE包装,然后返回一个布尔值,该布尔值可以转换为数字值乘以1。


解决方案3

IF

这只是解决方案2中提供的公式的变体。它使用=NOT(EXACT("reddy",SUBSTITUTE("reddy","red","anyText")))*1 Result: 1 =NOT(EXACT("reddy",SUBSTITUTE("reddy","redX","anyText")))*1 Result: 0 函数检查来自EXACT函数的结果字符串是否与旧字符串(在解决方案#1中称为“父字符串”)完全相同。如果完全相同,则表示未替换任何内容,因为未找到您要查找的字符串。由于SUBSTITUTE函数返回EXACT,如果两个字符串完全匹配,这意味着没有任何变化,这也意味着,它没有找到您要查找的字符串,因此需要反转通过使用TRUE函数将结果包装起来。同样,如果您想将其转换为数字形式,只需将其乘以1。

希望有帮助!


参考:

SEARCH

ISNUMBER

OR

SUBSTITUTE

IF

EXACT

NOT