• ベストアンサー

エクセルで二つのシートの照合をしたい

エクセルでレイアウトの同じ二つにシートがあります。 このシートを照らし合わせてセルのデータの異なる部分を抜き出したいの ですが、よい方法はありますでしょうか。 シートが150列・2万行と大きなものでIF関数などを使って照合して みましたが、時間がかかりすぎました。

  • youryi
  • お礼率84% (135/160)

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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

youryi
質問者

お礼

更新があった座標も表示され、わかりやすく確認することができました。 時間は2万行で10分弱くらいで、パソコンの性能があまりよくない せいかもしれません。 ありがとうございました。

その他の回答 (3)

回答No.3

Sheet 3 に =if(!sheet1,A1=!sheet2,A1,"same","different") あるいは =if(!sheet1,A1=!sheet2,A1,!sheet1,A1,"different")

youryi
質問者

お礼

IF関数は使ってみたのですが、行数が多いため変更があった部分を 探すのが大変でした。 ありがとうございました。

  • koko88okok
  • ベストアンサー率58% (3839/6543)
回答No.2

興味があったので、検索してみたところ下記URLの過去ログが見つかりました。(残念ながら、私には理解できませんでした。) 「EXCEL - マクロ・シート間の照合」 http://oshiete1.goo.ne.jp/kotaeru.php3?q=471762&rev=1

youryi
質問者

お礼

変更があったものを赤く表示するマクロなのですね。 行数などが多く探すのが大変なので、変更があった部分を メッセージで表示する等改造してみようと思います。 ありがとうございました。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

テキストの差異をチェックするのであれば、 各シートをCSVに出力し、テキストとして、フリーのDIFFツール などで、確認してみてはいかがでしょうか? マクロでチェックするの方法もありますが、データ量があるので、処理時間もそれなりにかかりますから。

youryi
質問者

お礼

なるほど、ツールを使う方法もあるのですね。 ありがとうございました。

