匹配特定单元格中列的文本 - Excel

时间:2013-04-26 13:50:22

标签: excel excel-formula

我有几千个不统一的文件名列。例如:

|     Column A     | Column B |
===============================
| junk_City1_abunc | City1    |
-------------------------------
| nunk_City1_blahb | City1    |
-------------------------------
| small=City2_jdjf | City2    |
-------------------------------
| mozrmcity3_somet | City3    |

我想在A列的文本中标识城市,并在B列中返回。

我已经提出了一个复杂的公式,但是如果在A列的新条目中的文件名中添加了更多城市,则很难调整。

以下是一个例子:

=IF(ISNA(MATCH("*"&$W$3&"*",I248,0)),IF(ISNA(MATCH("*"&$W$4&"*",I248,0)),IF(ISNA(MATCH("*"&$W$5&"*",I248,0)),IF(ISNA(MATCH("*"&$W$6&"*",I248,0)),IF(ISNA(MATCH("*"&$W$7&"*",I248,0)),IF(ISNA(MATCH("*"&$W$8&"*",I248,0)),"Austin","Orlando"),"Las Vegas"),"Chicago"),"Boston"),"Las Angeles"),"National")

似乎应该有一种更简单的方法,但我无法弄明白。

(更糟糕的是,我不仅要识别文件名中的城市,还要寻找其他属性来填充其他列)

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

这是一个有效的方式,不是我自己的工作,而是来自其他来源的混合物:

假设工作表设置如下:

Starting Position

要使用的公式如下,必须使用 Ctrl + Shift + 输入

=INDEX($C$2:$C$8,MAX(IF(ISERROR(SEARCH($C$2:$C$8,A2)),-1,1)*(ROW($C$2:$C$8)-ROW($C$2)+1)))

带注释的版本:

=INDEX([List of search terms],MAX(IF(ISERROR(SEARCH([List of search terms],[Cell to search])),-1,1)*(ROW([List of search terms])-ROW([Cell containing first search term])+1)))

答案 1 :(得分:0)

使用公式=IFERROR(LOOKUP(1E+100,SEARCH($E$2:$E$11,A2),$E$2:$E$11),A2)

这不是*****必须输入数组。

其中$ E $ 2:$ E $ 11是您要返回的名称列表,A2是要测试的单元格

如果找不到匹配项而不是错误,您只需使用b列中的全名。

如果您想要错误或期望永远不会有,那么您可以使用:

=LOOKUP(1E+100,SEARCH($E$2:$E$11,A2),$E$2:$E$11)

enter image description here