Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
照合データの転記について
投稿日時: 23/05/23 21:59:39
投稿者: ひろまさ

ご教示をお願いしたい事があります。
「転記シート」のタイトル1の値を基準にして、「マスタシート」の値を
転記したいのですが、うまくできません。
どうしてもマスタシートのタイトル2、3の順に転記されてしまいます。
 
■マスタシート
タイトル1 タイトル2 タイトル3
111     aaa     あああ
222     bbb     いいい
333     ccc     ううう
444     ddd     えええ
555     eee     おおお
 
以下が求めている結果
■転記シート
タイトル1 タイトル2 タイトル3
333     ccc     ううう
444     ddd     えええ         
111     aaa     あああ        
555     eee     おおお        
222     bbb     いいい        
 
--------------------------------------------------------
Dim S1 As Worksheet
Dim S2 As Worksheet
 
Set S1 = Sheets("Sheet1")
Set S2 = Sheets("Sheet2")
      
     MyRow = 2
 
     For i = 2 To S1.Cells(Rows.Count, 1).End(xlUp).Row
       For j = 2 To S2.Cells(Rows.Count, 1).End(xlUp).Row
 
           If S1.Cells(i, 1) = S2.Cells(j, 1) Then
                S2.Cells(MyRow, 2) = S1.Cells(i, 2)
                S2.Cells(MyRow, 3) = S1.Cells(i, 3)
                MyRow = MyRow + 1
            End If
        Next j
     Next i
 
お手数をお掛けしますがよろしくお願い致します。

回答
投稿日時: 23/05/23 22:31:38
投稿者: simple

こういうことでしょうか。

Sub test()
    Dim S1      As Worksheet
    Dim S2      As Worksheet
    Dim i       As Long
    Dim j       As Long

    Set S1 = Sheets("Sheet1")
    Set S2 = Sheets("Sheet2")
    
    For j = 2 To S2.Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To S1.Cells(Rows.Count, 1).End(xlUp).Row
            If S1.Cells(i, 1) = S2.Cells(j, 1) Then
                S2.Cells(j, 2) = S1.Cells(i, 2)
                S2.Cells(j, 3) = S1.Cells(i, 3)
                Exit For    'ここにも注目
            End If
        Next i
    Next j
End Sub

投稿日時: 23/05/23 22:38:00
投稿者: ひろまさ

simple様
早々にご回答ありがとうございます。
私が望んでいた結果です。
言葉が悪いですが、魔法をかけられた気分です。
再度、この辺りの勉強をやり直します。
ありがとうございました。