Excel中用于修剪函数的IF语句

问题描述 投票:-1回答:1

下午好

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

我的地址是:** 15-21 Bournemouth rd, Aberdeen, AB11 6YA**。

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

我想去掉邮编,保留地址表格,像这样。

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

在这种情况下,我必须从左边使用TRIM函数,我做了什么。

我尝试了这2个公式。

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

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

这给我的结果。

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

15-21 Bournemouth rd, Aberdeen,

那么是好的。我很开心。

虽然有时候我的地址是和自己的名字一起出现的,比如这样。

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

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

在相同的公式参数的结果,我得到相应的。

21 -23 Regis House 15 -2

23 Regis House, 15-21

这不是很好,因为我需要一个完整的地址,而不需要邮政编码。

我不能手动更改这些公式。最重要的是,当我把它们换到右边的时候,那么最右边的东西就会被保留下来。

我在这里发现了一些东西。

结合trim和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.

如何解决?

excel if-statement excel-formula street-address
1个回答
3
投票

IF 我们可以假设您的邮编 始终 字符串中的最后一个逗号,你可以使用下面的方法提取最后一个逗号之前的所有内容。

=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
© www.soinside.com 2019 - 2024. All rights reserved.