dポイントプレゼントキャンペーン実施中!

・Excel(M365)で、添付ファイルのようなVLOOKUP処理を作りたい(VBAで)のですが、作り方についてお教えいただけませんでしょうか
・具体的に実施したいこととしては、①Sheet1のE列と、Sheet2のC列をマッチングし、Sheet1のJ列の値を、Sheet2のM列へ転記する。その際、Sheet1にデータ重複している場合(例:CCC,DDD)、そのデータの最下行の値を転記する(例:CCC→400、DDD→700)②この重複データについては、アラームのため、該当するSheet2のB~C列を赤くセル反転させる。
・上記マッチングしない場合は、Sheet2へは特に転記はしない(例:EEE)
・何卒、よろしくお願いします。

「Excel(M365) Vlookup/」の質問画像
  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (1件)

>VLOOKUP処理を作りたい(VBAで)


ソートなどをしても単純にVLOOKUPで出来る処理ではないと思いますよ

画像が細かくてよく分からないけれど

Sub test()
Dim Dic As Object
Dim ky As Variant
Dim i As Long
Set Dic = CreateObject("Scripting.Dictionary")
'データを取得
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "E").End(xlUp).Row
ky = .Cells(i, "E").Value
If Not Dic.Exists(ky) Then
Dic.Add ky, .Cells(i, "J").Value
Else
Dic.Item(ky) = .Cells(i, "J").Value & "|"
End If
Next
End With
'条件に合わせて出力
With Worksheets("Sheet2")
For i = 2 To .Cells(Rows.Count, "C").End(xlUp).Row
ky = .Cells(i, "C").Value
If Dic.Exists(ky) Then
.Cells(i, "M").Value = Split(Dic.Item(ky), "|")(0)
If UBound(Split(Dic.Item(ky), "|")) = 1 Then
.Cells(i, "B").Resize(, 2).Interior.ColorIndex = 3
End If
End If
Next
End With
Set Dic = Nothing
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!