使用vlookup函数将一个工作簿转移到另一个工作簿,此代码" & Rg.Parent.Parent.Name & "!" & Rg.Address(ReferenceStyle:=xlR1C1)
返回wb2第一张的范围,尽管已经设置了第三张wb2 Set Rg = wb2.Sheets(3).Range("A3:Z10000")
的范围(Rg)..为什么愤怒(Rg)没有返回第三张wb2以及如何返回wb2特定表格的愤怒?
Sub Vlkuprangcall()
Dim strColumn As String
Dim Rg As Range
Dim wb2 As Workbook
Set wb2 = Workbooks.Open("C:\Users\ashokkumar.d\Desktop\Test\IC Raphael\Janalakshmi\MIS\MIS.xlsx")
Set Rg = wb2.Sheets(3).Range("A3:Z10000")
Application.Workbooks(2).Activate
With ActiveSheet
a = ActiveCell.Column
lastrow = 100
strColumn = Split(ActiveCell.Address, "$")(1)
ActiveCell.FormulaR1C1 = "=vlookup(RC[-15]," & Rg.Parent.Parent.Name & "!" & Rg.Address(ReferenceStyle:=xlR1C1) & ",6,False)"
ActiveCell.AutoFill Destination:=Range(ActiveCell, Range(strColumn & lastrow))
end Sub
答案 0 :(得分:2)
您可以使用Address
,第4个参数为xlExternal
,它会添加Worksheet
对象的名称,还会添加Workbook
对象&#39的名字。
因此,您的FormulaR1C1
行应为:
ActiveCell.FormulaR1C1 = "=vlookup(RC[-15]," & Rg.Address(True, True, xlR1C1, xlExternal) & ",6,False)"
注意 :您应尽量避免使用Activate
,ActiveSheet
和ActiveCell
,而应使用完全限定的{{ 1}}和Range
个对象。
答案 1 :(得分:1)
使用Address
会更容易,但要解决您的问题,Rg.Parent
或Rg.Worksheet
会获得对包含该范围的作品表的引用。您使用了Rg.Parent.Parent
,它是对作品 book 的引用。假设您使用的是跨工作簿公式,则需要两个公式。
ActiveCell.FormulaR1C1 = "=vlookup(RC[-15],'[" & Rg.Parent.Parent.Name & "]" & rg.Worksheet.Name & "'!" & Rg.Address(ReferenceStyle:=xlR1C1) & ",6,False)"