1

私が書いたVBAコードを修正するのに少し助けが必要です。質問:

sheet1に3つの列(「名前」、「ID」、「名前データ」)を持つExcelファイルがあります。「名前データ」は空白の列です。

Name        ID      Name Data
Albert      4235 
John        4237 
Robert      4239 
Micky       4241 
Minnie      4243 
Donalid     4245 
Edited      4247 
Goofy       4249 

シート2には、IDが1つしかない同様のID列があります。例:

ID
4243

シート2のID値(この例では「4243」)をシート1のID値と一致させるvlookupコードがあり、そのIDに関連付けられた名前をsheet1の「名前データ」にコピーします。最終結果は次のようになります。

Name       ID    Name Data
Albert    4235 
John      4237 
Robert    4239 
Micky     4241 
Minnie    4243     Minnie
Donalid   4245 
Edited    4247 
Goofy     4249

問題:このコードの問題は、「名前データ」の下の最初のセルに名前がコピーされることです。例:次のことを行います。

Name      ID      Name Data
Albert    4235     Minnie
John      4237 
Robert    4239 
Micky     4241 
Minnie    4243 
Donalid   4245 
Edited    4247 
Goofy     4249

名前「minnie」は、1行目(見出し行を除く)ではなく、「Namedata」の下の5行目にコピーする必要があります。

誰かが私にコードで何を修正するかを提案できますか?

トンありがとう!

コードは次のとおりです。

Sub lookup()
x = 2
Set rng1 = Worksheets("Sheet1").Range("b4:b8")
Set rng2 = Worksheets("Sheet2").Range("A2:A2")
For Each c1 In rng1
For Each c2 In rng2
If c1.Value = c2.Value Then
Worksheets("sheet1").Cells(x, 3).Value = c2.Value
If c1.Value <> c2.Value Then
Worksheets("Sheet1").Cells(x, 3).Value = Worksheets("Sheet1").Cells(x, 3).Value
x = x + 1
End If
End If
Next
Next
End Sub

私はそれがこの行と関係があることを知っています:

Worksheets("sheet1").Cells(x, 3).Value = c2.Value

しかし、私は何を理解することができません。

4

1 に答える 1

0

私は次のコードで終了しました:

Sub lookup()

Set rng1 = Worksheets("sheet1").Range("B2:B19")
Set rng2 = Worksheets("sheet2").Range("A2:A2")

For Each c1 In rng1
    For Each c2 In rng2
        If c2.Value = c1.Value Then
            Worksheets("sheet1").Cells(c1.Row, 3).Value = Worksheets("sheet1").Cells(c1.Row, 1).Value
        End If
    Next
Next

End Sub

修正したファイルは共有されます:https ://www.dropbox.com/s/0nsr1iuwnzt1s1x/VlookupVBA.xlsm

于 2013-02-04T17:04:39.130 に答える