I have applied vlookup to last available empty column in sheet "Open" its working fine, vlookup gives values with errors and i need to count them and the no. of errors should be sent to cell"A1" same sheet.
To count the no. of errors in last column with values, currently i have defined range manually GY2:GY200 I am not able to give auto range to count errors.
Sub GET_BHAV()
    Dim VlookUpVal As Variant
    Dim OpenWs As Worksheet, , bhavWs As Worksheet
    Dim OpenLastRow As Long, bhavLastRow As Long, x As Long
    Dim bhavRng As Range
    Dim lcol As Long
    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("A1:G" & bhavLastRow)
    With OpenWs
        For x = 2 To OpenLastRow
            'On Error Resume Next
            VlookUpVal = Application.VLookup(.Range("A" & x).Value, bhavRng, 3, False)
            'gives #NA value to cell with error
            If IsError(VlookUpVal) Then
                .Cells(x, .Columns.Count).End(xlToLeft).Offset(0, 1).Value = "#NA"
                ' highlights cell color on error
                .Cells(x, .Columns.Count).End(xlToLeft).Offset(0, 0).Interior.ColorIndex = 3
                OpenWs.Range("A1").Value = WorksheetFunction.CountIf(OpenWs.Range("GY2:GY200"), "#NA")
                w = OpenWs.Range("A1").Value
            Else
                .Cells(x, .Columns.Count).End(xlToLeft).Offset(0, 1).Value = VlookUpVal
            End If
        Next x
    End With
End Sub
 
    