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

広告

Accessで大量のデータを一括変換・置換する方法を徹底解説

Accessで大量のデータを管理していると、「このデータ、まとめて変換できたらいいのに…」と思うことはありませんか? 例えば、商品名に含まれる「(株)」を「株式会社」に統一したり、電話番号のハイフンを削除したり。

1件ずつ手作業で直していくのは、時間がかかるだけでなく、入力ミスや見落としのリスクもあって大変ですよね。

そんな時に活躍するのが、Accessの「更新クエリ」という機能です。

この記事では、更新クエリを使って特定の条件に合うデータだけを一括で変換・置換する方法を、実務で使える具体例とともにわかりやすく解説していきます。

更新クエリって何? データを一括変換できる便利な機能です

更新クエリは、Accessのテーブルに保存されているデータを、指定した条件に基づいて一括で書き換えることができる機能です。

普通のクエリ(選択クエリ)が「条件に合うデータを探して表示する」だけなのに対して、更新クエリは「実際にデータそのものを書き換える」という点が大きく違います。

例えば、こんな場面で威力を発揮します:

– 全商品の価格を10%値上げしたい
– 顧客データの「(株)」を「株式会社」に統一したい
– 電話番号からハイフンやスペースを削除したい
– 旧部署名を新部署名に一括変更したい

Excelの「検索と置換」機能に似ていますが、Accessの更新クエリはもっと高機能。

複雑な条件を設定したり、計算式を使った変換ができたりと、できることの幅が格段に広いんです。

更新クエリの基本的な作り方

更新クエリを作成する手順は以下の通りです:

1. **「作成」タブから「クエリデザイン」をクリック**
– 更新したいテーブルを選んで追加します

2. **クエリの種類を「更新」に変更**
– リボンの「クエリの種類」グループにある「更新」ボタンをクリック
– すると、デザイングリッドに「レコードの更新」という行が現れます

3. **更新内容を設定**
– 「レコードの更新」欄に、新しい値や計算式を入力
– 「抽出条件」欄に、どのレコードを更新するかの条件を指定

4. **実行前に確認、そして実行**
– データシートビューで対象レコードを確認
– 問題なければ「実行」ボタンをクリック

たったこれだけで、何百件、何千件のデータでも一瞬で書き換えることができます。

手作業に比べて圧倒的に速く、正確なのが更新クエリの魅力です。

文字列を置き換えたい! Replace関数の使い方

実務で最もよく使うのが、「データの中の特定の文字だけを別の文字に置き換える」という処理です。

フィールド全体を書き換えるのではなく、一部の文字だけを変えたい時に使うのが**Replace関数**です。

Replace関数の基本

Replace関数の書き方はシンプルです:

“`

Replace([フィールド名], "探す文字", "置き換える文字")

“`

**具体例1: ハイフンを削除する**

電話番号フィールドから「-」を削除したい場合:

“`

Replace([電話番号], "-", "")

“`

置き換える文字を空(“”)にすることで、実質的に削除できます。

**具体例2: 表記を統一する**

会社名フィールドの「(株)」を「株式会社」に変換する場合:

“`

Replace([会社名], "(株)", "株式会社")

“`

**具体例3: 全角スペースを削除する**

住所フィールドから余計なスペースを削除:

“`

Replace([住所], " ", "")

“`

実際の設定手順

1. 更新クエリのデザインビューで、変換したいフィールドを選択
2. 「レコードの更新」欄に上記のようなReplace関数を記述
3. 必要に応じて「抽出条件」欄に条件を設定(例: 会社名に「(株)」が含まれるレコードだけ)
4. データシートビューで確認後、実行

インポートした外部データの整形や、表記ゆれの修正など、Replace関数を使えば面倒なデータクリーニング作業が一瞬で終わります。

条件によって違う変換をしたい! IIf関数との組み合わせ技

「Aの場合はXに変換、Bの場合はYに変換」のように、条件によって異なる処理をしたい場合もありますよね。

そんな時は**IIf関数**とReplace関数を組み合わせます。

IIf関数の基本

IIf関数は「もし〇〇なら△△、そうでなければ××」という条件分岐ができる関数です:

“`

IIf(条件, 条件が合っている時の値, 合っていない時の値)

“`

実践例: 複数条件での置換

型番フィールドの末尾が「A」なら「Z」に、「B」なら「X」に置き換え、それ以外はそのまま残したい場合:

