Accessで業務システムを運用していると、CSV取込やExcel連携、顧客マスタ管理などで大量の文字列変換が発生します。結論から言うと、Replace関数を正しく活用することで、データ補正処理を大幅に自動化でき、開発工数と保守工数を削減できます。
実際に当サイトでも、文字変換やデータ加工に関する記事のアクセスが多く、データ整形系のノウハウへの需要が高いことが分かっています。 [ページとスクリーン_…とスクリーン_クラス | PDF]
今回はAccess VBAの定番関数であるReplace関数について、基本から実務レベルまで詳しく解説します。さらに、Copilotを活用したコード作成・レビュー方法についても紹介します。
Replace関数とは
Replace関数は、文字列の中に存在する特定の文字列を別の文字列へ置換する関数です。
基本構文は以下のようになります。
Replace(対象文字列, 検索文字列, 置換文字列)
例えば、
Dim strData As String
strData = "東京都 港区"
strData = Replace(strData, " ", "")
MsgBox strData
実行結果
東京都港区
全角スペースが削除されます。
住所や顧客名の補正では非常によく利用します。
なぜReplace関数が重要なのか
実務では以下のような問題が頻繁に発生します。
- 全角スペースと半角スペースが混在している
- ハイフンの種類がバラバラ
- 不要な記号が混ざっている
- 改行コードが残っている
- CSVデータの形式が統一されていない
例えば顧客データの場合、
株式会社ABC
株式会社 ABC
㈱ABC
人間が見れば同じ会社ですが、システム上は別データとして扱われます。
そのため、データ取込前の補正処理が非常に重要になります。
逆引き① 全角スペースを削除したい
最も利用頻度が高いパターンです。
strData = Replace(strData, “ ”, “”)
実行前
東京都 港区 芝公園
実行後
東京都港区芝公園
CSV取込時によく利用します。
逆引き② 半角スペースを削除したい
strData = Replace(strData, ” “, “”)
実行前
株式会社 ABC
実行後
株式会社ABC
名寄せ処理の前段階として有効です。
逆引き③ ハイフンを統一したい
住所や電話番号では様々なハイフンが混在します。
例
-
ー
―
−
–
統一する場合は以下のように記述します。
strData = Replace(strData, “-”, “-“)
strData = Replace(strData, “ー”, “-“)
strData = Replace(strData, “―”, “-“)
strData = Replace(strData, “−”, “-“)
電話番号管理で非常に役立ちます。
逆引き④ 改行コードを除去したい
ExcelやCSVから取り込んだデータでよく発生します。
strData = Replace(strData, vbCrLf, “”)
または
strData = Replace(strData, vbCr, “”)
strData = Replace(strData, vbLf, “”)
実行前
株式会社
ABC
“
実行後
株式会社ABC
逆引き⑤ カンマを削除したい
金額データの取込時によく利用します。
strPrice = Replace(strPrice, “,”, “”)
実行前
1,234,567
実行後
1234567
数値変換前の定番処理です。
逆引き⑥ 複数の文字をまとめて置換したい
複数回実行することで対応できます。
strData = Replace(strData, “株式会社”, “”)
strData = Replace(strData, “(株)”, “”)
strData = Replace(strData, “㈱”, “”)
実行前
㈱最新情報システム
実行後
最新情報システム
企業名の名寄せでよく利用されます。
実践例① CSV取込前のデータ補正
CSVを取り込む際に不要文字を削除します。
Function CleanData(ByVal strData As String) As String
strData = Replace(strData, " ", "")
strData = Replace(strData, " ", "")
strData = Replace(strData, vbCrLf, "")
CleanData = strData
End Function
利用例
Me!顧客名 = CleanData(Me!顧客名)
実践例② 電話番号統一
電話番号からハイフンを除去します。
Function FormatTel(ByVal strTel As String) As String strTel = Replace(strTel, "-", "") strTel = Replace(strTel, "-", "") strTel = Replace(strTel, "ー", "") FormatTel = strTel End Function
実行結果
03-1234-5678
↓
0312345678
実践例③ 住所データ標準化
住所データの品質向上に役立ちます。
Function CleanAddress(ByVal strAddress As String) strAddress = Replace(strAddress, " ", "") strAddress = Replace(strAddress, "丁目", "-") CleanAddress = strAddress End Function
取込時に統一ルールを適用できます。
Replace関数を大量処理で使う際の注意点
便利なReplace関数ですが、大量レコードに対して実行する場合は注意が必要です。
例えば、
For i = 1 To 100000 strData = Replace(strData, " ", "") Next
のような処理は時間がかかります。
大量データの場合は、
- 事前に必要な置換のみ実施
- 共通関数化
- 更新対象を限定
することが重要です。
共通関数化する
実務では共通関数にすることをおすすめします。
Public Function NormalizeText( _ ByVal strData As String) As String strData = Replace(strData, " ", "") strData = Replace(strData, " ", "") strData = Replace(strData, vbCrLf, "") NormalizeText = strData End Function
利用側はシンプルになります。
strCustomer = NormalizeText(strCustomer)
保守性が大幅に向上します。
Copilot活用術① クリーニング関数生成
Copilotへ以下のように依頼します。
Access VBAです。
住所データを補正する関数を作成してください。
・全角スペース削除
・半角スペース削除
・ハイフン統一
・改行削除
エラー処理付きでお願いします。
数秒でたたき台となるコードを生成できます。
Copilot活用術② 既存コードレビュー
既存コードを貼り付けて以下のように依頼します。
このReplace処理の改善点を教えてください。
処理速度と保守性の観点でレビューしてください。
すると、
- 共通関数化
- 配列化
- 冗長コード削除
などの提案を得られます。
Copilot活用術③ 名寄せロジック作成支援
例えば、
顧客マスタの表記ゆれを減らしたいです。
株式会社
㈱
(株)
を同じ扱いにする方法を提案してください。
と質問すると、Replace処理や正規化ロジックの候補を提示してくれます。
AI時代でもReplace関数が重要な理由
近年はCopilotによってコード生成が容易になりました。
しかし実際の業務では、
- 表記ゆれ
- データ品質
- マスタ統一
- CSV補正
といったデータクレンジング作業がなくなることはありません。
むしろAIでコードを作成する時代だからこそ、
「どのような置換を行うべきか」
という業務知識が重要になります。
Replace関数は、その中心となる基本テクニックと言えるでしょう。
まとめ
Replace関数はAccess VBAにおける最も利用頻度の高い文字列操作関数の一つです。
特に以下の場面で大きな効果を発揮します。
- CSV取込前のデータ補正
- 住所クレンジング
- 電話番号統一
- 名寄せ処理
- 不要文字削除
- Excel連携データ整形
また、Copilotと組み合わせることで、置換ロジックの作成やレビューを効率化できます。
Accessシステムにおいてデータ品質は非常に重要です。ぜひReplace関数を活用し、保守しやすく品質の高いシステム構築に役立ててください。

コメント