有没有办法在excel中的字符串前后查找带有空格的文本?

时间:2019-05-29 14:48:05

标签: excel search find

我正在尝试更新一些地址并修复区分大小写的错误,例如“ 123 Nw Apple St”应为“ 123 NW Apple St”。我希望能够找到所有的“ Ne”,“ Nw”,“ Se ”和“ Sw”。并尽可能将其替换为正确的版本。但是,我还没有弄清楚如何找到这些。

我使用搜索和查找尝试了几种不同的方法。我遇到的问题是Nw并不总是在地址末尾。

我尝试过的几件事;

=SEARCH(" "&"Nw"&" ",A2,1)

=SEARCH(" Nw ",A2,1)

我只需要找到Nw的一些标识符即可。如果可以将其替换为“ NW” 那会更好。

4 个答案:

答案 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

enter image description here

用户定义的功能(UDF)非常容易安装和使用:

  1. ALT-F11弹出VBE窗口
  2. ALT-I ALT-M打开一个新模块
  3. 将内容粘贴并关闭VBE窗口

如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

删除 UDF:

  1. 如上调出VBE窗口
  2. 清除代码
  3. 关闭VBE窗口

使用来自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 "))

See

答案 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解决方案。