• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA で二つのシートを比較して合致するレコードを別のシー)

Excel VBAで二つのシートを比較して合致するレコードを別のシートに抽出する方法

このQ&Aのポイント
  • Excel VBAを使用して、二つのシートを比較し、合致するレコードを別のシートに抽出する方法をご紹介します。
  • fax1シートとfax2シートのデータを比較し、合致するfax_idを持つレコードをfax3シートにコピーします。
  • 具体的な手順としては、まずfax1シートとfax2シートのデータを範囲指定し、次に比較処理を行います。合致するレコードはfax3シートにコピーされ、最後にセルの幅を自動調整します。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

抽出部分だけのコードです。。。 '---------------------------------------- '●スピードが速い(FINDメソッド使用) Dim FoundCell As Range For Each tempRange In fax1Table.Rows   Set FoundCell = fax2Table.Columns(3).Find(tempRange.Columns(1).Value, , xlValues, xlWhole)     If Not FoundCell Is Nothing Then       Set dst = dst.Offset(1)       tempRange.copy dst     End If Next tempRange '-------------------------------- ●スピード遅い(Fax2TableのC列をひとつずつ全て比較するので)  Dim Fax2C As Range For Each tempRange In fax1Table.Rows   For Each Fax2C In fax2Table.Columns(3).Cells     If tempRange.Columns(1).Value = Fax2C.Value Then       Set dst = dst.Offset(1)       tempRange.copy dst       Exit For     End If   Next Fax2C Next tempRange '---------------------------------------- このような処理では、Activateの必要はありませんので 実際のコードではそこらあたりに考慮したコードにした方がいいでしょう。 以上です。  

asheh
質問者

お礼

ありがとうございました。 教えていただきました考え方で意図したことができるような動きになってます。 一つ一つみていくと数千件あるデータの場合、かなり遅くなるんですね。 ただ、コピーはされるのですが、なんでかレコードの途中までしかデータがコピーされなくて、もう少し考えてます。ちょっとお待ちください。

asheh
質問者

補足

お世話になっております。 返信が遅くなりましてすみません。 まだつっかかっているのと、閉じてしまったらやり取りができなくなってしまうのかと思って、まだ閉じていませんでした。 ここまで教えてもらったので、ここから先は自分でとおもってまして。 もう少しだけまっててもらえませんでしょうか。 よろしくお願いいたします。

関連するQ&A