Функция поиска VBA

У меня есть таблица в 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 для получения значения для класса из листа 1, и это макрос, который генерируется только для первой ячейки:

 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, подобные этому, это может помочь понять, как работает этот тип формул. В «Файл / Параметры / Формулы» отметьте «Стиль ссылки R1C1».

В качестве альтернативы вы можете использовать .Formula вместо .FormulaR1C1 как @sktneer. Сначала это проще, хотя вы обнаружите, что он более ограничен в своих применениях в VBA.

Давайте будем гением компьютера.