我有这个记录的宏,我想转换为普通的VBA宏代码,并将公式从AE2
复制到lastrow。
"=VLOOKUP(RC[-22],'[test.xlsx]Sheet3'!C5:C6,2,0)" ' this is from another workbook
尝试转换为VBA。
dim wbSLW as workbook
dim wbSLWDir as String
wbSLWDir = "C\Documents\test.xlsx" 'this is not the constant directory or file name
set wbSLW = workbooks.open(wbSLWDir)
ThisWorkbook.Activate
With Thisworkbook.Sheets(1)
.Range("AE2") = "=VLOOKUP(I2," & wbSLW & "!E:F,2,0)" ' error line
end with
当我转换它时,它会返回Object does not support this property or method
。
答案 0 :(得分:2)
更改您的设置,使其不使用R1C1格式,方法是转到(Excel 2010)设置/公式,然后取消选中R1C1参考样式。重新录制您的宏,然后进行编辑。您不应该有任何“RC”引用,但是如果您这样做,则将其中包含“RC”的所有引用更改为与“I2”中相同的样式。
答案 1 :(得分:0)
清理录制的代码:
With ActiveSheet.Range("AE2")
.FormulaR1C1 = "=VLOOKUP(RC[-22],Temp!C[-30]:C[-29],2,0)"
.AutoFill Destination:=Range("AE2:AE182"), Type:=xlFillDefault
End With 'ActiveSheet
RC[-22]
是指在您拥有公式的单元格前22列的单元格。此处AE2
是初始单元格,因此RC[-22]
= {{1 }}
I2
和C[-30]
分别指的是在您拥有公式的单元格之前的30和29列的列
这里C[-29]
,AE2
= C[-30]
和A
= C[-29]
更改了公式:
B
或不转换公式:
Sheets(1).Range(perNum & 2).Formula = "=VLOOKUP(I2,Temp!A:B,2,0)"
答案 2 :(得分:0)
假设活动工作表名称为Sheet1
ActiveCell.Value = Application.WorksheetFunction.VLookup(Sheets("Sheet1").Range("I2"), Sheets("Temp").Range("A:B"), 2, 0)
答案 3 :(得分:0)
如果我理解正确,您想用vba
代码替换下面一行中的工作簿名称:
=VLOOKUP(RC[-22],'[**test.xlsx**]Sheet3'!C5:C6,2,0)
不更改任何其他代码的最简单方法是:
=VLOOKUP(RC[-22],'[**" & wbSLW.Name & "**]Sheet3'!C5:C6,2,0)