我正在尝试更新一些地址并修复区分大小写的错误,例如“ 123 Nw Apple St”应为“ 123 NW Apple St”。我希望能够找到所有的“ Ne”,“ Nw”,“ Se ”和“ Sw”。并尽可能将其替换为正确的版本。但是,我还没有弄清楚如何找到这些。
我使用搜索和查找尝试了几种不同的方法。我遇到的问题是Nw并不总是在地址末尾。
我尝试过的几件事;
=SEARCH(" "&"Nw"&" ",A2,1)
和
=SEARCH(" Nw ",A2,1)
我只需要找到Nw的一些标识符即可。如果可以将其替换为“ NW” 那会更好。
答案 0 :(得分:3)
如果您希望将所有两个字符的方向都大写而不用更改以下单词:
厨具
然后考虑以下用户定义功能:
Public Function TidyUp(sin As String) As String
Dim i As Long
arr = Split(sin, " ")
For i = LBound(arr) To UBound(arr)
If UCase(arr(i)) = "NE" Then arr(i) = "NE"
If UCase(arr(i)) = "NW" Then arr(i) = "NW"
If UCase(arr(i)) = "SE" Then arr(i) = "SE"
If UCase(arr(i)) = "SW" Then arr(i) = "SW"
Next i
TidyUp = Join(arr, " ")
End Function
用户定义的功能(UDF)非常容易安装和使用:
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
要删除 UDF:
要使用来自Excel的UDF,
= myfunction(A1)
要全面了解有关宏的更多信息,请参见:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
,有关UDF的详细信息,请参见:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其正常工作!
答案 1 :(得分:2)
SEARCH
将返回子字符串在正在搜索的字符串中的位置,并且不区分大小写。可以与REPLACE
一起使用以实现您想要的:
=REPLACE(A2,SEARCH(" NW ",A2 & " "),3," NW")
答案 2 :(得分:1)
如果所有地址都是每个单词都应以大写字母开头的地址(四个缩写除外),则 MAY 可以执行以下操作:
=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PROPER(A2&" ")," Nw ", " NW ")," Ne "," NE ")," Se "," SE ")," Se "," SW "))
否则,如果要将“ nw”更改为“ NW”以及将“ Nw”更改为“ NW”,则需要再进行四个嵌套替换。
=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2&" "," Nw ", " NW ")," Ne "," NE ")," Se "," SE ")," Sw "," SW ")," nw "," NW ")," ne "," NE ")," se "," SE ")," sw "," SW "))
答案 3 :(得分:1)
您可以使用不区分大小写的SEARCH
和嵌套的IFERROR
来替换方向性缩写。
例如:
=IFERROR(IFERROR(IFERROR(IFERROR(REPLACE(A1,SEARCH(" nw ",A1)+1,2,"NW"),
REPLACE(A1,SEARCH(" ne ",A1)+1,2,"NE")),
REPLACE(A1,SEARCH(" se ",A1)+1,2,"SE")),
REPLACE(A1,SEARCH(" sw ",A1)+1,2,"SW")),A1)
但是,如果您需要检测和纠正其他问题,则最好使用VBA解决方案。