Access更新クエリの使い方をお探しですね。

広告

Accessで表記ゆれや古いデータをまとめて直したい!更新クエリで一括置換する方法

Accessで顧客名や商品名、電話番号、部署名などを管理していると、「同じ表記にまとめたい」「古い情報を新しい内容に一気に変えたい」という場面がよくありますよね。

数件なら手作業でもなんとかなりますが、数百件、数千件となると時間がかかるし、入力ミスも起こりやすくなります。

そんなときに役立つのが、Accessの「更新クエリ」です。

この記事では、更新クエリを使ってデータを一括置換する基本の手順から、Replace関数を使った文字列の置き換え、条件に合わせた更新、そして実行前に必ずチェックすべき注意点まで、初心者の方にもわかりやすく解説していきます。

更新クエリって何?データをまとめて書き換えられる便利な機能

Accessの「更新クエリ」とは、テーブルに保存されているデータを、指定した条件や計算式に基づいてまとめて書き換えるためのクエリです。

普通の選択クエリは、条件に合うデータを探して画面に表示するだけですが、更新クエリは実際にテーブルの中身を変更します。

なので、商品価格を一律で変える、顧客の分類をまとめて修正する、会社名の表記ゆれを統一するといった作業にぴったりなんです。

Excelの「検索と置換」に似ていますが、Accessなら抽出条件や関数を組み合わせられるので、もっと細かいルールで一括更新できるのが特徴です。

たとえば、顧客テーブルに「(株)田中商事」「(株)山本製作所」といったデータがあって、これをすべて「株式会社田中商事」「株式会社山本製作所」に統一したいとします。

こんなとき、1件ずつ修正する必要はありません。

更新クエリでReplace関数を使えば、「(株)」という文字だけを「株式会社」に置き換えられます。

ほかにも、電話番号のハイフンを削除したり、全角スペースを取り除いたり、旧部署名を新部署名に変更したり。

データの整理やインポート後のクリーニング作業にも使えます。

Accessは大量のデータをテーブルで管理するソフトなので、こうした一括置換の方法を知っておくと、日々の修正作業がぐっとラクになりますよ。

ただし、更新クエリは便利な反面、実行するとテーブルの値が直接書き換わってしまいます。

Excelみたいに気軽に「元に戻す」ボタンで戻せるわけではないので、使い方を間違えると必要なデータまで一気に変更してしまう危険があります。

特に、抽出条件を設定し忘れると、本当は一部だけ更新するつもりが、テーブル全体を更新してしまうことも。

更新クエリは「大量データを安全に修正できる機能」であると同時に、「実行前の確認が絶対に必要な機能」でもあると覚えておきましょう。

更新クエリの基本的な作り方と実行の流れ

Accessで更新クエリを作る基本的な手順は、まず選択クエリを作ってから、クエリの種類を「更新」に切り替える流れです。

最初に「作成」タブから「クエリデザイン」を選んで、更新したいテーブルを追加します。

次に、画面上部のリボンにある「更新」ボタンをクリックすると、デザイングリッドに「レコードの更新」という行が現れます。

ここに、更新後に入れたい値や計算式を入力して、「抽出条件」の欄でどのレコードを対象にするかを指定します。

たとえば、部署名フィールドで「営業一課」を「営業部」に変えたいなら、部署名の「レコードの更新」に「”営業部”」、抽出条件に「”営業一課”」と入力すればOKです。

更新クエリを実行する前には、必ず対象になるレコードを確認することが大切です。

デザインビューで条件を設定したら、すぐに実行ボタンを押さずに、いったんデータシートビューに切り替えて、どのレコードが更新されるのかをチェックします。

この時点では更新後の値ではなく、条件に一致したレコードが表示されます。

件数や内容が想定どおりなら、デザインビューに戻って実行しましょう。

実行するときには「○件のレコードを更新します」といった確認メッセージが出るので、件数が変に多くないかを見てから確定してください。

基本的な流れはこんな感じです。

– クエリデザインで更新したいテーブルを追加する
– クエリの種類を「更新」に変える
– 「レコードの更新」に新しい値や式を入力する
– 「抽出条件」で更新する対象を絞り込む
– データシートビューで対象を確認してから実行する

この手順を守れば、単純な値の置き換えだけじゃなく、日付や数値の一括更新にも応用できます。

たとえば、価格フィールドを10%値上げしたいときは、「レコードの更新」に「[価格]*1.1」といった式を指定できます。

ステータスが「未処理」のレコードだけを「処理中」に変える、期限切れのデータだけにフラグを立てる、といった使い方も可能です。

更新クエリは、テーブルを直接いじるより条件がはっきりしやすいし、同じ処理を何度も使い回せるので、定期的なデータメンテナンスにもぴったりですよ。

Replace関数やIIf関数を使った置き換えの実例

更新クエリで文字列の一部だけを置き換えたいときは、Replace関数を使います。

Replace関数は、指定した文字列の中から特定の文字を探して、別の文字に置き換える関数です。

