Excel 从字符串的任意部分提取一个单词

问题描述

我有包含地址的字符串,这些部分用逗号分隔。

洛克斯布鲁克校区外(巴斯温泉大学)洛克斯布鲁克路,巴斯,CB1 3QQ,位于 D19 牢房内

我想从这个字符串中提取城市名称,即“Bath”。城市名称总是放在邮政编码之前。

我已经通过 2 个步骤进行了处理。首先,我提取了最后一个逗号之前的所有内容,如下所示:

Excel IF statement for trim function

  =MID(D19,1,FIND("@",SUBSTITUTE(D19,","@",LEN(D19)-LEN(SUBSTITUTE(D19,"")))))

这给了我:

洛克斯布鲁克校区外(巴斯温泉大学)洛克斯布鲁克路,巴斯,

接下来,我必须使用以下公式提取新字符串中的最后一个单词:

  =TRIM(RIGHT(SUBSTITUTE(AA5," ",REPT(" ",100)),100))

这给了我最终的结果:

浴缸,

但是,我想只用 1 个操作来完成。

有可能吗?

在这里找到了一些公式,它应该从字符串中提取任何单词(第 n 个单词),但遗憾的是,它在我的情况下不起作用。

https://exceljet.net/formula/extract-nth-word-from-text-string

   =TRIM(MID(SUBSTITUTE(D19,LEN(D19))),(N-1)*LEN(D19)+1,LEN(D19)))

它终于给了我 #NAME?

此外,我有疑虑,当地址字符串略有不同时,它会不起作用,包含更多元素,如街区名称、街道名称、城市、邮政编码或仅街道名称、城市和邮政编码。

>

有没有办法只从字符串中最后一个逗号之前(在最后一个逗号之后)中提取一个部分?

解决方法

你可以试试:

=FILTERXML("<t><s>"&SUBSTITUTE(D19,","</s><s>")&"</s></t>","//s[position()=last()-1]")

xpath 表达式 //s[position()=last()-1] 告诉函数返回按位置索引倒数第二个的 s 节点。

有关 FILTERXML() 和使用一些 xpath 返回感兴趣的子字符串的更多信息,您可能会发现 this 很有趣。

,

你可以试试这个:

=MID(A2,SEARCH(",A2) + 1,A2,A2)+1) - SEARCH(",A2) - 1)

从这里:https://www.ablebits.com/office-addins-blog/2016/06/01/split-text-string-excel/