• ベストアンサー

ふたつのエクセルファイルを照合する方法

画像のように名前や生年月日を入力して回答を入力していくのですが、入力ミスを防ぐため、ふたりで別々にエクセルファイルに同じデータを入力して間違いがないかチェックしたいのです。よい方法を教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

「VBScript」でプログラムを組みましたので、「Windows」限定です。 以下のプログラムをメモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存してください。 調べたいエクセルのファイル2つを開いた状態で、先ほどの「~.vbs」(例えば「Compare.vbs」)をダブルクリック(「シングルクリック」→「Enter」の方が確実)すると、両方のファイルの違う箇所を黄色く塗りつぶします。 調べたいエクセルのファイル以外のエクセルのファイルを開いていてはいけません。 開くファイルは、調べたい2つだけです。 Option Explicit Dim i, j, v, w, x, y, z Set v = GetObject(,"Excel.Application") If v.Workbooks.Count >= 1 Then Set w = v.Workbooks.Item(1) Set x = w.Worksheets(1) End If If v.Workbooks.Count >= 2 Then Set y = v.Workbooks.Item(2) Set z = y.Worksheets(1) End If For i = 1 to x.Range("A1").End(-4121).Row For j = 1 to x.Range("A1").End(-4161).Column If x.Cells(i, j).Value <> z.Cells(i, j).Value Then x.Cells(i, j).Interior.ColorIndex = 6 z.Cells(i, j).Interior.ColorIndex = 6 End If Next Next Set z = Nothing Set y = Nothing Set x = Nothing Set w = Nothing Set v = Nothing 簡単な説明です。 Set v = GetObject(,"Excel.Application") エクセルを扱えるようにしています(通常は「CreateObject("Excel.Application)」とするのですが、今回は開いているファイルを取得するので、「GetObject」でなければなりません)。 If v.Workbooks.Count >= 1 Then Set w = v.Workbooks.Item(1) Set x = w.Worksheets(1) End If 最初に開いた方のファイルを「w」、その左端のシートを「x」に設定しています。 If v.Workbooks.Count >= 2 Then Set y = v.Workbooks.Item(2) Set z = y.Worksheets(1) End If 2番目に開いたファイルを「y」、その左端のシートを「z」に設定しています。 For i = 1 to x.Range("A1").End(-4121).Row 「A」列の最後の行まで処理(「A」列に途中空白セルがあってはいけません)。 For j = 1 to x.Range("A1").End(-4161).Column 「1」行目の最後の列まで処理(「1」行目の途中に空白セルがあってはいけません)。 If x.Cells(i, j).Value <> z.Cells(i, j).Value Then もし、「x」シートの「i」行「j」列と「z」シートの同じ位置のセルが一致しなかったら、 x.Cells(i, j).Interior.ColorIndex = 6 z.Cells(i, j).Interior.ColorIndex = 6 それぞれの背景を「6」(=黄色)に設定しています。 あとは、終了処理です。

その他の回答 (3)

  • mdmp2
  • ベストアンサー率55% (438/787)
回答No.4

とても簡単な方法です。 ・チェック用のエクセルファイルを作ります。様式は入力用の二つのファイルと同じようにしておいたほうが良いでしょう。 ・Aさんが入力するファイル、Bさんが入力するファイル、チェック用ファイルを開きます。 ・チェック用のファイルの、チェックすべきセルの一つにつぎの通り式を書き込ます。 =IF([Aさんの入力用ファイルの同じ場所のセルを参照]=[Aさんの入力用ファイルの同じ場所のセルを参照],"","エラー") ・数式を書き込んだセルの上下左右に必要なだけオートフィルします。 以上で、Aさんが入力したファイルと、Bさんが入力したファイルの入力に違いがあった場合、チェック用ファイルの同じセルに「エラー」と表示され、入力の違いがないセルには何も表示されません。 Aさんが入力するファイル、Bさんが入力するファイルを開いてなくてもチェック用ファイルを開くときリンクを更新すれば、入力の違いの有無をチェックできると思います。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 条件付き書式を使用してデータが異なっている箇所を赤く塗りつぶすというのは如何でしょうか。  今仮に、二人が入力するファイルのファイル名をそれぞれ Book1.xlsx Book2.xlsx とし、そのそれぞれのExcelBookのどちらにもSheet1のB2~Z99のセル範囲にデータを入力するものとします。  その場合、以下の様に操作して2つのExcelBookの両方のSheet1のB2~Z99のセル範囲に条件付き書式を設定して下さい。 Book1.xlsxとBook2.xlsxを同一のパソコン上で同時に開く   ↓ Sheet1のB2セルを選択   ↓ Excelウィンドウの上の方に並んでいるリボンのタブの中から[ホーム]タブを選択してクリック   ↓ 現れた「スタイル」グループの中にある[条件付き書式]ボタンをクリック   ↓ 現れた選択肢の中にある[ルールの管理]をクリック   ↓ 現れた「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック   ↓ 現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック   ↓ 現れた「次の数式を満たす場合に値を書式設定」欄の中に次の数式を入力 Book1の場合は =COUNTIF([Book2.xlsx]Sheet1!$B:$B,B2)=0 Book2の場合は =COUNTIF([Book1.xlsx]Sheet1!$B:$B,B2)=0   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック   ↓ 現れた背景色のサンプルの中にある赤色の四角形をクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの「適用先」欄に入力されているセル範囲を $B$2:$B$99 に変更する (シート上でセル範囲を直接、範囲選択する事でも設定する事が出来ます)   ↓ 「条件付き書式ルールの管理」ダイアログボックスの中にある[新規ルール]ボタンをクリック   ↓ 現れた「新しい書式ルール」ダイアログボックスの「ルールの種類を選択して下さい」欄の中にある[数式を使用して、書式設定するセルを決定]をクリック   ↓ 現れた「次の数式を満たす場合に値を書式設定」欄の中に次の数式を入力 Book1の場合は =ISERROR(1/(B2&""=VLOOKUP($B2,[Book2.xlsx]Sheet1!$B:B,COLUMNS($B:B),FALSE)&"")) Book2の場合は =ISERROR(1/(B2&""=VLOOKUP($B2,[Book1.xlsx]Sheet1!$B:B,COLUMNS($B:B),FALSE)&""))   ↓ 「新しい書式ルール」ダイアログボックスの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ダイアログボックスの[塗りつぶし]タブをクリック   ↓ 現れた背景色のサンプルの中にある赤色の四角形をクリック   ↓ 「セルの書式設定」ダイアログボックスの[OK]ボタンをクリック   ↓ 「新しい書式ルール」ダイアログボックスの[OK]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの「適用先」欄に入力されているセル範囲を $C$2:$Z$99 に変更する (シート上でセル範囲を直接、範囲選択する事でも設定する事が出来ます)   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[適用]ボタンをクリック   ↓ 「条件付き書式ルールの管理」ダイアログボックスの[OK]ボタンをクリック  上記の条件付き書式を両方のExcelBookに設定しますと、その2つのBookを同一のパソコン上で同時に開いた場合にのみ、異なっている箇所が赤く塗りつぶされます。  また、片方のBookで名前に抜けがある場合には、もう一方のBookの該当する名前の行が赤く塗りつぶされます。

  • tamu1129
  • ベストアンサー率58% (1295/2223)
回答No.1

データの比較してくれるツール使えば1発でわかりますよ たとえば、WinMergeのようなツール http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html

関連するQ&A