String 如何在Excel中隔离以空格开头、以逗号结尾的文本字符串?

String 如何在Excel中隔离以空格开头、以逗号结尾的文本字符串?,string,excel,String,Excel,我有一列单元格,地址如下: 加利福尼亚州尤卡帕尤卡帕大道34470号,邮编992399 加利福尼亚州赫斯佩里亚大街15787号,92345 加利福尼亚州维克多维尔熊谷路15109号,92345 我想把城市、州拉出来;我试图写一个公式来实现这一点,但我遇到了麻烦 基本上,我在寻找一种找到昏迷的方法,从右到左读取字符串,然后在第一个空格处停止;似乎很简单 所以在上面的例子中,我希望拉出以下字符串 加利福尼亚州尤卡帕,邮编992399 赫斯佩里亚,加利福尼亚州,92345 加利福尼亚州维克多维尔

我有一列单元格,地址如下:

  • 加利福尼亚州尤卡帕尤卡帕大道34470号,邮编992399
  • 加利福尼亚州赫斯佩里亚大街15787号,92345
  • 加利福尼亚州维克多维尔熊谷路15109号,92345
我想把城市、州拉出来;我试图写一个公式来实现这一点,但我遇到了麻烦

基本上,我在寻找一种找到昏迷的方法,从右到左读取字符串,然后在第一个空格处停止;似乎很简单

所以在上面的例子中,我希望拉出以下字符串

  • 加利福尼亚州尤卡帕,邮编992399
  • 赫斯佩里亚,加利福尼亚州,92345
  • 加利福尼亚州维克多维尔92345

在Excel 2010中,可以使用数据功能区上的“文本到列”功能

这一点在下面更详细地解释


将数据拆分为列后,添加一个新列,将城市、州和zip连接在一起。类似于连接(D2,“,E2,”,F2)的内容。

尝试以下内容:

=LEFT(
    RIGHT(A1,LEN(A1)-SEARCH(",",A1)-1),
    SEARCH(" ",RIGHT(A1,LEN(A1)-SEARCH(",",A1)-1))-1)
这种搜索的唯一问题是你的数据需要非常干净。在您的示例中,我必须立即跳过逗号后的空格,但是如果您的数据不总是有空格,它将无法正常工作

根据您的评论,尝试以下操作:

=LEFT(
    RIGHT(A1,LEN(A1)-SEARCH(" ",A1)),
    SEARCH(",",RIGHT(A1,LEN(A1)-SEARCH(" ",A1)))-1)
您可以使用以下选项:

=MID(A1,FIND("@",SUBSTITUTE(LEFT(A1,FIND(",",A1))," ","@",LEN(LEFT(A1,FIND(",",A1)))-LEN(SUBSTITUTE(LEFT(A1,FIND(",",A1))," ",""))))+1,LEN(A1))
这将返回:

Yucaipa, CA 992399
Hesperia, CA 92345
Victorville, CA 92345
从你的测试数据

如果您的文本中有
@
符号,您可以尝试以下方法:

=MID(A1,FIND(CHAR(1),SUBSTITUTE(LEFT(A1,FIND(",",A1))," ",CHAR(1),LEN(LEFT(A1,FIND(",",A1)))-LEN(SUBSTITUTE(LEFT(A1,FIND(",",A1))," ",""))))+1,LEN(A1))

解释
=左(A1,FIND(“,”,A1))
给出了
34470 Yucaipa大道Yucaipa,
。让我们称这个位为“文本”

=替换(Text,“,”@),LEN(Text)-LEN(替换(Text,“,”))
。此位用于将空格的最后一个实例替换为
@
SUBSTITUTE
的第四个参数给出了要替换的空格的实例,
LEN(Text)-LEN(SUBSTITUTE(Text,“,”)
给出了文本中的空格数。你得到了
34470尤卡帕Boulevard@Yucaipa,
作为此零件的结果


然后,在此上执行
MID
,以获得
@
的位置,直到结束。

我希望没有提到这一点:


< Prm(右)(代号(A1,“”,RePT(“99”),297))/P>在逗号左边的空间在旧金山、圣马特奥、EtCyes失败。幸运的是,我的数据只有没有空格的城市。文本到列功能不起作用的原因是它解析数据太多,基本上在上面的两个示例中,我只想在将数据拆分为列后,从第一个字符串返回“Yucaipa,CA 992399”,从第二个字符串返回“Hesperia,CA 92345”,然后用类似于=concatenate(D2,“,E2,”,F2)的东西将您想要的一个连接在一起。只有当所有街道地址都是一致的时,这才有效。唯一不变的是城市和州之间有一个逗号,我想用它作为“旗帜”。我有300多行需要编辑。如果一个地址是123 Main Street,另一个地址是5467 Vine Road Lane,那么我会有太多的列,并且不是所有的行都会在相同的列中包含城市、州邮政编码。您想要的解决方案还依赖于城市名称,这些城市名称是一个没有空格的单词。不清楚这里是否有一个很好的“公式”,您最好使用用户定义的函数。我知道没有反转中间功能。幸运的是,所有城市名称都是单个单词。非常感谢您的快速响应,但我认为我在解释我的问题时做得很差。我需要它做的是1)找到逗号2)向左移动到第一个空格,然后返回该空格后的所有字符。我对第二个答案的评论解释了期望的结果,但我认为你的思路是正确的。你能解释一下它是如何工作的吗?我想有了这些信息,我可以试着解决我的问题problem@user2749122-我已经为你提供了一个解决方案。请尝试我使用过的四个函数,看看它们是如何工作的。:-)哇-太棒了。我喜欢通过基本上删除所有空格,然后从原始文本字符串中减去相应数量的字符来查找空格实例。纯粹的天才。我很想学习这些高级字符串操作技术;关于我在哪里可以学到更多或者excel中的工具可以帮助我学习,有什么建议吗?@user2749122我当时在StackOverflow上看到了与你的问题有点类似的答案,并结合了每次学到的每一点:)@user2749122 Oops,我在F3中测试过,谢谢你发现:)