我创建了一个宏来制作一些vlookups
并将值粘贴到另一张纸上。我使用宏录制器生成原始代码,然后尝试对其进行修改,使其成为一个函数,只需指示要查找数据的页面和表3中的范围以粘贴结果。
原始代码:
Sub Look1()
Range("B2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-1],Sheet4!C:C[3],2,FALSE)"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B13531")
Range("B2:B13531").Select
Range("C2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-2],Sheet4!C[-1]:C[2],3,FALSE)"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C13531")
Range("C2:C13531").Select
Range("D2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-3],Sheet4!C[-2]:C[1],4,FALSE)"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D13531")
Range("D2:D13531").Select
Columns("B:D").Select
Selection.Copy
Sheets("Sheet3").Select
Columns("D:F").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Sheet2").Select
Range("B2").Select
End Sub
功能尝试(这是不起作用的)。
功能:
Sub Look(Page As Variant, Rango As String)
Range("B2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-1],Page!C:C[3],2,FALSE)"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B13531")
Range("B2:B13531").Select
Range("C2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-2],Page!C[-1]:C[2],3,FALSE)"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C13531")
Range("C2:C13531").Select
Range("D2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(C[-3],Page!C[-2]:C[1],4,FALSE)"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D13531")
Range("D2:D13531").Select
Columns("B:D").Select
Selection.Copy
Sheets("Sheet3").Select
Columns(Rango).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Sheet2").Select
Range("B2").Select
End Sub
我将这个函数称为:
Look Sheet5, "G:I"
当我尝试运行它时,我会看到一个文件浏览的弹出窗口,标题为"更新值:Page",显然我做错了更换工作表和范围,但我无法弄清楚它是什么,我的功能不起作用。我要为35页页面执行此代码,所以我宁愿这样做调用函数。
答案 0 :(得分:0)
您的VLOOKUP中有错误,第一个参数需要是一个单元格,而不是列C[-1]
尝试RC[-1]
或类似的
答案 1 :(得分:0)
现在你要插入公式" = VLOOKUP(C [-1],Page!C:C [3],2,FALSE)",这是一个字符串,将会是直接插入细胞。如果要插入正确的工作表名称和范围,则需要将它们连接起来。如下所示:
"=VLOOKUP(C[-1]," & Page & "!" & Range & ", 2, FALSE)"
希望有所帮助。