Accessの不一致クエリウィザードの使い方をお探しですね。

広告

Accessで2つのテーブルの差分を簡単に見つける方法

Accessでデータを管理していると、「今月のデータと先月のデータを比べて、違う部分だけ取り出したい」という場面がよくあります。

ExcelのVLOOKUP関数で一つひとつ目で確認するのは大変ですし、データが多くなるとミスも増えますし、パソコンも重くなってしまいます。

そこで便利なのが、Accessの「不一致クエリウィザード」という機能です。

この記事では、2つのテーブルを比べて差分だけをパッと取り出す方法を、基本から実際に使うときの注意点まで分かりやすく説明します。

読めばすぐに、面倒な作業を自動化して時間を節約できるようになりますよ。

不一致クエリウィザードって何?基本の考え方

Accessの不一致クエリウィザードは、2つのテーブルを比べて「片方にはあるけど、もう片方にはないデータ」を自動で見つけてくれる便利な機能です。

たとえば、「今月の売上データ」と「先月の売上データ」を比べて、今月新しく増えたお客さんだけを見つけたいときなどに使えます。

大量のデータを自分で見比べる必要がなくなるので、作業がぐっと楽になります。

この機能を使うときに大事なのが、「主キー」や「比較の基準になる項目」があることです。

2つのテーブルを比べるとき、Accessは「どのデータとどのデータが同じものなのか」を判断しなければなりません。

そのため、お客様番号や売上番号など、絶対に重複しない固有の番号を両方のテーブルに用意しておく必要があります。

この基準がないと、正しく比較できなくなってしまいます。

ちなみに、不一致クエリは内部で「外部結合」と「Is Null(空欄かどうか)」という仕組みを使って作られています。

基準になるテーブルの全データを並べて、比較先のテーブルに同じものがない場合、その部分は空欄になります。

ウィザードはこの空欄部分を「差分」として取り出しているんです。

この仕組みを少し覚えておくと、後で困ったときに役立ちますよ。

不一致クエリウィザードの使い方(基本の手順)

それでは、実際に不一致クエリウィザードを使って、2つのテーブルの差分を取り出す手順を説明します。

始める前に、比べたい2つのテーブル(たとえば「最新のデータ」と「過去のデータ」)がAccessに入っていることを確認してください。

準備ができたら、画面上の「作成」タブを開いて、「クエリウィザード」ボタンをクリックします。

開いた画面で「不一致クエリウィザード」を選んで「OK」を押します。

最初の画面では「結果として表示したいテーブル(ベースにするテーブル)」を選びます。

次の画面では「比較に使うもう一方のテーブル」を選びます。

ここで注意したいのは、どちらを先に選ぶかで「Aにあって Bにないもの」を出すか、「Bにあって Aにないもの」を出すかが変わることです。

目的に合わせて順番を間違えないようにしましょう。

次に、2つのテーブルをつなぐ(比較の基準になる)項目を選びます。

両方のテーブルに共通してあるお客様番号などの項目をクリックして、真ん中の関連付けボタンを押します。

最後に、結果として表示したい項目を選んで、クエリに分かりやすい名前をつけて「完了」を押せば設定は終わりです。

作成されたクエリを開くと、指定した条件に合った差分データだけがきれいに表示されます。

実務で使える応用ワザ:項目の中身が変わったデータを見つける

不一致クエリウィザードは「片方のテーブルにデータ自体がない場合」を見つけるのは得意ですが、実際の仕事では「両方のテーブルにデータはあるけど、特定の項目の値だけが変わっている」というパターンも見つけたいことがあります。

たとえば、同じお客様番号なのに、今月のデータでは住所や金額が先月と違っている場合です。

こういう項目ごとの変更を見つけるには、不一致クエリウィザードではなく、普通の「選択クエリ」のデザイン画面を使います。

まず、クエリのデザイン画面を開いて、比べたい2つのテーブルを追加します。

そして、共通の主キー(お客様番号など)をドラッグして線でつなぎます。

次に、比べたい項目を下のデザイングリッドに並べます。

このとき、同じ名前の項目が並ぶと見づらくなるので、項目名の前に「今月の価格:」や「先月の価格:」のように分かりやすい名前をつけておくと良いでしょう。

これで、同じデータの違う値を左右に並べて比べられるようになります。

さらに、データが多くて目で見るのが大変な場合は、「IIf関数」を使って自動で判定させることもできます。

新しい列に「判定: IIf([今月テーブル]![価格]=[先月テーブル]![価格],”変更なし”,”変更あり”)」という式を入れます。

すると、2つの項目の値が同じかどうかを、Accessが自動で判断して文字で表示してくれます。

これを使って抽出条件に「”変更あり”」と入れておけば、値が変わったデータだけを簡単に取り出すこともできます。

よくある失敗:空欄(Null)データの扱いと条件設定のコツ

不一致クエリを使っていると、思わぬ動きに困ることがあります。

その代表的なものが「本当は取り出したくない空欄(Null)のデータまで差分として出てきてしまう」という問題です。

先ほど説明したように、不一致クエリは自動で「Is Null」という条件が組み込まれます。

これは「比較先のテーブルにないものを探す」という意味なのですが、もし元のテーブルの項目に最初から空欄が入っていた場合、それも一緒に拾ってしまうことがあるんです。

この問題を解決するには、条件設定を少し工夫する必要があります。

効果的なやり方の一つは、クエリを2段階に分けることです。

まず、最初の選択クエリで元のテーブルから「空欄を含まないデータ(条件に Is Not Null を指定)」だけを絞り込みます。

そして、そのきれいになったクエリをベースにして、改めて不一致クエリを作るんです。

これで、純粋に「テーブル間のデータの差」だけを正確に取り出せるようになります。

また、文字の比較で「完全に一致しないと差分として出てこない」というケースもよくあります。

たとえば、「001」と「001A」を違うものとしてきちんと分けたい、または逆に同じ系統として差分から外したい場合などです。

こういうときは、クエリの条件に「Like」という演算子とワイルドカード(*)を組み合わせた複雑な式を手動で設定するか、事前に更新クエリを使ってデータの表記のばらつきを統一しておく準備が大切になります。

Accessのクエリはとても強力ですが、正確な差分を取り出すには、普段から元のデータを整理整頓しておくことが重要です。

広告