Excelでvbaを使用してvlookupを使用するコードをまとめました。しかし、「ワークシート関数クラスの VLOOKUP プロパティを取得できません」というエラーが表示されます。「CustomerNumberList」は 2 列の範囲です。私の問題は VLookup 関数を使用していると思います。VLookup がシート内のどこから検索を開始するかを示す指標として「オフセット」を使用しています。VLookup で会社名を入力する列を指定するにはどうすればよいですか? 現在、私のモジュールには、各セルで会社名を取得する際に機能する Select Case 関数がありますが、数千行を処理しているため、実行に 20 分かかる場合があります。この方法が速いことを願っています。誰かが助けてくれますか?
サンプル Excel シート: VLookup 範囲シート
"CustomerNumberList"
Cust_Num Company Name
10001 CompanyX
10002 CompanyX
10003 CompanyX
10004 CompanyX
10005 CompanyX
10006 CompanyX
10007 CompanyX
10008 CompanyX
10009 CompanyX
10010 CompanyY
10011 CompanyY
10012 CompanyY
10013 CompanyY
10014 CompanyY
10015 CompanyY
10016 CompanyY
10017 CompanyY
インフォメーションシート
Sheet1
OrderID Cust_Num Company Name Customer Name ShipLocation Cost Price
1 10001 VLookupHere Rand Dallas $1.00 $2.00
2 10002 " Rand Chicago $2.00 $3.00
3 10003 " Rand Florida $1.00 $2.00
4 10004 " Wel California $1.33 $2.33
5 10005 Wel Dallas $1.33 $2.33
6 10006 Wel Chicago $1.33 $2.33
7 10007 Sead Florida $1.33 $2.33
8 10008 Sead California $1.33 $2.33
9 10009 Sead Dallas $1.33 $2.33
10 10010 Sead Chicago $1.33 $2.33
11 10011 Sead Florida $1.33 $2.33
12 10012 Sead California $1.33 $2.33
13 10013 Campe Dallas $1.33 $2.33
14 10014 Campe Chicago $1.33 $2.33
15 10015 Campe Florida $1.33 $2.33
16 10016 Campe California $1.33 $2.33
17 10017 Campe Dallas $1.33 $2.33
コード:
Dim Nu As Range
Dim cmpny As Range
Dim v As Integer
Dim y As Integer
Dim ws As Worksheet
Dim Offset As Range
Dim result As String
'
'
'
'Insert company name into each row based on cust_num
Set Nu = Sheets("CustomerNumberList").Range("A1") 'set Nu = cust_name region
Set cmpny = Sheets("CustomerNumberList").Range("A1").CurrentRegion 'set cmpny = cell range
For Each ws In Sheets
If ws.Name Like "*Sheet*" Then
v = ws.Range("A" & Rows.Count).End(xlUp).Row 'set v = number of rows
Set Nm = ws.Rows(1).Find("cust_num", LookAt:=xlPart)
For y = 0 To v
Set Offset = Nm.Offset(1 + y, 0)
result = Application.WorksheetFunction.VLookup(Nu.Value, cmpny, 2, Offset, False) **'ERROR HERE**
Next
End If
Next
End Sub