#vba #if-statement #range #vlookup #copy-paste
#vba #if-statement #диапазон #vlookup #копировать-вставить
Вопрос:
Я пытаюсь выполнить VLookUp с помощью оператора IF / THEN.
Моя формула Excel будет:
=If(F2=G2,Today(),Vlookup(A2,[Range],15,FALSE))
Когда это выдаст мне ошибку «n / a», я бы использовал следующую формулу:
=IF(VALUE(LEFT(C2,1))>8,N2 28,N2 14))"
Я пытаюсь объединить их в макрос и не могу разобраться с синтаксисом.
Вот что я «пытаюсь» до сих пор:
Set WS2 = ThisWorkbook.Sheets("Sheet2")
Set WS4 = ThisWorkbook.Sheets("Sheet1 (2)")
For RowNumber = Range("M" amp; Rows.Count).End(xlUp).Row To 2 Step -1
With WS2
If Range("F" amp; RowNumber).Value = Range("G" amp; RowNumber).Value Then Range("O" amp; RowNumber) = (Now) Else Range("O" amp; RowNumber) = MyStringVar1 = Application.WorksheetFunction.VLookup(Range("A" amp; RowNumber), WS4.Range("A2:V5000").Value, 15, False)"
On Error GoTo 0
If MyStringVar1 = "" Then Range("O" amp; RowNumber).Value = Range("O" amp; RowNumber).Value = "=IF(VALUE(LEFT(Range("C" amp; RowNumber).Value,1))>8,Range("N" amp; RowNumber).Value 28,Range("N" amp; RowNumber).Value 14))" Else Range("O" amp; RowNumber).Value = MyStringVar1
End With
Next RowNumber
Ответ №1:
Я подозреваю, что вам не нужно прибегать к VBA. Если вы обернете свой VLOOKUP в формулу IFERROR, что-то вроде приведенного ниже, вы сможете управлять только формулами ячеек.
=IF(F2=G2,Today(),IFERROR(VLOOKUP(A2,$A$2:$V$5000,15,FALSE),IF(VALUE(LEFT(C2,1))>8,N2 28,N2 14)))
Комментарии:
1. Я пытаюсь заставить макрос выполнять множество других действий для этих электронных таблиц, поэтому я застрял с использованием кода VBA. Раньше я обходил это, используя формулу =IFNA .