- ベストアンサー
エクセルで二つのシートの照合をしたい
エクセルでレイアウトの同じ二つにシートがあります。 このシートを照らし合わせてセルのデータの異なる部分を抜き出したいの ですが、よい方法はありますでしょうか。 シートが150列・2万行と大きなものでIF関数などを使って照合して みましたが、時間がかかりすぎました。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBAで簡単な初歩的なコードですが、うまく行くかやってみてください。 2シートの全く同じ位置を照合してます。 Sheet1,Sheet2、Sheet3は()内に実際のシート名に変えてください。 少し大目でも良いが、実際のデータが収まっている範囲で Range("A1:C10")のカッコ内を置き換えてください。 標準モジュールに下記を張り付け、実行。Sheet3に相違セルのアドレスと値を出しました。 実行時間は予想が付かないが、実行してうまくいったかどうか、約何分かかったか教えてくれるとうれしい。 Sub test01() Application.ScreenUpdating = False Dim sh1 As Worksheet Set sh1 = Worksheets("sheet1") Dim sh2 As Worksheet Set sh2 = Worksheets("sheet2") Dim sh3 As Worksheet Set sh3 = Worksheets("sheet3") '--- k = 2 Dim cl As Range For Each cl In sh1.Range("A1:C10") If cl = sh2.Cells(cl.Row, cl.Column) Then Else sh3.Cells(k, "A") = cl.Address sh3.Cells(k, "B") = cl k = k + 1 End If Next Application.ScreenUpdating = True End Sub
その他の回答 (3)
- eurekamazeltov
- ベストアンサー率29% (14/48)
Sheet 3 に =if(!sheet1,A1=!sheet2,A1,"same","different") あるいは =if(!sheet1,A1=!sheet2,A1,!sheet1,A1,"different")
お礼
IF関数は使ってみたのですが、行数が多いため変更があった部分を 探すのが大変でした。 ありがとうございました。
- koko88okok
- ベストアンサー率58% (3839/6543)
興味があったので、検索してみたところ下記URLの過去ログが見つかりました。(残念ながら、私には理解できませんでした。) 「EXCEL - マクロ・シート間の照合」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=471762&rev=1
お礼
変更があったものを赤く表示するマクロなのですね。 行数などが多く探すのが大変なので、変更があった部分を メッセージで表示する等改造してみようと思います。 ありがとうございました。
- kokorone
- ベストアンサー率38% (417/1093)
テキストの差異をチェックするのであれば、 各シートをCSVに出力し、テキストとして、フリーのDIFFツール などで、確認してみてはいかがでしょうか? マクロでチェックするの方法もありますが、データ量があるので、処理時間もそれなりにかかりますから。
お礼
なるほど、ツールを使う方法もあるのですね。 ありがとうございました。
お礼
更新があった座標も表示され、わかりやすく確認することができました。 時間は2万行で10分弱くらいで、パソコンの性能があまりよくない せいかもしれません。 ありがとうございました。