首页 > 解决方案 > 修剪函数的 Excel IF 语句

问题描述

下午好,

如果可能的话,我想有一个固定的修剪地址。

我的地址是:

** 15-21 Bournemouth rd, Aberdeen, AB11 6YA**

我想摆脱邮政编码并保持这样的地址形式:

15-21 伯恩茅斯路,阿伯丁,

在这种情况下,我必须使用左边的 TRIM 功能,我做了什么。

我尝试了这两个公式:

 =LEFT(TRIM(D18),FIND("^",SUBSTITUTE(TRIM(D18)&" "," ","^",4))-2)

 =TRIM(LEFT(D18, FIND("~",SUBSTITUTE(D18, " ", "~",5)&"~")))

这给了我结果:

15-21 Bournemouth rd, 阿伯丁

15-21 伯恩茅斯路,阿伯丁,

然后就好了。我很开心。

虽然有时我的地址带有自己的前提名称,如下所示:

21-23 Regis House 15-21 Bournemouth rd, Aberdeen, AB11 6YA

然后问题变得更加复杂,因为我无法应用这些公式(我必须手动更改它们,这是我不想要的)。

在相同公式参数的结果中,我得到了相应的结果:

21-23 瑞吉楼 15-2

23 瑞吉大厦,15-21

这不好,因为我只需要一个没有邮政编码的完整地址。

我无法手动更改这些公式。最重要的是,当我将它们交换到右侧时,会保留最右边的东西。

我在这里找到了一些东西:

结合修剪和 if 公式

TRIM 函数的 IF 语句,并且 net 试图将其绘制到我的示例中:

   =IF(NOT(SUM(COUNTIF(A18, "*"&{",",","}&"*"))), TRIM(LEFT(SUBSTITUTE(MID(A18,FIND("|",SUBSTITUTE(A18,"-","|",2))+1,LEN(A18)),"-",REPT(" ",LEN(A18))),LEN(A18))), "")

返回#VALUE

我该如何解决?

标签: excelif-statementexcel-formulastreet-address

解决方案


如果我们可以假设您的邮政编码始终遵循字符串中的最后一个逗号,您可以使用以下内容提取最后一个逗号之前的所有内容:

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

请注意,这还假设它@不会出现在您的字符串中。我们本质上想用一个符号替换您的目标逗号,该符号对于任何字符串中的所有其他字符都是唯一的


VBA

如果您对 VBA 解决方案持开放态度,则可以使用以下 UDF 获得相同的结果

Public Function LASTCOMMA(Target As String)

Dim i As Long, Arr
Arr = Split(Target, ",")

For i = LBound(Arr) To (UBound(Arr) - 1)
    LASTCOMMA = LASTCOMMA & Arr(i)
Next i

End Function

推荐阅读