использование VLookup при условии if, Добрый вечер, подскажите пожалуйста, имеется код, который запускается при активации листа. По данному коду пересчитывается весь диапазон на листе Оплата, как изменить код, чтобы расчет шел только по тем строкам, где в листе «Оплата» в столбце «Е» условие
Private Sub worksheet_activate ()
Dim LastRow As Long, i As Long
LastRow = Ceels(Rows.Count, 2).End(x1Up).Row
For i = 3 to LastRow
Range(“N” & i).value = Application.IfError(Application.VLookup(
Sheets(“Оплата”).Range(“F” & i), Sheets(“Начисления”).Range(“H:N”), 7, 0), “”)
Next
End Sab
Извините, я сообщение написала в описание темы. Добрый вечер, подскажите пожалуйста, имеется код, который запускается при активации листа. По данному коду пересчитывается весь диапазон на листе Оплата, как изменить код, чтобы расчет шел только по тем строкам, где в листе «Оплата» в столбце «Е» условие "ФИО"? если данных удовлетворяющим условию на листе "Начисления" нет, то оставить "ФИО"
End Sab - это, конечно, хорошо (лучше Sub), но ещё лучше небольшой пример в файле Excel (не рабочий ваш файл с секретной информацией, а пример с любыми данными). А так по вашему описанию в код нужно добавить
Код
If Sheets("Оплата").Range("E" & i).Value = "ФИО" Then
'тут ваша формула
End If
А может там вообще не ВПР (VLookup) нужен, а СУММЕСЛИМН(), в параметрах которого прописать условие на наличие ФИО
New, спасибо) не думаю что там подойдет суммеслимн, там считать не нужно, только вставить значение, если условие совпадает. Но и после добавления этой части кода не хочет. Отправлю пример таблицы, может я что-то упускаю
Private Sub Worksheet_Activate()
Dim LastRow As Long, i As Long
With Sheets("Оплата")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 3 To LastRow
.Range("E" & i).value = Application.IfError(Application.VLookup(.Range("F" & i), Sheets("Начисления").Range("H2:N10000"), 7, 0), .Range("E" & i).value)
Next
End With
End Sub