1

我在单元格 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

等等

为了得到邮编和状态,我做了

=RIGHT(A1,8)

但是现在我需要获取城市(即最后一个逗号之间的文本)。

我不想将 TEXT 用于 COLUMN 或任何 VBA。我想用一个公式。

4

3 回答 3

6

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

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

于 2012-06-13T09:45:01.703 回答
4

也许是这样:

=REPLACE(LEFT(A1,LEN(A1)-10),1,FIND("|",SUBSTITUTE(A1,",","|",LEN(A1)-LEN(SUBSTITUTE(A1,",",""))-1))+1,"")
于 2012-06-13T06:57:22.287 回答
2

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

从单元格的左侧开始计算字符的实例很容易。然而,在 Excel 中从右开始计数是出了名的困难。计数越高,难度越大:通常,如果您想找到n第一个字符实例,您需要输入的工作表公式的长度会呈指数增长,例如4^n!(如果您想在一个公式中执行此操作。)

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

这些答案显示了如何从右侧确定字符的第一个实例的位置(然后将整个文本提取到该字符的左侧或右侧)。您不仅需要找到( ) 的第一个实例,还需要找到第二个实例,这样您的公式将比这些答案中的公式长 16 倍。同样,如果您想在一个公式中执行此操作。,n=2

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

在单元格 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)))

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

完毕。结果如下所示:

在此处输入图像描述

如果您必须只有 1 个公式并且没有具有中间结果的单元格,则在单元格的公式中A8,将每个实例替换A7LEFT(A6,FIND(CHAR(1), SUBSTITUTE(A6,$A$3,CHAR(1),LEN(A6)-LEN(SUBSTITUTE(A6,$A$3,""))))-1)。我忘记了Excel中公式长度的限制......

于 2012-06-13T07:06:43.327 回答