= IF(ISNUMBER(搜索...... 1和11之间的差异

时间:2013-09-24 13:52:49

标签: excel

我正在尝试将excel中的单列数字转换为多个,具体取决于内容。

e.g。表1包含1列,其中包含1到11之间的一个或多个用逗号分隔的数字。表2应包含11列,其中1或0取决于表1中的数字。

我目前使用以下公式:

 =IF(ISNUMBER(SEARCH("1",A2)),1,0)

下一栏包含以下内容:

 =IF(ISNUMBER(SEARCH("2",A2)),1,0)

一直到11

 =IF(ISNUMBER(SEARCH("11",A2)),1,0)

然而,问题是查找对1的引用的代码也找到了对11的引用。是否可以编写一个可以区分的公式,以便如果我在表1中有以下内容:

 2, 5, 11

它没有在表2的第1列中加1?

感谢。

4 个答案:

答案 0 :(得分:5)

使用,仅使用逗号列表:

=IF(ISNUMBER(SEARCH(",1,", ","&A2&",")),1,0)

如果列表以,(逗号+空格)分隔:

=IF(ISNUMBER(SEARCH(", 1,", ", "&A2&",")),1,0)

答案 1 :(得分:2)

LS_dev的答案版本将在每个逗号之前或之后处理0 ... n个空格:

=IF(ISNUMBER(SEARCH(", 1 ,",", "&TRIM(SUBSTITUTE(A2,","," , "))&" ,")),1,0)

SUBSTITUTE确保每个逗号前后总是至少有一个空格,并且TRIM用一个空格替换多个空格,因此TRIM函数的结果在每个逗号之前和之后只有一个空格。

答案 2 :(得分:0)

在进行搜索之前,如何使用SUBSTITUTE函数将所有“11”更改为罗马数字“XI”:

=IF(ISNUMBER(SEARCH("1",SUBSTITUTE(A2, "11", "XI"))),1,0)

答案 3 :(得分:-1)

如果你想消除“11”的情况,但这都是基于硬编码的值,那么应该有一个更智能的解决方案。

= IF(ISNUMBER(SEARCH(AND( “1”,NOT( “11”)),A2)),1,0)