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

Excel extract one word from the any part of the string

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

Locksbrook 校区外(巴斯温泉大学)Locksbrook Road, Bath, CB1 3QQ 位于 D19 小区

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

我分两步完成了。首先,我提取了最后一个逗号之前的所有内容,如下所示:

  =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," ",REPT(" ",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] 告诉函数 return 位置索引倒数第二个 s 节点。

有关 FILTERXML() 的更多信息以及对 return 感兴趣子字符串的某些 xpath 的使用,您可能会发现 有趣。

你可以试试这个:

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

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