Доступ VBA | Как заменить части строки другой строкой - PullRequest
40 голосов
/ 18 декабря 2011

Я пытаюсь создать фрагмент кода, который заменяет одно слово другим.Пример: замените Avenue на Ave, а North на N. Я использую MS Access, я мог бы использовать функцию SQL REPLACE, но я хочу сделать это в VBA, используя модуль Access, чтобы я мог прикрепить функцию к другому столбцу.

Я не уверен, с чего начать, поэтому любой вклад будет принят с благодарностью.

Парень

Ответы [ 4 ]

60 голосов
/ 18 декабря 2011

Использовать функцию доступа VBA Replace(text, find, replacement):

Dim result As String

result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")
3 голосов
/ 14 января 2016

Я читал эту ветку и хотел бы добавить информацию, хотя она, безусловно, более не своевременна для ОП.

Выше BiggerDon указывает на трудность замены "Север" на "N".Аналогичная проблема существует с «Avenue» для «Ave» (например, «Avenue of the Americas» становится «Ave of the Americas»: все еще понятно, но, вероятно, не то, что хочет OP.

Функция replace ()полностью не зависит от контекста, а адреса - нет. Полное решение должно иметь дополнительную логику для правильной интерпретации контекста, а затем при необходимости применять replace ().

Базы данных обычно содержат адреса, и поэтому я хотелОтметим, что обобщенная версия проблемы ОП применительно к адресам в Соединенных Штатах была рассмотрена (с юмором!) Системой поддержки точности кодирования (CASS). CASS - это инструмент базы данных, который принимает адрес в США и дополняет или исправляет егочтобы соответствовать стандарту, установленному почтовой службой США. Запись в Википедии https://en.wikipedia.org/wiki/Postal_address_verification содержит основы, а дополнительную информацию можно получить в почтовом отделении: https://ribbs.usps.gov/index.cfm?page=address_info_systems

2 голосов
/ 29 августа 2013

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

Public Function strReplace(varValue As Variant) as Variant

Select Case varValue

    Case "Avenue"
        strReplace = "Ave"

    Case " North "
        strReplace = " N "

    Case Else
        strReplace = varValue

End Select

End Function
2 голосов
/ 18 декабря 2011

Вы также можете использовать функцию, аналогичную этой, она позволит вам добавлять в различных случаях, когда вы хотите изменить значения:

Public Function strReplace(varValue As Variant) as Variant

    Select Case varValue

        Case "Avenue"
            strReplace = "Ave"

        Case "North"
            strReplace = "N"

        Case Else
            strReplace = varValue

    End Select

End Function

Тогда ваш SQL будет выглядеть примерно так:

SELECT strReplace(Address) As Add FROM Tablename
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...