• ベストアンサー

ExcelVBA 一致する名前に対してデータを設定する方法について

初めまして。tommy57111と申します。 ExcelVBAでプログラムの実現方法をご教授願いたいと思い投稿させて頂きました。 2つの表があり、<Sheet1>の一致する"名前"に対して、 <表1>の"年齢"欄に<Sheet2>の"年齢"を取得して、設定を行いたいです。 "名前"と"年齢"を一つのデータとして、<Sheet2>から取得し、 <Sheet1>で一致する名前を検索して、値を設定すれば良いことまではわかるのですが、実現方法がわかりません。 どなたかご教授をよろしくお願い致します。 <Sheet1> A B C -------------------------- 1 |名前 | 年齢 | 住所 | 2 |A | | AAA | 3 |B | | BBB | 4 |C | | CCC | <Sheet2> A B ------------------- 1 |名前 | 年齢 | 2 |B | 23 | 3 |A | 30 | 4 |C | 18 | ↓結果 A B C -------------------------- 1 |名前 | 年齢 | 住所 | 2 |A | 30 | AAA | 3 |B | 23 | BBB | 4 |C | 18 | CCC |

質問者が選んだベストアンサー

  • ベストアンサー
  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

Sub Nenrei_Search() Dim HYO1 As Range Dim HYO2 As Range Dim i As Long Set HYO1 = Sheet1.Range("A1").CurrentRegion Set HYO2 = Sheet2.Range("A1").CurrentRegion For i = 1 To HYO1.Rows.Count - 1 HYO1.Range("A1").Offset(i, 1) = _ Application.VLookup _ (HYO1.Range("A1").Offset(i, 0), HYO2, 2, False) Next Set HYO1 = Nothing Set HYO2 = Nothing End Sub

tommy57111
質問者

お礼

ご回答頂き、ありがとうございます。 載せて頂いたプログラムにより、動作を確認することができ、 参考になりました。 また、よろしくお願い致します。

その他の回答 (1)

回答No.1

こんなのではどうでしょうか? sheet2の名前の検索範囲の計算をはしょってます。(「名前」という名前はないでしょうから) Sub sample() Dim r As Long Dim n As Variant For r = 2 To Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row n = Application.Match(Sheet1.Cells(r, 1), Sheet2.Columns(1), 0) If Not IsError(n) Then Sheet1.Cells(r, 2) = Sheet2.Cells(n, 2) End If Next End Sub

tommy57111
質問者

お礼

ご回答頂き、ありがとうございます。 なかなか思いつかなかったので、参考になりました。 また、よろしくお願い致します。

関連するQ&A