Excel宏vba上vlookup公式

问题描述:

嗨,我是新的Excel宏。我想为vlookup创建一个宏,以便我可以应用到很多单元格,但它不起作用。Excel宏vba上vlookup公式

Sub haha() 

Dim wb As Workbook 
Dim ws, ws1 As Worksheet 
Set wb = ActiveWorkbook 
Set ws = ActiveWorkbook.Sheets(1) 
Set ws1 = ActiveWorkbook.Sheets(2) 
wb.Activate 

ws1.Select 

Range("E1").Formula = "=+VLOOKUP(" & ws1.Range("C6") & "," & ws.Range("c7:d10") & ",2,FALSE)" 

End sub 

我想在当前工作表中查找一个值到另一个工作表的范围以返回唯一值。请帮忙! :)

+1

在vlookup中的两个范围之后放置'.Address'。 –

+0

注意谢谢! – koky

只需更换这3行:

wb.Activate 
ws1.Select 
Range("E1").Formula = "=+VLOOKUP(" & ws1.Range("C6") & "," & ws.Range("c7:d10") & ",2,FALSE)" 

与此:

ws1.Range("E1").Formula = "=VLOOKUP(C6," & ws.Range("C7:D10").Address(External:=1) & ",2,FALSE)" 

ws1.Range("C6")部分不需要sheetaddress,在这种情况下,该细胞是在公式所在的同一张表中ws1.Range("C6")将始终返回C6

至于ws.Range("c7:d10")部分,您需要“外部参照”,因为它指的是另一张纸。尽管Range.Address PropertyExternal引用包含文件名,但它会在公式进入同一工作簿时被删除。

+0

嗨EEM,这个选择也很好!1我有很多向你们学习! :) 谢谢! – koky

+0

请注意,如果您使用'.Address(External:= 1)',则不需要添加'.Worksheet.Name'部分,因为地址功能将包含它。 – EEM

+0

注意谢谢!只是一个简单的问题。我从教科书中了解到宏和vba。但是每当我在现实生活中申请,我都会遇到一些问题。我们如何改进我们的宏观技能,以便我们能够在此论坛中帮助其他人?任何网站,视频或书籍推荐。 – koky

看看这个。

Sub haha() 

Dim wb As Workbook 
Dim ws As Worksheet, ws1 As Worksheet 
Dim rng As Range 
Set wb = ActiveWorkbook 
Set ws = ActiveWorkbook.Sheets(1) 
Set ws1 = ActiveWorkbook.Sheets(2) 
wb.Activate 

Set rng = ws.Range("c7:d10") 
ws1.Range("E1").Formula = "=VLOOKUP(" & ws1.Range("C6").Address & "," & rng.Worksheet.Name & "!" & rng.Address & ",2,FALSE)" 

End Sub 
+0

你好,它完美的作品!只是一个查询 - 为什么我们在vlookup中使用.Worksheet.Name和.Address?非常感谢! :) – koky

+0

因为在lookuparray中我们必须提供它所属的表名。 –

+0

非常感谢!真的很感谢帮助! – koky