アクセスの初心者です。今、仕事でデーターの差分の抽出の仕方についてわからず困っています。
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ACCESS 複数テーブル・複数フィールドを参照する不一致クエリ
Access(アクセス)
-
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
【access】複数のフィールドの不一致クエリ
Visual Basic(VBA)
-
-
4
【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?
Access(アクセス)
-
5
ACCESSのSQL
Access(アクセス)
-
6
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
実行時エラー3131 FROM 句の構文エラーです について
Access(アクセス)
-
9
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
10
Accessで差分取得する方法は? LEFT JOIN エラー
PowerPoint(パワーポイント)
-
11
Accessでテーブルからテーブルにデータをコピーしたい
その他(データベース)
-
12
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
13
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
14
Accessのクエリで、replace関数を使い、データの中にある”をブランクに置き換えたいのですが
Access(アクセス)
-
15
Accessクエリーで両方のテーブルの全てのデータを表示することは可能ですか?
Access(アクセス)
-
16
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
17
ACCESSでデータ変更箇所が分かるようにする方法
Access(アクセス)
-
18
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
19
Excelのデータ(数字)をテキスト型としてaccessにインポートする方法
Excel(エクセル)
-
20
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access レポート印刷するときに...
-
Accessのクエリで、replace関数...
-
Access runtimeでのオプション...
-
ACCESS VBA でのエラー解決の根...
-
【Access】Dcount関数の複数条...
-
Accessで独自メニューバーまた...
-
Microsoft365にAccessってあり...
-
Access IF文でテーブルに存在し...
-
Accessレポートのチェックボッ...
-
Accessというソフトで、生年月...
-
access2021 強制終了してしまう
-
アクセスの更新クエリでカレン...
-
Accessでフォームに自動入力し...
-
Access Error3061 パラメータが...
-
Access VBA を利用して、フォル...
-
Accessで作ったデータベースをw...
-
Access で半角スペースと全角ス...
-
Vba Userformを前面に出すについて
-
教えてください! アクセスの書...
-
実行時エラー3131 FROM 句の構...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access レポート印刷するときに...
-
ACCESS VBA でのエラー解決の根...
-
実行時エラー3131 FROM 句の構...
-
Microsoft365にAccessってあり...
-
access2021 メッセージボックス...
-
Accessのクエリで、replace関数...
-
Access VBA を利用して、フォル...
-
エクセルのデータをアクセスに...
-
Accessのスプレッドシートエク...
-
Access VBA [リモートサーバー...
-
Accessのフォーム上のテキスト...
-
accessデータを指定したExcel、...
-
access2019の起動が遅い
-
Accessのリンクテーブルのパス...
-
アクセスクエリの計算
-
Vba Userformを前面に出すについて
-
Access Error3061 パラメータが...
-
【Access】Dcount関数の複数条...
-
【世界はデータで出来ている】...
-
Accessレポートのチェックボッ...
おすすめ情報