2017-05-31 97 views
1

我有一個表在這樣的工作簿的Sheet1:VBA查找功能

section | Class 
11  | 2 
11  | 2 
12  | 3 
12  | 3 
12  | 3 
13  | 4 

Sheet 2上我有這樣的事情:

section | Class 
11  |  
11  | 
11  | 
11  | 
11  | 
11  | 
12  |  
12  |  
12  | 
12  | 
12  |  
13  | 

我想用在Sheet2中的查找功能從sheet1中獲取Class的值,這是僅爲第一個單元格生成的宏:

ActiveCell.FormulaR1C1 = _ 
     "=LOOKUP(RC[-1],Sheet1!RC[-1]:R[4]C[-1],Sheet1!RC:R[4]C)" 

我的實現人的公式是:

=LOOKUP(A2,Sheet1!A2:A6,Sheet1!B2:B6) 

我希望它像:

=LOOKUP(A2,Sheet1!$A$2:A6,Sheet1!$B$2:B6) 

但這不允許的。 任何人都可以幫我填寫類列嗎?

回答

2

嘗試這樣的事情...

Sub GetClasses() 
Dim wsSource As Worksheet, wsDest As Worksheet 
Dim lr1 As Long, lr2 As Long 
Application.ScreenUpdating = False 
Set wsSource = Sheets("Sheet1") 
Set wsDest = Sheets("Sheet2") 
lr1 = wsSource.Cells(Rows.Count, 1).End(xlUp).Row 
lr2 = wsDest.Cells(Rows.Count, 1).End(xlUp).Row 
wsDest.Range("B2:B" & lr2).Formula = "=LOOKUP(A2,'" & wsSource.Name & "'!$A$2:$A$" & lr1 & ",'" & wsSource.Name & "'!$B$2:$B$" & lr1 & ")" 
Application.ScreenUpdating = True 
End Sub 
+0

完美的作品! – SQLserving

+0

感謝您的反饋。 :) – sktneer

2

R1C1引用樣式是有點奇怪在第一,但你應該試着去了解它,如果你打算做VBA。

方括號表示相對參考,沒有括號平均絕對參考:

R1C4 =第1行,第4列= $D$1
R[1]C[-2] =相對於其中式是,1行下和2列到左邊。
[0]變成什麼都沒有,所以R[0]C[1]實際上會變成RC[1],意思是同一行,一列在右邊。

所以你的情況,該公式應該是這樣的:

ActiveCell.FormulaR1C1 = _ 
    "=LOOKUP(RC[-1],Sheet1!R2C1:R[4]C[-1],Sheet1!R2C2:R[4]C)" 

您可以讓Excel顯示的公式是這樣,它可能有助於理解這個公式類型的作品。在文件/選項/公式中,勾選「R1C1參考樣式」。

或者,您可以使用.Formula而不是像@sktneer那樣使用.FormulaR1C1。開始時比較容易,但你會發現它在VBA中的使用更加有限。

+0

感謝您對R1C1的快速介紹。前兩點比我經歷的許多網站更有意義。肯定會更多地瞭解它。它相對優雅。 – SQLserving