Seems unnecessary here, but:
Sub test()
Dim fl_macro As String
Dim Dic As Scripting.Dictionary
Dim vData
Dim DataOut()
Dim n As Long
start_timer = Timer
fl_macro = ThisWorkbook.Name
Set Dic = CreateObject("Scripting.Dictionary")
Set ws_data = Workbooks(fl_macro).Worksheets("Data_And_Output")
With ws_data
vData = .Range(.Cells(2, "A"), .Cells(108770, "C")).Value2
End With
For n = LBound(vData, 1) To UBound(vData, 1)
If Dic.Exists(CStr(vData(n, 1))) Then
If vData(n, 2) > Dic(CStr(vData(n, 1))) Then Dic(CStr(vData(n, 1))) = vData(n, 2)
Else
Dic.Add CStr(vData(n, 1)), vData(n, 2)
End If
Next n
For n = LBound(vData, 1) To UBound(vData, 1)
vData(n, 3) = Dic(CStr(vData(n, 1)))
Next n
With ws_data
.Range(.Cells(2, "A"), .Cells(108770, "C")).Value2 = vData
End With
End Sub
would be one way.
Bookmarks