如何在单元格中检测特定字符串文本并在excel中删除它?

如何在单元格中检测特定字符串文本并在excel中删除它?,excel,excel-formula,excel-2016,Excel,Excel Formula,Excel 2016,我有一个A2格式的位置列表:[城市州],其中城市或州可以由两个以上的单词组成。所有这些都在一个单元中。我有成千上万的数据。现在,我还有一份州的名单。我需要做的是从A2中删除状态,并在那里保留剩余的字符串。这样我就只剩下城市了。我需要这方面的帮助,因为数据以百万计,我有一个大约3万个城市的列表。您可以在包含城市和州数据的单元格旁边创建两个单元格。输入公式并自动填充 提取城市的公式 =left(A1,find(" ",A1,1)-1) =IF(ISNUMBER(FIND("["&RIGHT

我有一个A2格式的位置列表:[城市州],其中城市或州可以由两个以上的单词组成。所有这些都在一个单元中。我有成千上万的数据。现在,我还有一份州的名单。我需要做的是从A2中删除状态,并在那里保留剩余的字符串。这样我就只剩下城市了。我需要这方面的帮助,因为数据以百万计,我有一个大约3万个城市的列表。

您可以在包含城市和州数据的单元格旁边创建两个单元格。输入公式并自动填充

提取城市的公式

=left(A1,find(" ",A1,1)-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)))
提取状态的公式

=right(A1,len(A1)-find(" ",A1,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," ","")))))))
这些公式将文本置于第一个空格的左侧,将文本置于第一个空格的右侧。如果城市有一个空间,例如纽约,你会遇到问题,但要解决这个问题非常困难

另一种方法是使用VBA代码在所有单元格中循环,并在单元格上运行相同的代码,然后从该单元格中删除状态,并将状态放置在不同的单元格中。这是一个更复杂的选择

用两个词来解决城市问题

我假设州是美国的州,所以我创建了一个包含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个单词处理状态的公式

公式变得越来越长,但它所做的只是检查是否匹配,从末端开始在3个空格处拆分,然后在2个空格处拆分,如果未找到状态,则在1个空格处拆分

榨取城市

=left(A1,find(" ",A1,1)-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)))
提取状态

=right(A1,len(A1)-find(" ",A1,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中的状态列表文本进行检查。如果存在,则使用该点的最后一个空格将文本一分为二,然后从左侧返回城市或从右侧返回州。

非常感谢您的回答。正如你们所说,我面临着城市之间有空间的问题。我有很多。我想知道是否可以不使用VBA来完成。我是excel新手,对很多公式还不熟悉,更不用说VBA了。考虑到这些城市的唯一方法是创建自己的城市列表,其中包含两个单词,以便公式可以对照它们进行检查,或者创建有效状态的列表可能更容易。他们是美国各州吗?不,数据来自法国。因此,这座城市的名字是像圣·费勒·拉蒙塔涅(Ste Feyre La Montagne)这样的,尽管我在另一张纸上有州的名单。我会试试上面的公式。你只需要列出有空格的州,然后像我对美国州那样格式化它们。问题是,如果任何一个有多个空间。