基本の形は「Replace([フィールド名],”探す文字”,”置き換える文字”)」です。

たとえば、電話番号フィールドからハイフンを削除したいなら、「Replace([電話番号],”-“,””)」と指定します。

3つ目の部分を空文字にすることで、該当する文字を削除できます。

会社名フィールドの「(株)」を「株式会社」に統一したいときは、「Replace([会社名],”(株)”,”株式会社”)」と入力すればOKです。

Replace関数を使うと、外部システムやExcel、CSVから取り込んだデータの整形がすごくラクになります。

インポートした住所に余計な全角スペースが入っている場合は、「Replace([住所],” ”,””)」で全角スペースを削除できます。

商品コードに不要な記号が混ざっている場合も、同じ考え方で置き換えられます。

ただし、Replace関数は指定した文字が含まれるすべての箇所を置き換えるので、意図しない部分まで変更されないか確認が必要です。

たとえば「A」を「Z」に置換する場合、商品名や備考欄などに含まれるすべての「A」が対象になってしまう可能性があります。

抽出条件で対象を絞るか、置換前に選択クエリで結果を確認するのが安全です。

条件によって置き換える内容を変えたいときは、IIf関数を組み合わせます。

IIf関数は「条件が合っていればこの値、違えばこの値」という分岐処理をするAccessの関数です。

たとえば、会員区分が「旧A」なら「A会員」、「旧B」なら「B会員」に変更して、それ以外は元の値をそのまま残したい場合、IIf関数を入れ子にして条件を表現できます。

複雑な式になるほど入力ミスが起こりやすいので、最初から長い式を書かずに、まずは選択クエリで変換結果を表示して確認してから、更新クエリに切り替える方法が安心です。

別のテーブルの値を参照して更新することもできます。

たとえば「商品マスタ」テーブルの単価を、「新価格表」テーブルの新単価で更新したいとき、両方のテーブルをクエリデザインに追加して、商品IDなど共通するキーで結合します。

そのうえで、商品マスタの単価フィールドの「レコードの更新」に「[新価格表]![新単価]」のように指定すれば、対応する商品だけをまとめて更新できます。

この方法は、価格改定や担当者変更、部門コード変更など、マスタ更新の業務でとても役立ちます。

ただし、結合条件が間違っていると違う商品の単価を反映してしまう可能性があるので、更新前に選択クエリとして結合結果を確認しておくと安心ですよ。

更新クエリを安全に使うための注意点

更新クエリで一番気をつけないといけないのは、実行後の取り消しが難しいことです。

更新クエリはテーブルのデータを直接変更する「アクションクエリ」の一種で、実行した瞬間に対象レコードの値が書き換わってしまいます。

だから、実行前には必ずバックアップを取っておきましょう。

テーブル単位でコピーを作っておいてもいいですし、データベースファイル全体を別名で保存しておく方法もあります。

特に本番データを扱うときは、「更新前の状態に戻せるか」を確認してから作業することが本当に大事です。

更新クエリを安全に使うための基本ルールは、次の3つです。

– 実行前にテーブルまたはデータベース全体をバックアップする
– データシートビューや選択クエリで対象レコードを確認する
– いきなり全件更新せず、少ないデータでテストしてから本番実行する

よくある失敗として、抽出条件を入れ忘れて全レコードを更新してしまうケースがあります。

たとえば「退職者だけステータスを変える」つもりが、条件を指定しなかったせいで全社員のステータスが変わってしまった、なんて事故です。

また、Null値(値が入っていない状態)や空文字が混ざっているフィールドでは、想定した条件に一致しない場合があります。

AccessではNullは「値が存在しない状態」を表すので、空文字「””」とは別物です。

必要に応じて「Is Null」やNz関数を使って、データの状態に合わせた条件を設定しましょう。

SQLビューで更新クエリを確認する場合にも注意が必要です。

Accessの更新クエリは、SQLでは「UPDATE テーブル名 SET フィールド名 = 値 WHERE 条件」のような形で表されます。

SQLを直接編集できると柔軟な処理ができますが、WHERE句(条件部分)を省略すると全件更新になってしまいます。

また、フォームの入力値を使って更新クエリを実行する場合は、入力内容のチェックも大切です。

社内用のAccessであっても、意図しない文字列や空欄が入ると誤更新の原因になります。

入力フォーム側で必須チェックをしたり、選択式のコンボボックスを使ったりして、運用面でもミスを防ぐ設計にしておくと安心です。

更新クエリは、正しく使えばデータ修正や表記統一を一瞬で終わらせられる強力な機能です。

Replace関数で文字列を置き換えたり、IIf関数で条件分岐したり、別テーブルを参照してマスタ更新したりと、覚えれば手作業では難しい一括処理を効率化できます。

ただし、便利さとリスクは表裏一体。

バックアップ、事前確認、少量テストを習慣にして、更新対象と更新内容をはっきりさせてから実行することが、更新クエリを安全に使いこなす最大のポイントです。

広告