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