関連するQ&A

  • Excel シート間のデータの照合

    Excelで、シート間のお客様データ(だいたい各1万件)を照合します。下記は現在の照合方法ですが、これでは時間がかかるうえ手作業が多く発生しミスにつながります。頻繁に行う作業なので、関数でも、マクロでも、とにかくもう少し簡単にできる方法がありましたら、どうぞご教授ください。よろしくお願いします!! 【目的】 シート「sheet2008」には2008年度のデータ。シート「sheet2007」には「sheet2008」と同じ形式の2007年度のデータが入っています。シート「sheet2008」に、そのお客様の2007年度の担当営業マンを表示させたいのです。 【例】 列A(電話番号): 011-231-1112 列B(名前):佐藤 一郎 列C(住所):北海道札幌市中央区北1-1-1 列D(担当営業マン):鈴木 新規の列(2007年度の担当営業マン):鈴木  ・「sheet2008」「sheet2007」はほぼ同じデータですが、一部のお客様は名前が変わっていたり、住所が変わっていたりします。  ・「sheet2007」にないお客様が「sheet2008」にあったり、その逆があったりして、各シートのデータ件数は一致しません。  ・名前が同じでも住所が違うデータ、電話番号が同じでも担当営業マンが違うデータは別者として扱います。  ・「顧客ID」のような“必ずユニークな情報”は存在しません。 【現在の照合方法】 (1)「sheet2008」の各列の前に空白列を挿入する。  (データの1行目はタイトル行…B1:電話番号/D1:名前/F:住所/H:担当営業マン)  (データの2行目以降はデータ)     列A(空白行):     列B(空白行): 011-231-1112     列C(空白行):     列D(名前):佐藤 一郎     列E(空白行):     列F(住所):北海道札幌市中央区北1-1-1     列G(空白行):     列H(担当営業マン):鈴木 (2)「sheet2007」を列Aの電話番号で昇順に並べ替える。 (3)「sheet2008」の電話番号が「sheet2007」にあるかを調べる。     A2:「=IF(B2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,1,0)),"○","▲")」 (4)(3)で調べた「sheet2008」の電話番号と同じ行にある名前/住所が「sheet2007」にあるかを調べる。     C2:「=IF(D2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,2,0)),"○","▲")」     E2:「=IF(F2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,3,0)),"○","▲")」 (5)電話番号/名前/住所がすべて一致するデータについて、「sheet2007」にある担当営業マンの値を列Gに表示させる。     G2:「=IF((AND(A2="○",C2="○",E2="○"))=TRUE,(VLOOKUP($B2,Sheet2007!$A:$D,4,0)),"▲") (6)"▲"やエラー値で表示される計算結果について、目視で確認する。 (終了)

  • エクセルシート間の照合について

    エクセルシート間で照合をしたいと思っています。 照合する項目は2つ。2つともあえばそのA列のデータを表示するというものです。 データは シート1(前年) A  B  C  D 1  田中 123 東京都・・ 5  佐藤 124 千葉県・・ 3  山本 128 埼玉県・・ シート2(今年) A  B  C  D   山本 128 埼玉県・・   佐藤 124 北海道・・   田中 123 東京都・・ C列とD列を照合し2つともあえばシート2のA列にシート1のA列のデータを入力する。なければ「なし」と入力できるようにしたいのです。 上の場合は山本のA列に「3」佐藤には「なし」田中には「1」と入るのうになればと思います。 入力されている列は同じですが順番はばらばらです。データ数は1万件を超えています。 どなたかアドバイスいただければと思います。よろしくお願いします。     

  • エクセル 照合とオートフィルについて

    エクセル 照合とオートフィルについて エクセル2007で以下のようなシートが2枚できています。 上段が1枚目(シート1)で下段が2枚目(シート2)です。 2枚のシートの内容は同じなのですが、それぞれ数字と件数が 同じかどうか目視ではなく、関数と条件付き書式で処理できればと 思いました。 シート2の書式だけをシート3に作って、IF関数で処理しようと したのですが、シート3の最初の5行目にすべて数式を入力して それを7行目、8行目にコピーしたのですが、シート1が横に値があるのに対して シート2はとびとびに値があるのでうまくいきません。 1月31日までびっしりデータがあるので、いいやり方があれば教えてください。

  • エクセルとデータの照合について

    エクセルとデータの照合について シート1に以下のような表を作成しました(上段) また、シート2にも以下のような表を作成しています(下段) 見にくいですが、要は同じデータが入っているのですが、入っているセルが 違うので、どんな関数や条件付き書式(色つき)を使って照合すればいいのかが わかりませんでした。 両者を見比べて照合をしたいのです。おもに上段の数字があっています。 初心者で申し訳ありませんが、教えてください。

  • 異なるエクセルシートの照合

    はじめての質問です。よろしくお願いします。 過去の事例でも同じような例があったと思いますが マクロは全く分からず、この設定にあったものを作成して頂けるなら幸いです。 (内容) 当方の仕入明細データと先方の売上明細データの照合です。かなり、双方の誤差が多く、現在手作業でやっていますが、時間がかかります。エクセルで誤差を 簡単に出せる方法を教えてください。 (設定) sheet1当方仕入 sheet2先方売上 A列:品名、D列:重量、E列:単価、F列:金額 です。品名は双方の表記が異なるので照合対象からはずしてください。一致するものは表示せず、差があるものだけ表記し、差額金額を出して欲しいのです。 問題は、行数の合計がsheet1と2で異なることがあります。(仕入漏れ&売上漏れ)

  • Excelデータの照合

    Excelデータの照合 こちらでも色々調べさせて頂いたのですが、自分のデータにうまくあてはめられず困っています。 Excelの元データ、入力データがあります。 元データが正規のデータで、入力データにモレがないか、ミスがないかをチェックする為に 照合をしたいんですけど、どうやったらうまく出来るかわかりません。 是非ご教授下さい。 元データ、入力データ共に2列あり、どちらも A列・・・コードナンバー B列・・・コードナンバーに対応する金額 が入力されています。 これは今現在は同一シート内に抜き出してありますが、元は別シートです。 なので別シートにあるものとして回答頂いても結構です。 入力データの中から、元データのA列、B列共に一致するものだけを抽出することは出来ますか? 不一致もしくは該当するデータがないものと、一致しているものが区別で切れば形式は何でもOKです。 (作業列を増やすとか、色分けするとか、文字で表示するとか) 出来ればVBAやマクロを使わず関数のみでお願いします。 検索を使うからVLOOKUP? 複数条件だからIF?? と色々考えましたが、2つセットで検索をかけるのがどうしても出来ず・・・(-_-;) よろしくお願いします!!

  • EXCEL - マクロ・シート間の照合

    すみません、どなたか教えてください。 「シートA」と「シートB」とで、商品リストのデータを照合したいのです。 「シートA」を元に、ある一部の商品リストに変更をかけたものが「シートB」になります。 【例】 商品番号  商品名  001     Orange ABC  002     Orange BBB  003     Apple Big  004     Banana 5 チェックする点は、入力されている文字列、大文字、小文字、スーペース等が変更になったかどうかチェックします。 変更は何度も入るため「シートB」を元に「シートC」をチェックする→「シートC」を元に「シートD」をチェックする、という流れになっていきます。 今までは以下の関数を使ってチェックしていましたが、この関数だと毎回書き変える上に、A3以降のセルにコピーする作業が発生するので手間がかかってなりません。 ●照合用のシートZ!A2=IF('シートA'!A2&'シートB'!A2="","",EXACT('シートA'!A2,'シートB'!A2)) どなたかよい方法を教えてください。よろしくお願いします。 できれば、ボタンを押してマクロ実行、というのが理想なのですが…。

  • Excelのsheetでの内容照合について

    以下の条件に合うExcelのマクロについて教えてください。 sheet1には、それぞれの列に人名、出身地が入力されているとします。 この時に、同一ブックのsheet2の特定のセルに「村田」と入力した場合、自動的にsheet1を参照して、 隣の列に出身地「新潟」が入力されるようにするにはどのようにすればいいのでしょうか? <例> sheet1     列1 列2  行1 小林 大阪 行2 村田 新潟 行3 清水 福岡      ↓sheet2を開く sheet2     列1 列2 行1 村田      ↓「村田」を行1列1に入力すると・・・ sheet2     列1 列2 行1 村田 新潟 自動的にsheet1を参照し、sheet2の行1列2にsheet1の列2のデータを表示する。 「清水」と入力した場合は「福岡」、「小林」と入力した場合は「大阪」を表示させる。 こんなイメージです。 よろしくお願いします。

  • エクセル OFFSET関数について

    エクセル OFFSET関数について 以下のようなシートを2枚作成し、照合したいと考えています。 上段がシート1で、下段がシート2です。 2枚のシートの内容は同じようなものですが、セルの位置が 2枚ともバラバラで、できればROWS COLUMS関数を使って 照合したいと思いますが、二つの関数の使い方がよくわかりません。 照合の仕方は、シート1のデータをシート2をコピーした3枚目のシート(セルはすべて空欄) を作成して、そこにコピーしていきたいです。 一番左端の喫茶店の行番号、列番号を関数の中でどう設定すれば、3枚目のシートができて、 簡単に下までオートフィルできるのでしょうか。 1月31日までデータが入っているので、一つ一つ数式を入れていくのは大変です。 お願いします。

  • エクセル(マクロ?)の照合についてです。

    関数やマクロを全く知らない素人で恐縮ですが、 ご教授くださると幸いです。 アとイ2つのシートがあり、両シートのCDE列には2桁から4桁までの 数値が各々ランダムに300行ほど入ってます。 そこで、アの各行に「イのCDE列と全て同数もしくは プラス、マイナス5以内までの行があるか」を照合したいものの、 他にもシートが多く困っています。 ※このような作業はエクセルだと無理でしょうか? 大変恐れ入りますが、よろしくお願い申し上げます。

専門家に質問してみよう