我正在尝试将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?
感谢。
答案 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)