Как применить vlookup с ошибкой со значением 0 и возобновить - PullRequest
1 голос
/ 04 февраля 2020

Я использую диапазон vlookup для применения формулы в последнем пустом столбце. он работает нормально, но если есть ошибка, он показывает пустую ячейку, ну, я не против, но, когда формула применяется снова в следующем столбце, значение перемещается в пустую ячейку предыдущего столбца, так как одна из ячеек в предыдущем столбце была пустой из-за ошибки.

Поэтому мне нужно дать значение 0 или «ошибка» вместо пробела.

Sub GET_BHAV()

    Dim OpenWs As Worksheet, bhavWs As Worksheet
    Dim OpenLastRow As Long, bhavLastRow As Long, x As Long
    Dim bhavRng As Range

    Set OpenWs = ThisWorkbook.Worksheets("Open")

    Workbooks.Open "C:\Users\playt\Desktop\STACK\VANGU\cm07JAN2020bhav.csv"

    Set bhavWs = Workbooks("cm07JAN2020bhav.csv").Worksheets("cm07JAN2020bhav")

    bhavLastRow = bhavWs.Range("A" & Rows.Count).End(xlUp).Row
    OpenLastRow = OpenWs.Range("A" & Rows.Count).End(xlUp).Row

    Set bhavRng = bhavWs.Range("A2:G" & bhavLastRow)

    For x = 2 To OpenLastRow
        On Error Resume Next
        OpenWs.Cells(x, Columns.Count).End(xlToLeft).Offset(0, 1).Value = Application.WorksheetFunction.VLookup( _
                                                                          OpenWs.Range("A" & x).Value, bhavRng, 3, Flase)
    Next x

End Sub

1 Ответ

1 голос
/ 04 февраля 2020

Вам нужно перехватить (обработать) ошибку VLOOKUP, если она не найдет совпадение.

Попробуйте код, приведенный ниже в разделе VLOOKUP:

' define a new variable
Dim VlookUpVal As Variant

With OpenWs ' Using With statement
    For x = 2 To OpenLastRow
        ' read the value of VLOOKUP to variant
        VlookUpVal = Application.VLookup(.Range("A" & x).Value, bhavRng, 3, False)

        ' check if VLOOKUP returned an Error
        If IsError(VlookUpVal) Then
            .Cells(x, .Columns.Count).End(xlToLeft).Offset(0, 1).Value = 0
        Else
            .Cells(x, .Columns.Count).End(xlToLeft).Offset(0, 1).Value = VlookUpVal
        End If
    Next x
End With
...