さて、「シート2」に含まれる人が、「シート1」に含まれる人の「氏名」・「住所」が同じであるが、「電話番号」だけが違う、という状況があるとします。
このときに、「シート1」のその人の電話番号を、「シート2」の新しい電話番号に書き換えるには、どのようにすればよろしいでしょうか?
VBAを使って一括で処理するとして、ループを使って捜査してもそんなに時間はかからないと思いますが、
ワークシート関数を使って工夫してみました。
Sub Macro() Dim i As Long Dim lastRow1 As Long Dim lastRow2 As Long Dim r As Long Dim s As String Application.ScreenUpdating = False lastRow1 = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row lastRow2 = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lastRow2 s = "=SUMPRODUCT((Sheet1!$A$1:$A$" & lastRow1 & "=Sheet2!A" & i & ")*(Sheet1!$B$1:$B$" _ & lastRow1 & "=Sheet2!B" & i & ")*ROW(Sheet1!$A$1:$A$" & lastRow1 & "))" r = Application.Evaluate(s) If r > 0 Then Sheet1.Cells(r, "C").Value = Sheet2.Cells(i, "C").Value End If Next i Application.ScreenUpdating = True End Sub
コメント(3件)
VBAでは回答のコードをVBEの標準モジュールにコピペして実行します。
VBAの使い方はこちらを参考にしてみてください。
http://www.officepro.jp/excelvba/ini/index1.html
http://www.officepro.jp/excelvba/ini/index2.html
http://www.officepro.jp/excelvba/ini/index3.html