Excel公式获取最后两个逗号之间的文本

我有这个数据在单元格A1:

Majestic Properties Design District, LLC, Ste. 101, 35 NE 40TH ST, Miami, FL 33137 

还有一些其他格式的这些格式的地址也是如此

 Fortune International Realty Iriondo Ecker & Assoc. Inc., Ste 25, 260 Crandon Blvd, Key Biscayne, FL 33149 

我想要的输出是

 Miami Key Biscayne 

等等

为了得到我所做的Zip和状态

 =RIGHT(A1,8) 

但现在我需要得到城市(这是从最后两个逗号之间的文本)。

我不想使用TEXT到COLUMN或任何VBA。 我想用一个公式。

也许这个:

 =REPLACE(LEFT(A1,LEN(A1)-10),1,FIND("|",SUBSTITUTE(A1,",","|",LEN(A1)-LEN(SUBSTITUTE(A1,",",""))-1))+1,"") 

这个公式也应该工作,不依赖于邮政编码的长度….

=TRIM(LEFT(RIGHT(SUBSTITUTE(A1,",",REPT(" ",100)),200),100))

你问如何提取夹在单元格中第一个和第二个最右边的逗号之间的文本。

从单元格左边开始计数字符的实例很容易。 然而,从Excel开始计数是非常困难的。 计数越高,难度就越大:一般来说,如果要查找第n个字符的实例,则需要input的工作表公式的长度会像指数一样增长,如4^n ! (如果你想在一个单一的公式中做到这一点)

你可能想看看我的这些早期的答案类似的问题。

  • 如何从Excel列中提取最后一个子string?
  • Excel – 从string中获取文件path

这些答案显示了如何从右侧确定angular色的第一个实例的位置(然后将整个文本提取到左侧或右侧)。 您不仅需要find( n=2 )的第一个也是第二个实例,所以您的公式将会比这些答案中的公式长16倍。 再一次,这是如果你想在一个单一的公式做到这一点。

如果有一个额外的单元格包含中间结果是可以接受的,那么你可以这样做:

在单元格A6:您的地址文本

在单元格A7中,我们从右侧删除第一个逗号,然后删除所有文本:

 =LEFT(A6,FIND(CHAR(1), SUBSTITUTE(A6,$A$3,CHAR(1),LEN(A6)-LEN(SUBSTITUTE(A6,$A$3,""))))-1) 

在单元格A8中,我们只保留下一个最右边的逗号之后的文本:

 =TRIM(MID(A7,FIND(CHAR(1), SUBSTITUTE(A7,$A$3,CHAR(1),LEN(A7)-LEN(SUBSTITUTE(A7,$A$3,""))))+1,LEN(A7))) 

请注意,我将分隔符存储在单元格A3 ,因此很容易更改。

完成。 结果如下所示:

在这里输入图像说明

如果您必须只有1个公式,并且没有中间结果的单元格,那么在单元格A8的公式中,将A7每个实例replace为LEFT(A6,FIND(CHAR(1), SUBSTITUTE(A6,$A$3,CHAR(1),LEN(A6)-LEN(SUBSTITUTE(A6,$A$3,""))))-1) 。 我忘了Excel中公式长度的限制…