

アクセスの初心者です。今、仕事でデーターの差分の抽出の仕方についてわからず困っています。
2つのテーブルがあります。
テーブルには100以上の項目と500件ほどのレコードがそれぞれ入っています。
この2つのテーブルを比較して差分を出したいのですが方法が思いつきません。
出したいものは、テーブル1とテーブル2の共通のIDを比較し、
テーブル1からテーブル2で変更、追加されたものを出したいのです。
レコードの追加だけなら差分クエリを利用してやれると思うのですが、
100以上の全フィールドをそれぞれ比較するとなるとどうすれば良いのかわからないのです。
2つのテーブルの項目は基本一緒ですが、追加されたり、変更されたりします。
もともとはエクセルのデータで毎週やりとりされるもので、
エクセル上で手作業で、
シート1とシート2でマッチングを行い、シート3に追加、変更されたものを書き出しています。
100列ほどの項目も追加や変更されるので、前回データと今回データで
(1)列の比較をして2つの列数を揃えてから、
(2)KEYになる列でVLOOKUP関数を使い、追加されたデータをよけて、
(3)前回データと今回データが一緒のデーター並べ替え、揃えて、シートを比較して変更、追加を探す
という作業を行っています。
データー数が多く、エクセルでは限界がでてきました。
また、アクセスを使えば簡単にできる。と言われましたが、
まだまだ初心者のため、この大量のデータをどう処理すればいいのかわかりません。
質問は、
(1)アクセスで100項目以上あるテーブルのそれぞれの差分をだすことができるのでしょうか?
(2)その方法はどうすればよいのでしょうか?
また、アクセス初心者でも勉強すればすぐにできるのでしょうか?
と、いうことです。
会社に迷惑をかけないためにも、可能、不可能を判断したいです。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
まず、テーブル1とテーブル2の全フィールドが合致するものを抽出するクエリを作成します。
デザインビューで二つのテーブルの対応するフィールドを全て結合線で結べば良いですね。クエリで出力するフィールドはテーブル2のフィールドのみとします。(テーブル1のみにしても、この場合は結果は同じだと思いますが)。これをクエリ1とします。
次にテーブル2と、クエリ1のIDについて不一致クエリを作成すれば、テーブル2の内で、テーブル1に無いものだけが抽出できると思いますがいかがでしょうか。(もし、テーブル1の内で、テーブル2に無いものを抽出したいのなら、適宜読み替えて同様に行って下さい)
ご参考まで。
mitarashiさん。回答ありがとうございます。
やはり、フィールドをひとつずつ結合する方法が確実なのですね。
100以上の結合作業をすることに抵抗がありましたが、
がんばります。
ありがとうございました。
No.1
- 回答日時:
アクセスはわかりませんがエクセルでも作業列を作って対応することで十分に早く処理できると思いますね。
例えばシート1に1行目に項目名が有り2行目から下方にデータが入力されているとします。
そこでシート2とシート1を比べてシート2で変更などが有った場合にその変更のあった行をシート3に表示させるとします。
シート2のA1セルにはシート1でも項目名が有り重要なデータ項目名であるIDなどと入力します。
シート2の2行目には項目名を入力します。シート1と同じ項目名でも列に入力する位置は変化しても構いません。
シート2では110列のDF列まで利用されているとします。
そこでDG3セルには次の式を入力してHL3セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。
=IF(COUNTA($A3:$DF3)=0,"",IF(COUNTIF(INDEX(Sheet1!$A:$DF,1,MATCH($A$1,Sheet1!$1:$1,0)):INDEX(Sheet1!$A:$DF,10000,MATCH($A$1,Sheet1!$1:$1,0)),INDEX($A:$DF,ROW(A3),MATCH($A$1,$2:$2,0)))=0,A3,IF(COUNTIF(Sheet1!$1:$1,A$2)=0,A3,IF(A3=INDEX(Sheet1!$A:$DF,MATCH(INDEX($A:$DF,ROW(A3),MATCH($A$1,$2:$2,0)),INDEX(Sheet1!$A:$DF,1,MATCH($A$1,Sheet1!$1:$1,0)):INDEX(Sheet1!$A:$DF,10000,MATCH($A$1,Sheet1!$1:$1,0)),0),MATCH(A$2,Sheet1!$1:$1,0)),"",A3))))
これでシート1のデータと違っている部分が表示されます。
そこでHM3セルには次の式を入力して下方にオートフィルドラッグコピーします。
=IF(COUNTIF(DG3:HL3,"")>=110,"",MAX(HM$2:HM2)+1)
このデータをもとにシート3にはシート1とシート2を比べてデータの違ったシート2の行を表示させることにします。
シート3のA1セルには次の式を入力して右横方向にオートフィルドラッグコピーします。
=IF(Sheet2!A2="","",Sheet2!A2)
シート3のA2セルには次の式を入力して右横方向にオートフィルドラッグコピーしたのちに下方向にもオートフィルドラッグコピーします。
=IF(OR(A1="",ROW(A1)>MAX(Sheet2!$HM:$HM)),"",INDEX(Sheet2!$A:$DF,MATCH(ROW(A1),Sheet2!$HM:$HM,0),COLUMN(A1)))
作業列を使って対応していますのでデータの量が多くなってもそれほど計算速度が遅くなるといったことはありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Access(アクセス) ACSESS初心者です マンション管理をACCESSで出来ないかとチャレンジしています。 リレーショ 3 2022/10/08 11:45
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(Microsoft Office) excel テーブル 4 2023/03/18 16:11
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
このQ&Aを見た人はこんなQ&Aも見ています
-
限定しりとり
文字数6文字以上の単語でしりとりしましょう
-
ACCESS 複数テーブル・複数フィールドを参照する不一致クエリ
Access(アクセス)
-
ACCESSのSQL
Access(アクセス)
-
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
-
4
Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出
Access(アクセス)
-
5
【access】複数のフィールドの不一致クエリ
Visual Basic(VBA)
-
6
Accessでフィールドを比較したいのですが
その他(データベース)
-
7
ACCESS テーブルを見比べて、一致しないレコードを追加したいです
Access(アクセス)
-
8
ACCESS テーブルを見比べて、一致したレコードを抽出したいです
Access(アクセス)
-
9
アクセス 壊れた? 「ファイルが見つかりません」
Access(アクセス)
-
10
Accessでデータを更新したらその日付を自動入力したい
Access(アクセス)
-
11
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
12
ACCESSでデータ変更箇所が分かるようにする方法
Access(アクセス)
-
13
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
14
Accessの桁区切りについて教えてください。
Access(アクセス)
-
15
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
16
Vbaでアクセスからエクセルにリンクテーブルする
Access(アクセス)
-
17
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
18
Access クエリ実行が急に非常に遅くなりました。
Access(アクセス)
-
19
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
20
Accessにインポートしようとするとエラーに
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レポート印刷するときに...
-
Accessでレポートを印刷する時...
-
レポートの印刷を一括ではなく...
-
CSVファイルの「0落ち」にVBA
-
Accessのクエリで、replace関数...
-
Microsoft 365 Basic サブスク...
-
access2021 強制終了してしまう
-
Access VBA [リモートサーバー...
-
Accessのスプレッドシートエク...
-
Excelを開く時と閉じる時に一度...
-
access2021 VBA メソッドまたは...
-
【Access】Dcount関数の複数条...
-
ACCESS VBA でのエラー解決の根...
-
Accessのデータ型の日付/時刻型...
-
Access 複数条件検索の設定が上...
-
Access2016でフォーム内にExcel...
-
AccessからExcelを開いて閉じて...
-
accessでlaccdbファイルが削除...
-
Accessで独自メニューバーまた...
-
Accessデータベースを開くと同...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レポート印刷するときに...
-
Accessのクエリで、replace関数...
-
access2021 強制終了してしまう
-
ACCESS VBA でのエラー解決の根...
-
Accessのスプレッドシートエク...
-
access2021 VBA メソッドまたは...
-
Access VBA [リモートサーバー...
-
Accessレポートのチェックボッ...
-
【Access】Dcount関数の複数条...
-
Accessで選択クエリを作成中で...
-
1月2日より、いまだアクセスで...
-
Access Error3061 パラメータが...
-
Accessデータベースの保存形式...
-
Access 複数条件検索の設定が上...
-
実行時エラー3131 FROM 句の構...
-
Accessデータベースを開くと同...
-
Accessのクエリの結果を、既存...
-
Access VBA を利用して、フォル...
-
Accessフォームにマクロを組み...
-
アクセス レポートを開いたとき...
おすすめ情報