あるWordを別のWordに置き換えるコードを作成しようとしています。例:AvenueをAveに、NorthをNに置き換えます。MSAccessを使用しています。SQLREPLACE関数を使用できますが、VBAでAccessモジュールを使用してこれを行い、関数を他の列にアタッチできます。
これからどこから始めればいいかわかりませんので、どんな入力でも大歓迎です。
男
AccessのVBA関数を使用します Replace(text, find, replacement)
:
Dim result As String
result = Replace("Some sentence containing Avenue in it.", "Avenue", "Ave")
私はこのスレッドを読んでいたので、OPにとって確実にタイムリーではなくなったとしても、情報を追加したいと思います。
上記のBiggerDonは、「北」を「N」で置き換えることの難しさを指摘しています。 「アベニュー」から「アベニュー」にも同様の問題が存在します(たとえば、「アベニューオブザアメリカズ」は「アベニューオブザアメリカズ」になります:理解できるが、OPが望むものではない可能性があります)。
Replace()関数は完全にコンテキストフリーですが、アドレスはそうではありません。完全なソリューションには、コンテキストを正しく解釈するための追加のロジックが必要であり、必要に応じてreplace()を適用します。
データベースには一般に住所が含まれているため、米国内の住所に適用されるOPの問題の一般化されたバージョンは、コーディング精度サポートシステム(CASS)によって対処されています(ユーモア!)。 CASSは、米国の住所を受け入れ、米国郵政公社によって設定された標準を満たすためにそれを完成または修正するデータベースツールです。ウィキペディアのエントリ https://en.wikipedia.org/wiki/Postal_address_verification には基本があり、詳細は郵便局で入手できます。 https://ribbs.usps.gov /index.cfm?page=address_info_systems
これに似た関数を使用することもできます。これにより、値を変更したいさまざまな場合に追加できます。
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
文字列「North」は通りの名前の始まりかもしれないので、例えば「Northern Boulevard」では、通りの方向は常に通り番号と通り名の間にあり、通り番号と通り名から分離されています。
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