Страницы: 1
RSS
использование 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
Изменено: Kcuxa_xa - 14.05.2022 01:09:48
 
Извините, я сообщение написала в описание темы. Добрый вечер, подскажите пожалуйста, имеется код, который запускается при активации листа. По данному коду пересчитывается весь диапазон на листе Оплата, как изменить код, чтобы расчет шел только по тем строкам, где в листе «Оплата» в столбце «Е» условие "ФИО"? если данных удовлетворяющим условию на листе "Начисления" нет, то оставить "ФИО"
 
End Sab - это, конечно, хорошо (лучше Sub), но ещё лучше небольшой пример в файле Excel (не рабочий ваш файл с секретной информацией, а пример с любыми данными). А так по вашему описанию в код нужно добавить
Код
If Sheets("Оплата").Range("E" & i).Value = "ФИО" Then
'тут ваша формула
End If

А может там вообще не ВПР (VLookup) нужен, а СУММЕСЛИМН(), в параметрах которого прописать условие на наличие ФИО
Изменено: New - 14.05.2022 01:41:59
 
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
 
New, спасибо огромное все получилось👌
Страницы: 1
Наверх