VBA查找function

我有一张工作簿的sheet1中的表格,如下所示:

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

在表2中,我有这样的东西:

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

我想要使​​用sheet2中的查找函数来获取Sheet1的Class的值,并且这是仅为第一个单元格生成的macros:

 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) 

但这是不允许的。 有人可以帮我填写类列吗?

尝试这样的事情…

 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 

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显示这样的公式,这可能有助于了解这种公式types的工作原理。 在文件/选项/公式中,勾选“R1C1参考样式”。

或者,您可以使用.Formula而不是.FormulaR1C1作为@sktneer。 开始时比较容易,但是在VBA中使用它会更加有限。