我想创建一个将vlookup公式应用于整个列的vlookup宏
我被困在这一行Range("K3").Formula = MyStringVar1
,因为这只适用于单元格K3。非常感谢任何帮助:)
Sub vlookDemo()
Dim MyStringVar1 As Variant
Dim LastRow As Long
LastRow = Range("C" & Rows.Count).End(xlUp).Row
On Error Resume Next
MyStringVar1 = Application.WorksheetFunction.VLookup(Range("D3:D" & LastRow), _
Worksheets("ProductList").Range("A4:B294"), 2, False)
On Error GoTo 0
If IsEmpty(MyStringVar1) Then
""
End If
Range("K3").Formula = MyStringVar1
End Sub
答案 0 :(得分:0)
我想你想要一个公式R1C1,如下所示:
.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC4,ProductList!R4C1:R294C2, 2, FALSE),"""")"
应用于范围变为:
Option Explicit
Public Sub PopulateFormulas()
Dim lastRow As Long
With ActiveSheet
lastRow = .Range("C" & Rows.Count).End(xlUp).row
.Range("K3:K" & lastRow).FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC4,ProductList!R4C1:R294C2, 2, FALSE),"""")"
End With
End Sub
这导致表格中的公式如:
第一个,在K3中,是:
=IFERROR(VLOOKUP($D3,ProductList!$A$4:$B$294, 2, FALSE),"")
这些将列K填充到最后一行(基于C列)。
R1C1公式表示使用相对引用,因此相同的公式可以应用于所有单元格,并将在其自己的行中拾取列D.查找范围必须具有固定的单元格引用,因此它不会移位。整个事情被包装在IFERROR中,如果找不到值,则用“”替换错误文本。
此问题中提供了有关R1C1的一些信息:What is the function of FormulaR1C1?