ヘルプの森~Excel・Access・Office全般ヘルプデスクサイト

No.011

更新クエリでテーブルのデータを置換する(文字列の一部更新)

2003/2007/2010/2013/2016

テーブルのレコードが更新されるたびに、レコードのデータを置換する必要がある場合、毎回[置換]コマンドでは面倒ですね。
そのような場合には、更新クエリを作成しておくと便利です。

例えば次のようなテーブルがあるとします。

テーブル

レコードのデータの全体の更新の場合、例えば[F2]フィールドの「A-あ」を「A~あ」に更新するとか(下図左)、[F3]フィールドを100倍に更新するとか(下図右)の場合、次のような更新クエリを作成します。

更新クエリは、クエリをデザイン ビューで作成、データを更新するテーブルを追加します。
[クエリ ツール]-[デザイン]タブ-[クエリの種類]グループ-[更新]をクリックして、更新クエリに切り替えます。

更新クエリ

更新するフィールドをデザイン グリッドに配置し、[レコードの更新]セルに更新内容を指定して実行します。
特定のレコードを更新する場合は、抽出条件の設定も必要です。

更新クエリ全体

数値系の更新クエリの場合、手が滑ってまた実行してしまった場合、さらに100倍となりますので、ご注意ください。

では、今回の本題です。

更新クエリで、レコードの一部分の文字列を更新する場合、上図左のような設定ではできません。

では、[F3]フィールドで200以上のレコードのみ、[F1]フィールドの「-」を「=」に更新してみましょう。

文字列の部分更新はReplace関数を利用し、更新クエリの設定は次のように行います。

更新クエリ文字列部分

使用した、Replace関数は置換の関数です。
3つの引数は順番に、対象フィールド、検索文字列、置換文字列を指定します。

  Replace([F2],"-","=")

更新クエリ結果

更新クエリを実行後、万が一のときに元に戻すのが困難な場合がありますので、テーブルのバックアップを取るなどの対処を行っておくと安心です。

ヘルプmemo

<Replace関数>

指定した文字列を置換文字列に置換します。
 構文: Replace(expression, find, replace [, start ] [, count ] [, compare ] )
 引数:
  expression …置換する文字列を含む文字列式を指定
  find …検索する文字列を指定
  replace …置換する文字列を指定
  start …引数[expression]内の内部文字列の検索開始位置を指定[省略可]
今回主要な引数のみ記載しています。詳しくはMicrosoftのサポートページ「Replace 関数」をご参照ください。

関連ヘルプ

クエリの演算フィールドについて、式ビルダーの使い方
クロス集計クエリの結果のNull値を「0」と表示する
重複のない一通りデータを取得したい
テーブルのデータ型をクエリで変更する 《データ定義クエリ》
外部結合とは
削除クエリで、別のテーブルまたはクエリと共通するレコードを一括削除する
複数テーブルをつなげてレコードを結合する 《ユニオン クエリ》
クエリで空白(でない)データを抽出したい、Accessの空白について
重複クエリとは
部分一致のパラメーター クエリを作成する、パラメーター クエリの設定方法
クロス集計クエリを元にパラメーター クエリを実行「~認識できません」エラー
特定のレコードのみ最初に並べ、他のレコードは普通に並べ替えする
基本的な抽出条件の書き方について
ワイルドカードや数式を使用した高度な抽出
クエリで連番、グループ連番をふる
アクション クエリのメッセージを非表示にするには
twitter hatena line pocket