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

How to detect a specific string text in a cell and remove it in excel?

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

您可以在包含数据的单元格旁边创建 2 个单元格,一个用于城市,一个用于州。输入公式并自动填写。

提取城市的公式

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

提取状态的公式

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

这些公式采用第一个 space 左侧的文本和第一个 space 右侧的文本。如果城市有 space,例如"New York" 但很难解决这个问题。

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

用2个单词解决城市问题

我假设这些州是美国各州,因此我创建了一个包含 2 个单词的所有美国州的字符串

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

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

=IF(ISNUMBER(FIND("[" & RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-1-LEN(SUBSTITUTE(A3," ",""))))) & "]",$B,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)),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 spaces 和 2 spaces 处进行拆分,如果未找到状态在 1 space.

处拆分

提取城市

=IF(ISNUMBER(FIND("["&RIGHT(A3,LEN(A3)-FIND("☃",SUBSTITUTE(A3," ","☃",LEN(A3)-2-LEN(SUBSTITUTE(A3," ","")))))&"]",$B,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)),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)),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)),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," ","")))))))

工作原理 该公式通过从最后一个 space 中减去一个来查找倒数第二个 space(感谢用户 m4573r 提供了最后一个 space 公式)。然后它获取最后一个 space 的所有权利,添加“[]”括号并对照 B1 中的州列表文本检查它。如果它存在,则它使用该点的倒数第二个 space 将文本切成两半,return 左边的城市或右边的州。