• ベストアンサー

Accessで、1つの項目に複数の置換えを1度でするには?

Access2003で、1つの項目に複数の置換えを1で実行したいのですが、どうすればいいのでしょうか? 編集メニューの『置換』を使うのではなく、クエリやマクロで実行したいのです。 どんどん溜めているデータを定期的に決まった文字を1度に変換できるようにしたいのです。 例えば、[会社名]フィールドに入っている  「株式会社」 を 「(株)」 に、  「有限会社」 を 「(有)」 に、  「法人会社」 を 「(法)」 に、…続く…、などと置換えしたいのです。 更新クエリで、『Replace([会社名],"株式会社","(株)")』 と1つなら置換えできたのですが、複数置換えしたい場合は、同様のクエリをその数だけ作ってマクロで続けて実行させるという方法しかないのでしょうか? できればクエリを増やしたくないので、他にいい方法がありましたら、教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

同一のReplace関数のネストで、下記は2つの例ですが、3つまでぐらいなら、式が長くなるが辛抱できるのでは。 Replace(Replace([学校],"北小学校","北新小学校"),"中央小学校","中央北小学校") 生徒テーブルの学校フィールドで A生徒の学校フィールド  北小学校ー>北新小学校 B生徒の学校フィールド  中央小学校ーー>中央北小学校 になったフィールドを作れました。

chibiosa
質問者

お礼

こんな、ネストの仕方があったんですね!!勉強になりました。 これなら当初思っていたら、クエリかマクロだけ使って(クエリもあまり増やさず)なんとかなりますね。 どうもありがとうございました。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

一介のアマチュアですので、いい方法かどうか分かりませんが、 標準モジュールにユーザー関数を記述します。 Function myReplace(target As String) Dim buf As String buf = target buf = Replace(buf, "株式会社", "(株)") buf = Replace(buf, "有限会社", "(有)") '以下必要によりズラズラと記述 myReplace = buf End Function 更新クエリで、 会社名フィールドの、レコードの更新に、myreplace([会社名])と記述して実行。 で、一応一発でできると思います。

chibiosa
質問者

お礼

できれば、クエリかマクロだけ使ってなんとかなれば。。。と思っていたのですが、 このようにユーザー関数を作っておけば、一発でできますね!! どうもありがとうございました。