Есть ли способ найти текст с пробелами до и после строки в Excel? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь обновить некоторые адреса и исправить ошибки, чувствительные к регистру, например, «123 NW Apple St» должно быть «123 NW Apple St». Я бы хотел найти все «Ne», «Nw», «Se»."и" кач. "и, если возможно, замените их правильной версией.Однако мне еще предстоит выяснить, как их вообще найти.

Я пробовал пару разных методов, используя поиск и поиск.Проблема, с которой я сталкиваюсь, состоит в том, что Nw не всегда находится в конце адреса.

Пара вещей, которые я пробовал;

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

и

=SEARCH(" Nw ",A2,1)

Iпросто нужен какой-то идентификатор, который найден Nw.Если бы он мог заменить его на «NW», это было бы еще лучше.

Ответы [ 4 ]

3 голосов
/ 29 мая 2019

Если вы хотите использовать заглавные буквы в двухсимвольных направлениях без изменения слова вроде:

посуда

, затем рассмотрите следующую пользовательскую функцию:

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 будет сохранен вместе с ней. Если вы используете версию Excel позже, чем 2003, вы должны сохранить файл в формате .xlsm, а не .xlsx

К Удалить UDF:

  1. вызвать окно VBE, как указано выше
  2. очистить код
  3. закрыть окно VBE

Для используйте UDF из Excel:

* * = Тысяча сорок четыре MyFunction (А1)

Чтобы узнать больше о макросах в целом, см .:

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

Для работы должны быть включены макросы!

2 голосов
/ 29 мая 2019

SEARCH вернет позицию подстроки в искомой строке и не учитывает регистр.Это можно использовать с REPLACE для достижения желаемого:

=REPLACE(A2,SEARCH(" NW ",A2 & " "),3," NW")
1 голос
/ 29 мая 2019

Вы можете использовать SEARCH, который не учитывает регистр и вложен IFERROR s, чтобы заменить направленные сокращения.

Например:

=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.

1 голос
/ 29 мая 2019

Если это все адреса, где каждое слово должно начинаться с заглавной буквы, за исключением четырех сокращений, вы МОЖЕТЕ иметь возможность сделать это:

=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 "))

См.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...