Исходя из вашего описания проблемы и проблемы, которую вы хотите решить, я считаю, что следующий код должен работать по мере необходимости.
Sub find()
Dim rng As Range
Dim depti As Integer
Dim dept As String
Set rng = Sheet1.Range("A1:B250") 'range of names in col A and dept in col B
For depti = 3 To 250
dept = "=IfError(Vlookup(A" & depti & ",'" & Sheet1.Name & "'!" & rng.Address & ",2,FALSE), """")"
Range("B" & depti) = dept
Next
End Sub
Примечания
Я исключил переменную namerng
, потому что она не нужна для обновленного уравнения.Так как VLookup принимает только одно значение в качестве первого параметра, это значение должно зависеть от значения переменной цикла, так же как и диапазон назначения.
Я также избежал кавычек, чтобы функция моглабыть действительным и добавленным в имя листа1.Так, чтобы адрес диапазона указывал на правильный лист (с одинарными кавычками, если в имени листа есть пробел).
Предупреждение:как это закодировано, уравнение будет вставлено в тот лист, который является активным во время выполнения кода.Это означает, что если Sheet1
активен, отделы будут перезаписаны циклической формулой.