重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

あけましておめでとうございます。今年もよろしくお願いします。

Sub Test()
Dim myTarget As Range, r As Range, f
Set myTarget = Sheets("Sheet1"). _
   Range("B2", Sheets("Sheet1").Range("B65536").End(xlUp))
For Each r In myTarget
 Set f = Sheets("Sheet2").Columns(1). _
   Find(r.Value, Sheets("Sheet2").Range("A1"), Lookat:=xlWhole)
 If Not f Is Nothing Then
   If r.Offset(0, 3).Value <> f.Offset(0, 3).Value Then
     f.Resize(1, 4).Copy Destination:= _
     Sheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0)
   End If
 End If
Next r
End Sub

前回の質問で教えていただいたコードなのですが、現時点では、B列のデータを元にして二つのSheetのデータを比較して別Sheetへコピーしているのですが、そのときに、B列以降の(たとえば、B列からX列まで)データはコピーできますが、A列もコピーしたい時はどうすればよいのかで、悩んでいます。どの様に変更すればよいのでしょうか?

A 回答 (5件)

例示されたコードでは、結果が出なかったので


一部変更しています。

Sub Test()
Dim myTarget As Range, r As Range, f
Set myTarget = Sheets("Sheet1"). _
   Range("B2", Sheets("Sheet1").Range("B65536").End(xlUp))
For Each r In myTarget
 Set f = Sheets("Sheet2").Columns(2). _
   Find(r.Value, Sheets("Sheet2").Range("B2"), Lookat:=xlWhole)
'変更前 Set f = Sheets("Sheet2").Columns(1). _
'変更前 Find(r.Value, Sheets("Sheet2").Range("A1"), Lookat:=xlWhole)

 If Not f Is Nothing Then
   If r.Offset(0, 2).Value <> f.Offset(0, 2).Value Then
'変更前 If r.Offset(0, 3).Value <> f.Offset(0, 3).Value Then

     f.Offset(0, -1).Resize(1, 4).Copy Destination:= _
     Sheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0)
'回答個所  f.Resize(1, 4).Copy

   End If
 End If
Next r
End Sub
    • good
    • 0
この回答へのお礼

細かい質問に答えていただき感謝いたします。
データもウマク動き大変感動しています。
ありがとうございました。

お礼日時:2005/01/09 20:55

元の質問は


http://okweb.jp/kotaeru.php3?q=1130032
ですよね。
例データは私が一部補充。
元のソースのままで実行してみました。
(Sheet1)A1:D4
コード商品店名納入日
0360メロンD店1月4日
0001みかんA店1月3日
0112きんかんC店1月4日
(Sheet2)A1:D4
コード商品店名納入日
0001みかんA店1月3日
0360メロンD店1月2日
0112きんかんD店2月11日
(結果)Sheet3
0360メロンD店1月2日
0112きんかんD店2月11日
となり、A列(=コード)ももって来てますが。
私の勘違いなら済みません。
    • good
    • 0
この回答へのお礼

なんだか、私の質問の仕方が悪いようなので、もう一度書きます。
(Sheet1)A1:D4
入力日 区画 コード 商品 店名 納入日
1/1   1   0360 メロン D店 1月4日
3/2   1   0001 みかん A店 1月3日
3/3   3   0112 きんかん C店 1月4日
(Sheet2)A1:D4
入力日 区画 コード 商品 店名 納入日
3/2   1   0001 みかん A店 1月3日
1/1   1   0360 メロン D店 1月2日
3/3   3   0112 きんかん D店 2月11日
(結果)Sheet3
1/1   1   0360 メロン D店 1月2日
3/3   3   0112 きんかん D店 2月11日

という状況に変わったので、C列のコードが一致する行の納入日を比較して結果を出したいのですが、現在の
   If r.Offset(0, 3).Value <> f.Offset(0, 3).Value Then
     f.Resize(1, 4).Copy Destination:= _
     Sheets("Sheet3").Range("A65536").End(xlUp).Offset(1, 0)
   End If
のままだとC列より左側のデータがコピーされないので困っています。どのように書き直すのが良いのでしょうか?

お礼日時:2005/01/03 22:25

まちがっちゃった。


Set myTarget = Sheets("Sheet1"). _
   Range("E2", Sheets("Sheet1").Range("B65536").End(xlUp))

だね。
    • good
    • 0

Set myTarget = Sheets("Sheet1"). _


   Range("B2", Sheets("Sheet1").Range("B65536").End(xlUp))


Set myTarget = Sheets("Sheet1"). _
   Range("A2", Sheets("Sheet1").Range("B65536").End(xlUp))

になるんでないの?

アドバイスだけど、
こういう質問のときは、前回の質問の番号を出した方がいいよ。
    • good
    • 0

f.Resize(1, 4).Copy Destination:= _



f.Resize(0, 4).Copy Destination:= _
でどうですか?

誰に教えてもらったコードなの?
綺麗なコードだね。

この回答への補足

ありがとうございます。
すみません、もしE列を比べて、A-D列もコピーの場合はどうなるんでしょう??

補足日時:2005/01/03 19:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!