2

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

|     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")

似乎应该有一种更简单的方法来做到这一点,但我就是想不通。

(更糟糕的是,我不仅在文件名中标识了一个城市,而且还在寻找其他属性来填充其他列)

任何人都可以帮忙吗?

4

2 回答 2

0

这是一个关于工作方式的回合,不是我自己的所有工作,而是来自其他来源的混搭:

假设工作表设置如下:

起始位置

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

=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)))
于 2013-04-26T15:34:25.177 回答
0

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

这 *****NOT***** 必须输入数组。

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

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

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

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

在此处输入图像描述

于 2013-04-26T15:48:58.807 回答