2016-10-04 299 views
1

嗨,我是新的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

回答

1

只需更換這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

2

看看這個。

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