Excel trim 函数的 IF 语句
Excel IF statement for trim function
下午好,
如果可能的话,我想要一个固定的 trim 地址。
我的地址是:
** 伯恩茅斯路 15-21 号,阿伯丁,AB11 6YA**
我想去掉邮政编码并保持这样的地址形式:
15-21 Bournemouth rd, 阿伯丁,
在这个事件中,我必须使用左边的 TRIM 函数,我就是这样做的。
我试过这两个公式:
=LEFT(TRIM(D18),FIND("^",SUBSTITUTE(TRIM(D18)&" "," ","^",4))-2)
和
=TRIM(LEFT(D18, FIND("~",SUBSTITUTE(D18, " ", "~",5)&"~")))
这给了我结果:
15-21 Bournemouth rd, 阿伯丁
15-21 Bournemouth rd, 阿伯丁,
那就可以了。我很开心。
虽然有时我的地址会带上自己的前提名字,像这样:
21-23 Regis House 15-21 Bournemouth rd, Aberdeen, AB11 6YA
然后问题变得更加复杂,因为我无法应用这些公式(我必须手动更改它们,我不想这样做)。
在我得到相应的相同公式参数的结果中:
21-23瑞吉大厦15-2
23 瑞吉大厦 15-21
这不太好,因为我只需要一个没有邮政编码的完整地址。
我无法手动更改这些公式。最重要的是,当我将它们交换到右侧时,最右侧的内容将被保留。
我在这里找到了一些东西:
Combining trim and if formula
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))), "")
哪个returns#VALUE.
我该如何解决?
IF 我们可以假设您的邮政编码 always 跟在字符串中的最后一个逗号之后 您可以使用下面的内容提取最后一个之前的所有内容逗号:
=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
下午好,
如果可能的话,我想要一个固定的 trim 地址。
我的地址是:
** 伯恩茅斯路 15-21 号,阿伯丁,AB11 6YA**
我想去掉邮政编码并保持这样的地址形式:
15-21 Bournemouth rd, 阿伯丁,
在这个事件中,我必须使用左边的 TRIM 函数,我就是这样做的。
我试过这两个公式:
=LEFT(TRIM(D18),FIND("^",SUBSTITUTE(TRIM(D18)&" "," ","^",4))-2)
和
=TRIM(LEFT(D18, FIND("~",SUBSTITUTE(D18, " ", "~",5)&"~")))
这给了我结果:
15-21 Bournemouth rd, 阿伯丁
15-21 Bournemouth rd, 阿伯丁,
那就可以了。我很开心。
虽然有时我的地址会带上自己的前提名字,像这样:
21-23 Regis House 15-21 Bournemouth rd, Aberdeen, AB11 6YA
然后问题变得更加复杂,因为我无法应用这些公式(我必须手动更改它们,我不想这样做)。
在我得到相应的相同公式参数的结果中:
21-23瑞吉大厦15-2
23 瑞吉大厦 15-21
这不太好,因为我只需要一个没有邮政编码的完整地址。
我无法手动更改这些公式。最重要的是,当我将它们交换到右侧时,最右侧的内容将被保留。
我在这里找到了一些东西:
Combining trim and if formula
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))), "")
哪个returns#VALUE.
我该如何解决?
IF 我们可以假设您的邮政编码 always 跟在字符串中的最后一个逗号之后 您可以使用下面的内容提取最后一个之前的所有内容逗号:
=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