こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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 |

投稿日時 - 2008-04-21 01:43:22

QNo.3963977

すぐに回答ほしいです

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

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

投稿日時 - 2008-04-21 03:19:29

お礼

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

投稿日時 - 2008-04-21 23:07:27

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

こんなのではどうでしょうか?

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

投稿日時 - 2008-04-21 02:23:34

お礼

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

投稿日時 - 2008-04-21 23:05:50

あなたにオススメの質問