アプリ版:「スタンプのみでお礼する」機能のリリースについて

顧客データの重複をなくすため、顧客データのクレンジングを行っております。
氏名項目の姓・名間の空白を簡単に除去する方法はありますか?
(『山田△太郎』⇒『山田太郎』のように空白を詰めて全データを同一形式にしたい)

MS-ACCESS2000、Excel2003を主なツールとしております。
もしお分かりになる方がいらっしゃいましたらご教授宜しくお願い致します。

A 回答 (1件)

Access2002以降なら、クエリでReplace関数を使用してスペースを空文字に


変換するのが簡単・・・なのですが、Access2000では、クエリにReplace関数を
使用しようするとエラーが発生してしまうので、その分、細工が必要になります。


1)クエリ用の代替関数・QReplaceの宣言(標準モジュールに貼り付けて下さい):

Private Function QReplace(StrExp As String, StrFind As String, StrRpl As String, _
  Optional LngStrt As Long = 1, Optional LngCnt As Long = -1, _
  Optional Comp As VbCompareMethod = vbBinaryCompare)
'引数の名前は変えていますが、実質Replace関数の引数と同じですので、
'詳細は同関数のヘルプを参照して下さい。

  QReplace = Replace(StrExp, StrFind, StrRpl, LngStrt, LngCnt, Comp)

End Function


2)上記関数を使用したクエリの作成:

クエリ(SQL文):

Update 顧客情報 Set 顧客情報.氏名 = QReplace(顧客情報.氏名, " ", "");

※新規クエリを開いたら、『テーブルの表示』ダイアログは何もせずに閉じ、
  メニューで「表示(V)→SQL ビュー(Q)」を選択した後、上記SQL文を貼付
  (テーブル名を「顧客情報」、フィールド名を「氏名」と仮定したものですので、
  必要に応じて修正してください)


ここまで行ったら、後は上記クエリを実行すれば、指定したフィールドのスペース
(" ")が、空文字("")に置換されます。
※念のため、実行前にデータのバックアップを行うことをお勧めします。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。
QReplaceの代替関数は使用したことは無く、
Accessの知識もあまり無いため、正直苦戦しました。

しかし、職場の他PCにAccess2003があったので、
Replace関数というか『置換』処理で対応が可能でした。
質問前にもAccess2000やExcel2003で『置換』処理を試していたのですが、
うまくいかず、DexMachinaさんの回答が無ければ諦めていたところでした。

ちなみにAccess2003の『置換』処理は、件数制限があるようですが、
QReplace関数では発生しないのでしょうか?
(1万~2万件程度で置換エラーが発生して再度実行を繰り返しました。)
近いうちにデータ変換⇒移行作業が発生するため、
実際の作業時間を想定しなければなりません。
もしわかれば教えてください。

宜しくお願いいたします。

お礼日時:2008/08/13 07:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!