如何检测单元格中的特定string文本并在Excel中删除它?

我有一个A2格式的地点列表:[ 城市州 ],城市或州可以由两个以上的字组成。 所有这一切都在一个单一的细胞。 我有成千上万的总数据。 现在,我也有一个国家的名单。 我需要做的是从A2中删除状态,只剩下剩余的string。 因此只留下我的城市 。 我需要这方面的帮助,因为数据是以百万计的,我有一个约3万个城市的名单。

您可以在具有City的数据单元和State的数据单元格的单元格旁边创build2个单元格。 input公式并自动填充。

公式提取城市

=left(A1,find(" ",A1,1)-1) 

提取状态的公式

 =right(A1,len(A1)-find(" ",A1,1)) 

这些公式将文本置于第一个空格的左侧,将文本置于第一个空格的右侧。 如果这个城市有一个空间,例如“纽约”,那么你就会遇到问题,但是解决这个问题是非常困难的。

另一种方法是使用VBA代码遍历所有单元格,并在单元格上运行相同的代码,并从该单元格中删除状态,并将状态置于不同的单元格中。 这是一个更复杂的select。

用两个字来解决城市问题

我假设州是美国国家,所以我创build了包含2个单词的所有美国州的一串

[新罕布什尔州] [新泽西州] [新墨西哥州] [纽约州] [北卡罗来纳州] [北达科他州] [罗德岛] [南卡罗来纳州] [南达科他州] [西弗吉尼亚州]

如果将这些状态粘贴到单元格B1中,则可以使用下面的单元格B3中的公式检查A3的内容并提取城市。

 =IF(ISNUMBER(FIND("[" & RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-1-LEN(SUBSTITUTE(A3," ",""))))) & "]",$B$1,1)),LEFT(A3,FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-1-LEN(SUBSTITUTE(A3," ",""))))-1),LEFT(A3,FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-LEN(SUBSTITUTE(A3," ",""))))-1)) 

然后将下面的公式粘贴到单元格C3中,检查A3的内容并提取状态。

 =IF(ISNUMBER(FIND("[" & RIGHT(F9,LEN(F9)-FIND("☃",SUBSTITUTE(F9," ","☃",LEN(F9)-1-LEN(SUBSTITUTE(F9," ",""))))) & "]",$B$1,1)),RIGHT(F9,LEN(F9)-FIND("☃",SUBSTITUTE(F9," ","☃",LEN(F9)-1-LEN(SUBSTITUTE(F9," ",""))))),RIGHT(F9,LEN(F9)-FIND("☃",SUBSTITUTE(F9," ","☃",LEN(F9)-LEN(SUBSTITUTE(F9," ","")))))) 

用三个字处理国家的公式

公式正在变得非常长,但是它所做的只是检查一个匹配项,从最后3个空格开始,然后是2个空格,如果在1个空格处没有发现状态分裂。

提取城市

 =IF(ISNUMBER(FIND("["&RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-2-LEN(SUBSTITUTE(A3," ","")))))&"]",$B$1,1)),LEFT(A3,FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-2-LEN(SUBSTITUTE(A3," ",""))))-1),IF(ISNUMBER(FIND("["&RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-1-LEN(SUBSTITUTE(A3," ","")))))&"]",$B$1,1)),LEFT(A3,FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-1-LEN(SUBSTITUTE(A3," ",""))))-1),LEFT(A3,FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-LEN(SUBSTITUTE(A3," ",""))))-1))) 

提取状态

 =IF(ISNUMBER(FIND("["&RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-2-LEN(SUBSTITUTE(A3," ","")))))&"]",$B$1,1)),RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-2-LEN(SUBSTITUTE(A3," ",""))))),IF(ISNUMBER(FIND("["&RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-1-LEN(SUBSTITUTE(A3," ","")))))&"]",$B$1,1)),RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-1-LEN(SUBSTITUTE(A3," ",""))))),RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-LEN(SUBSTITUTE(A3," ",""))))))) 

它是如何工作的公式通过从最后一个空间取一个空间来寻找倒数第二个空间(感谢用户m4573r的最后一个空间公式)。 然后它把最后一个空格的所有东西都加上去,加上“[]”括号,然后对照B1中的状态列表文本进行检查。 如果存在,则使用该点的倒数第二个空格将文本分成两半,然后返回左侧的城市或右侧的状态。