Вот формула, которую я хотел бы вывести в каждую ячейку, идущую вниз по столбцу:

=VLOOKUP(CONCATENATE(E2,C2), WORKABILITY_INDEX!$A$1:$B$82, 2, FALSE)

Я использую утверждение, подобное приведенному ниже:

Last = Cells(Rows.Count, "A").End(xlUp).Row
    For i = Last To 2 Step -1
        If (Cells(i, "A").Value) <> "" Then
                 Cells(i, "L").Formula = "=VLookup(Concatenate(RC[-8],RC[-10]), ""WORKABILITY_INDEX!$A$1:$B$82"", 2, False)"
        End If
    Next i

1 ответ1

0

В вашем коде было несколько ошибок: во-первых, значение Last всегда было 1, а не номер последней строки.

Попробуй это:

Sub insertFormulas()
Last = ActiveSheet.UsedRange.Rows.Count
    For i = Last To 2 Step -1
        If (Cells(i, "A").Value) <> "" Then
            Cells(i, "L").Formula = "=VLOOKUP(CONCATENATE(E" & i & ",C" & i & "), WORKABILITY_INDEX!$A$1:$B$82, 2, FALSE)"
        End If
    Next i
End Sub

Ключевые изменения:
1. Я использовал свойство UsedRange активного листа, чтобы получить количество строк.
2. Я отказался от стиля формулы R1C1 и вместо этого использовал желаемый вывод формулы. Относительные ссылки на ячейки строятся путем объединения номера строки в строку формулы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .