我对VBA很新,我遇到了VLOOKUP代码问题。
我有3张。 Sheet2(供应商)包含部件号和&供应商,表3(成本)包含部件号和&成本。 Sheet1(部件号)包含标准部件号列表。 Sheets2和3中的数据会定期更新。我希望VBA在供应商列表(Sheet2.ColumnA)中查找部件号(Sheet1.ColumnA),并将供应商名称(Sheet2.ColumnC)粘贴到Sheet1.ColumnB中。一旦我弄清楚如何执行此操作,我将修改代码以与成本类似,并将其放入Sheet1.ColumnC。
这是我到目前为止所拥有的:
Sub Lookup()
Application.ScreenUpdating = False
Dim Lr As Integer
Lr = Worksheets("Part Numbers").Cells(Rows.Count, 1).End(xlUp).Row ' last row
For i = 1 To Lr ' last row
Worksheets("Part Numbers").Cells(i + 1, 2) = "=VLOOKUP(RC[-1],'Supplier'!A:C,3,0)"
If i = "" Then Exit For
Next i
End Sub
当我执行此代码时,Sheet1.ColumnB填充(取自单元格A)
"=VLOOKUP(A2,'Supplier'!A:B:B,3,0)"
有谁可以告诉我为什么当我输入A:C?时显示A:B:B?
答案 0 :(得分:0)
我的理解一直是混合R1C1和A1符号是有风险的,并且可能会产生意外和不良结果,因为Excel决定如何解释公式。请尝试以下方法:
Worksheets("Part Numbers").Cells(i + 1, 2) = "=VLOOKUP(RC[-1],'Supplier'!C1:C3,3,0)"
或者:
Worksheets("Part Numbers").Cells(i + 1, 2) = "=VLOOKUP(A" & (i + 1) & ",'Supplier'!A:C,3,0)"
在这种特殊情况下,我可能会选择后一种方法,因为C1:C3对于它是A1还是R1C1表示法来说有点混乱。如果您不总是根据A列查找,则可以使用较小的转换方法确定列索引中的列字母。