• 締切済み

エクセルの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で組めたらと悩んでいます。

関連するQ&A

  • Excel VBAでの値の比較

    お世話になります。 Excel VBAでの値の比較方法についてご教授頂きたく存じます。 下記のような値がセルに入っていると仮定しまして、 セルA1とセルG1を比較する セルA2とセルG2を比較する セルB1とセルH1を比較する セルB2とセルH2を比較する 値が違う場合のみ、A列、又は、B列のセルの色を変更したいのですが・・・。 下記例の場合であれば、B1とA2がセルの色が変われば良いです。    A列 B列    G列 H列 1行  1  1     1   2 2行  2  2     3   2 VBAで実現したいと思います。 何卒、宜しくお願い申し上げます。

  • エクセル関数(シートの比較)を教えて下さい

    A列にある部品の型番が入っており、同じ行のB列以降に詳細内容が入っています。 B列以降の数は型番によってバラバラです。 Sheet1,2で同じ型番同士で比較し、B列以降の詳細内容が異なるものを Sheet3に書き出したいのです。 たとえば、 Sheet1の内容が、 A列  B列   C列   D列   E列 5001  A1   B5    F3   Z4 5002  E6   C2    A7 5003  B9   M8 Sheet2の内容が、 5001  A1   B5     5002  E6   C1    A6 5004  B9   M8 結果として、 5001  F3   Z4     5002  C1   A6 5003  B9   M8 5004  B9   M8 このような場合、どうすればいいのでしょうか。 なるべくなら関数がいいのですが、無理ならばVBAでもかまいません。 Excel2000です。 よろしくお願いいたします。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • エクセル 数式のコピー・貼付について

    エクセルの数式のコピー・貼付について教えてください。 シート1にデータが1000行くらい入っているとします。    A   B   1 100  5 2 200  3 3 350  9 :  :   : :  :   : シート2のセルA1、A2に =A1*B1 シート2のセルA3、A4に =A2*B2 シート2のセルA5、A6に =A3*B3 と、2行ずつ数式を入れたいのですが、 普通にコピー貼付をするとセル番地が自動的に 増えていってしまいます。 2行ずつ、同じセル番地の数式を入れる方法がありますでしょうか。 どうぞよろしくお願いいたします。

  • 2つのエクセルのシート間でこのようなことは出来ますか?

    こんにちは 1つのエクセルファイルに2つのシートがあり(シートA、シートBとします。両シートはともに300行100列ほどの大きさで、各セルに値、数式、第3のシートセルの参照等が入っています。また、両者とも結合されたセルが散らばっていますが、結合セルの番地は同じです。)両者のシートは非常に似ているのですが、セルの中身、行列の高さ・幅が微妙に違います。 ここで2つのシートを使い、次のような新たなシートを作りたいのです。 ・セルの中身はシートAとまったく同じ。 ・行の高さと列の幅はシートBとまったく同じ。 新たなシートの中身はシートAとまったく同じなので、シートAを元にして行の高さと列の幅がシートBと同じになるようにすればよいと思うのですがやり方が分かりません。かといって1行、1列ごとにシートAの高さ、幅を変更するのも大変です。 何方か簡単に出来る方法が分かる方はいらっしゃらないでしょうか? よろしくお願いします。

  • EXCEL(2枚のSheetの比較・抽出)

    iwao32と申します。 EXCELについてまた教えてください。(まだまだど素人で、基本的な質問で申し訳ありません。) 以下の例で示します。 Sheet1                        Sheet2 A列     B列     C列           A列 1       10      a            2 2       20      b            4 3       30      c            5 4       40      d 5       50      e という2枚のSheetがあるとき、Sheet1のA列とSheet2のA列を比較して、Sheet1の中で、Sheet2のA列にあるものだけ、Sheet3に、 Sheet3 A列     B列     C列 2       20      b 4       40      d 5       50      e というものを作りたいのですが、やり方をお教えください。 よろしくお願いいたします。

  • VBA,二つのExcelのsheetにデータ保存

    VBA初心者です。 皆様のお力をお貸し頂きたく質問させて頂きます。よろしくお願いいたします。 質問内容は、下記になります。 Excelのsheet1には、縦列A,B,C・・・とデータが入っております。 sheet1の例 A B C sheet2は、入力するsheetです。 今回はA列の3行目からとします。 問題は、sheet1の縦の列をA,B,C,Dとすればデータの更新は、出来るのですが sheet1のデータのA,B,C一つ飛んでEまた一つ飛んでGという感じでsheet1のデータを 飛ばしてsheet2に表示、更新(保存)をしたいと思います。 ですので、sheet2のA列の3行目からA,B,C,飛んでE飛んでGとsheet1からデータを 表示させ、さらにsheet2の入力値が変更されると、sheet1のデータが入っている A,B,C,E,Gに更新される仕様です。 sheet1(データが入っています) A , B , C , E , G , 値1 , 値2 , 値3   , 値4 , 値5 sheet2(入力する、入力したデータは、sheet1へ更新される) A列 3行目 、sheet1の値1(A列)が入ります。 4行目 、sheet1の値2(B列)が入ります。 5行目 、sheet1の値3(C列)が入ります。 6行目 、sheet1の値4(E列)が入ります。 7行目 、sheet1の値5(G列)が入ります。 以上です。申し訳ございませんが、ご教授よろしくお願いいたします。

  • 下記別シートがあり、比較して異なる行を判別する方法を教えてください。

    下記別シートがあり、比較して異なる行を判別する方法を教えてください。 (下記例では後者シートにおいて、3行目と4行目が該当します) ・判別結果表示は、後者シート上に該当する行に地色を付けるなど、フィルタで該当行をまとめられる様にできれば目印は何でも結構です。 ・後者シートは前者と比較して行(レコード)が減ったり、値が無くなることはありません。 前者に足された結果が後者になる A列 B列 C列 D列 1 a A 2 b 4 d D 5 e E A列 B列 C列 D列 1 a A 2 b 3 c C 4 d D F 5 e E

  • エクセル 複数シートのデータを1シートにまとめるマクロ

    エクセルの複数シートにデータがあります。同じ条件の人のデータだけをひとつのシートにまとめたいのですが、マクロを教えていただけますでしょうか。それとも、マクロ以外に良い方法がありますか? エクセル初心者なので、あたりまえのことも知らないかもしれません。。。  【データ】 ●シート1からシート20まで、同じ配列でデータがあります。 ●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。) ●A列に到達度、B列に出欠をいれました。 ●C列からM列が氏名、課題、その他のデータです。 ●リストはシート21にあります。  【こんな作業でしょうか?】 ●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける ●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける (っというのが私の乏しい知識で考えた方法なのですが、これでは不具合がでますか? もちろん、この方法じゃなくもっといいのがあれば、それをやってみたいです。)

  • Excel VBA で二つのシートを比較抽出

    Excel VBA で二つのシートを比較して合致するレコードを別のシートに抽出する方法について 下記ホームページのコードを利用させていただきました。 https://okwave.jp/qa/q5917011.html ●fax2シート B列(検索順)  セル1 A    2 B    3 D    4 C ●fax3シート( 比較抽出結果)  セル1 A    2 B    3 C    4 D 比較抽出結果が検索順にするにはどのようにコードを記述すればよいか教えていただけますか。

専門家に質問してみよう