• 締切済み

エクセルの2つのシートを比較

エクセルで2つのシートのA列に値が入っています。 それぞれのA列を比較して同じ値であればシート1のB列をコピーしてシート2のB列に貼付。 ということはVBAで可能でしょうか? ※行番地はばらばらです。 ※A列の値がダブルことはありません。 例) シート1       シート2 A列   B列     A列   B列 111   あああ    111 222   いいい    333 333   ううう    555 444   えええ    444 555   おおお    666 結果 シート1        シート2 A列   B列      A列   B列 111   あああ    111   あああ 222   いいい    333   ううう 333   ううう    555   おおお 444   えええ    444   えええ 555   おおお    666 よろしくお願いします。

みんなの回答

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.4

>例でいうとシート1のB3をシート2のB2へペーストしたいのです。 その位置に値が入っているはずですが? 私の認識が違っているのでしょうか? Vlookupで参照した時と同じ結果になっているはずです。 #3の回答への補足の考え方(Forの2重ループ)でも構いませんが、実行時間の無駄です。 これを実行している間に、#3さん回答の作業が終わっているはずですよ。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

この要件なら関数で充足すると思いますし、メンテナンスが容易です。 sheet2のA列に検索値が設定済みならば、B2に=IF($A2<>"",VLOOKUP($A2,Sheet1!A:B,2,FALSE),"")を設定して、 B2のフィルハンドル(セル枠右下の■)をダブルクリックで如何でしょうか。

errie217
質問者

補足

ご回答ありがとうございます。 ですがシートが随時更新され、新しくなってしまうので、できたらVBAで... すいません。よくわかっていないのですがこんな形じゃだめなのでしょうか?エラーが出てしまって詰まっています;; Sub Test vcopy1 = 2 'コピー元の列 vcopy2 = 3 vpaste1 = 2 '貼り付け先の列 vpaste2 = 3 For vi = 1 To 65536 'sheet2用ループ For vj = 1 To 65536 'sheet1用ループ If Worksheets("Sheet1").Cells(vi, 1).Value = Worksheets("Sheet2").Cells(vj,1).Value Then 'sheet2で行頭から値と同じか比較 Worksheets("Sheet1").Range(Cells(vi, vcopy1), Cells(vi, vcopy2)).Copy ''あればsheet1の情報欄をコピー Worksheets("Sheet2").Paste Destination:=Worksheets("Sheet2").Range(Cells(vj, vpaste1), Cells(vj, vpaste2)) 'sheet1にペースト Exit For Else 'なければ次行 End If Next Next End Sub

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

こんな感じでしょうか? Sub sample() Dim C As Range Dim TmpW As Variant Set TmpW = Sheets("Sheet1").Range("A1:B65536") On Error GoTo exits For Each C In Sheets("Sheet2").Range("A:A") C.Offset(, 1) = Application.WorksheetFunction.VLookup(C.Value, TmpW, 2, False) Next exits: End Sub

errie217
質問者

補足

すいません。説明不足だったようで... ペーストする行ですが、A列の同じ内容のところ 例でいうとシート1のB3をシート2のB2へペーストしたいのです。 ややこしくてすいません。可能でしょうか??

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>※A列の値がダブルことはありません。 VBAよりも VLOOKUP関数で組んだ方が簡単ですけど。

errie217
質問者

補足

ご回答ありがとうございます。 上記例くらいならいいのですが、データ量がすごく多く、比較するシートも随時更新となるので… VBAで組めたらと悩んでいます。