• ベストアンサー

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

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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
質問者

お礼

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

関連するQ&A

  • Accessで複数(200件程)の置換

    Accessで一つのフィールドの文字を置換えたいです。 置換えるものが数件なら更新クエリで Replace(Replace([フィールド1],"あ","a"),"い","i") とネストすればいいだけだと思いますが、置換えたいものが200件程あり、置換元のレコードも17万件程あります。 どの方法が簡潔で負荷も少ないでしょうか? いろいろなサイトを見ましたが、結局どれがいいか分からずじまいです。 ベストな方法を教えて下さい。 よろしくお願いします。

  • Access2000で複数の検索項目を作りたいのですが・・・

    こんにちわ。 今、Accessで社員録を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:社員録 フィールド名:ID・検索名・氏名・所属ID・所属 ■クエリ クエリ名:社員録クエリ フィールド名:ID・検索名・氏名・所属ID・所属 検索名抽出条件:検索名フィールド: Like [Forms]![社員録 縦]![けんさく]         所属フィールド: Like [Forms]![社員録 縦]![抽出検索名] ■フォーム フォーム名:社員録フォーム:テキスト1・テキスト2・ボタン1       社員録サブフォーム:データソース:社員録クエリ テキスト1:所属を入力 テキスト2:検索名を入力 ボタン1:マクロの再クエリを実行する ■ここからが質問です■ (1)テキスト1又は、2が空白のとき社員録全体から検索かフィルタ。 (2)テキスト1・2が、入力されてる時、両条件から検索かフィルタ。 をしたいのですが、何かいい方法がありましたら教えて下さい。 説明が、長くなってしまってスミマセン。。。

  • 複数の文字を置換した場合はフィールドを分けるしかないですか?

    Replace関数は1つのフィールドに対して1つしか使えないのでしょうか? フィールド「タイトル」の「あ」と「い」を置換したい場合、 式1: Replace([タイトル],"あ","あああ") 式2: Replace([タイトル],"い","いいい") と、ふたつフィールドを作成するしかないのでしょうか? 式3: Replace([タイトル],"あ","あああ") and Replace([タイトル],"い","いいい") という風にしたら 「指定した式の構文が正しくありません」というエラーになってしまいます。 この例えは2つだからいいですが Replaceを使いたい文字が複数ある場合もフィールドに対して1つずつしか置換できないのでしょうか? 当方アクセス2003です。 よろしくお願いします。

  • 「ゞ」のみ置換するにはどうすればいいでしょう?

    「ゞ」を置換したいのに、 「ゞ」の次の文字まで置換されてしまう。 Sub test() Dim str会社名 As String str会社名 = "いすゞ自動車" Debug.Print Replace(str会社名, "ゞ", "ず") End Sub を実行すると 「ゞ自」が対象になってしまうのですが、 どうしてでしょうか? 「ゞ」は一文字ですよね? Replaceで「ゞ」のみ置換するにはどうすればいいでしょう?

  • AccessのデータをVBを使って置換する

    (1)VisualBasic6.0を用いて、Access2000のデータベースに接続します。 (2)データベースの中のテーブル(テーブル名:T-カレンダー)にあるフィールド(フィールド名:コード)に保存されているデータの一部分を置換したい。(⇒途中のアルファベットを変更したい。)(例;置換前:123FFF789 置換後:123III789)  テーブルを直接開いて、フィールドにカーソルをあわせて、”編集メニュー”の『検索と置換』から行っても出来るのですが、Accessを触らないでVBから作ったフォームから変更(置換)をさせたい。  ◇フォームに2つテキストボックスを作って、「検索する文字列」と「置換後の文字列」を入力し、『変換』ボタンを押したら、データが置換される、という流れ。   一回きりの置換でなくて、何回でも同じフィールド内のデータを置換したい。   SQLのREPLACE関数を用いて出来るかな、とは思っているのですが、どのように作成すればよろしいのでしょうか。  また他のやり方でシンプルな方法があればお教えください。

  • ACCESSでの置換で質問です。

    クエリで特定のフィールドの値を置換するようにしていますが、完全一致ではなく一部に特定の文字があった場合、別の名前に置換したいです。 元データ 契約番号 R00332 R00224 R00553 個人所有 会社所有 上記の契約番号のフィールドを下記のように新しい別フィールドに置換したい。 Rが入っている数字は、部門契約 個人所有は、空欄 会社所有は、空欄 としたいのですが、Replaceで対応しようとしましたがエラーが出てしまい駄目でした。 他に方法ありますでしょうか? また、契約日のフィールドも下記のように変更したいのです。 契約日 1月10日 2月3日 1月3日 1月13日 契約日のフィールドの日付が1月中になっているものは2月1日とし、2月中のものは3月1日と請求日をこれも新しい別フィールドに記載したい。 

  • Accessの文字の置換のクエリについて

    Accessについて教えて下さい。 SQLデータベースをODBCを使用して、Accessにてリンクしています。 テーブルのあるフィールドに顧客名が並んでいます。 頭の一文字を○に置換するには、どのようなクエリを組めばいいのでしょうか? 山田 太郎⇒○田 太郎 田中 一郎⇒○中 一郎 佐藤 花子⇒○藤 花子 また、間にスペースが入っている後の文字(名)の置換の方法も教えて下さい。

  • Accessでの文字の置換のクエリについて

    Accessについて教えて下さい。 SQLデータベースをODBCを使用して、Accessにてリンクしています。 テーブルのあるフィールドに顧客名が並んでいます。 頭の一文字を○に置換するには、どのようなクエリを組めばいいのでしょうか? 山田 太郎⇒○田 太郎 田中 一郎⇒○中 一郎 佐藤 花子⇒○藤 花子 また、間にスペースが入っている後の文字(名)の置換の方法も教えて下さい。

  • Accessの文字置換方法

    Access2002を使用しております。 「結果テーブル」というテーブルの<支店名>というフィールドの空白のレコードをすべて"空白"と言う文字に置換する作業を行っています。 現在は一度「結果テーブル」を開いた後に<支店名>フィールドを全部指定してから置換作業を行っているのですが、これをマクロを使用して自動処理にさせたいのですが、どうもうまくできません。どのようにすれば自動でできますか? VBAでもかまいません。 よろしくお願いします。

  • ACCESSのエラーで質問です。

    ACCESSでクエリを作成して、テーブルの内容を置換していますが、下記のエラーが出てしまいます。 #エラー やりました作業としては、フィールド内に入っている情報を置換したい為、クエリで別フィールドを作成して、そこの値を置換するようにしています。 VBというフィールドに「移」と入っていたらウィルスバスターライセンス移管と変換し、「1」入っていたらウィルスバスターライセンス購入となるようにする為です。 ただし、空欄もあるのですがその空欄に上記のような#エラーが出てしまいます。 ビルドを使用して、VB(1): Replace(Replace([vb],"移","ウィルスバスターライセンス移管"),"1","ウィルスバスターライセンス購入")と入力しました。 移と1は問題なく変換されたのですが、空欄のところが#エラーとなってしまいます。何か解決方法はありますか?

専門家に質問してみよう