“`

IIf(Right([型番],1)="A", Replace([型番],"A","Z"),
IIf(Right([型番],1)="B", Replace([型番],"B","X"), [型番]))

“`

少し複雑に見えますが、落ち着いて読み解いてみましょう:

1. `Right([型番],1)=”A”` → 型番の右端1文字が「A」かチェック
2. 条件が合えば `Replace([型番],”A”,”Z”)` → Aをzに置換
3. 合わなければ次のIIf関数で「B」かチェック
4. どちらでもなければ `[型番]` → 元のまま

注意点とコツ

複雑な式を書く時は、カッコの対応がわかりにくくなりがちです。

そんな時は:

– **式ビルダーを活用する**: 「レコードの更新」欄の右側にある「…」ボタンをクリック
– **段階的に作る**: まず単純な式で動作確認してから、徐々に複雑にする
– **メモ帳などで下書き**: 複雑な式は一度テキストエディタで整理してから貼り付ける

別のテーブルのデータを参照して更新する方法

「新しい価格表を作ったから、商品マスタの単価を一括で更新したい」といった場合、別のテーブルのデータを参照しながら更新することもできます。

設定方法

1. **クエリデザインに両方のテーブルを追加**
– 更新したいテーブル(例: 商品マスタ)
– 参照するテーブル(例: 新価格表)

2. **共通のキーで結合**
– 商品IDなど、両方のテーブルに共通するフィールドで線を引く

3. **更新内容を設定**
– 「レコードの更新」欄に: `[新価格表]![新単価]`
– これで、新価格表の「新単価」フィールドの値が商品マスタに反映されます

具体例

**商品マスタテーブル**
– 商品ID
– 商品名
– 単価 ← これを更新したい

**新価格表テーブル**
– 商品ID
– 新単価

この場合、商品IDで結合し、商品マスタの「単価」フィールドの「レコードの更新」欄に:

“`

[新価格表]![新単価]

“`

と入力すれば、マスタデータを一括更新できます。

更新クエリを使う時の重要な注意点

更新クエリは便利ですが、**一度実行すると元に戻せない**という大きな特徴があります。

Excelの「Ctrl+Z(元に戻す)」のような機能がないので、慎重に扱う必要があります。

安全に使うための3つの鉄則

**1. 必ずバックアップを取る**

更新前に、対象テーブルをコピーしておきましょう:

– ナビゲーションウィンドウでテーブルを右クリック
– 「コピー」→「貼り付け」
– 名前を「商品マスタ_バックアップ_20240115」のように日付入りで保存

これだけで、万が一失敗しても元に戻せます。

**2. 実行前に必ずプレビュー確認**

いきなり「実行」ボタンを押さず:

– リボンの「表示」から「データシートビュー」に切り替え
– どのレコードが更新対象になっているか確認
– 件数や内容が想定通りかチェック

問題なければデザインビューに戻って「実行」します。

**3. 少数データでテストする**

可能であれば:

– まず「抽出条件」で対象を数件に絞って実行
– 結果を確認してから全体に適用

特に複雑な式を使う場合は、このステップが重要です。

よくある失敗例と対策

**失敗例1: 抽出条件を忘れて全レコード更新**
→ 対策: 更新前に必ず抽出条件を確認。

データシートビューで件数チェック

**失敗例2: Replace関数の引数を間違える**
→ 対策: 式ビルダーを使う。

テストデータで動作確認

**失敗例3: 参照テーブルの結合条件が間違っている**
→ 対策: まず選択クエリで結合結果を確認してから更新クエリに変換

まとめ: 更新クエリで作業効率を劇的にアップ

更新クエリを使いこなせば、これまで何時間もかかっていたデータ修正作業が数秒で終わります。

最初は少し難しく感じるかもしれませんが、基本の流れさえ覚えてしまえば、様々な場面で応用できる強力な武器になります。

**この記事のポイント**

– 更新クエリは条件に合うデータを一括変換できる便利機能
– Replace関数で文字列の一部だけを置換できる
– IIf関数と組み合わせれば複数条件での変換も可能
– 別テーブルを参照した更新もできる
– 実行前のバックアップとプレビュー確認が絶対必須

まずは簡単な置換から始めて、徐々に複雑な処理にチャレンジしてみてください。

更新クエリをマスターすれば、Accessでのデータ管理がグッと楽になりますよ!

広告