1

我正在尝试根据内容将excel中的单列数字转换为多列。

例如,表 1 包含 1 列,其中包含 1 到 11 之间的 1 个或多个数字,用逗号分隔。表 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

4 回答 4

5

使用, 仅包含逗号的列表:

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

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

=IF(ISNUMBER(SEARCH(", 1,", ", "&A2&",")),1,0)
于 2013-09-24T13:59:50.957 回答
2

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

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

SUBSTITUTE 确保每个逗号前后始终至少有一个空格,并且 TRIM 用一个空格替换多个空格,因此 TRIM 函数的结果将在每个逗号前后恰好有一个空格。

于 2013-09-24T14:18:41.803 回答
0

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

=IF(ISNUMBER(SEARCH("1",SUBSTITUTE(A2, "11", "XI"))),1,0)
于 2013-09-24T14:03:10.407 回答
-1

If you want to eliminate "11" case, but this is all based on hardcoded values, there should be a smarter solution.

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

于 2013-09-24T14:05:22.490 回答