Как вы используете оператор IF / THEN для выполнения инструкции VLookUp по диапазону с учетом кода ошибки?

#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 .