我在工作簿的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中的lookup函数从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)
但这不允许。 有人可以帮我填写课程栏吗?
答案 0 :(得分: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
答案 1 :(得分:2)
R1C1参考样式起初有点奇怪,但是如果你打算做VBA,你应该尝试理解它。
方括号表示相对参考,没有括号表示绝对参考:
IPCache$i
=第1行,第4列= R1C4
$D$1
=相对于公式的位置,1行向下,2列向左
R[1]C[-2]
变为空,[0]
实际上会变成R[0]C[1]
,意思是同一行,右边一列。
所以在你的情况下,公式应如下所示:
RC[1]
您可以使用Excel显示这样的公式,这可能有助于了解此公式类型的工作原理。在文件/选项/公式中,勾选“R1C1参考样式”。
或者,您可以使用ActiveCell.FormulaR1C1 = _
"=LOOKUP(RC[-1],Sheet1!R2C1:R[4]C[-1],Sheet1!R2C2:R[4]C)"
代替.Formula
,而不是@sktneer。起初它更容易,但你会发现它在VBA中的用途更为有限。