Sub test()
Dim dic As Object, a, i As Long, z As String, myStatus, e
Dim Status1 As Integer, Status2 As Integer, ii As Integer
Set dic = CreateObject("Scripting.Dictionary")
dic.comparemode = vbTextCompare
myStatus = Array("Released","Low","Med","High","EOL")
a = Workbooks("example1.xls").Sheets("Sheet1").Range("a1").CurrentRegion.Value
For i = 2 To UBound(a,2)
z = Left(a(i,1),6)
If Not dic.exists(z) Then
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,2),myStatus(ii),1)>0 Then Status1 = ii + 1
If InStr(1,a(i,3),myStatus(ii),1)>0 Then Status2 = ii + 1
Next
dic.add z, WorksheetFunction.Max(Status1,Status2)
Else
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,2),myStatus(ii),1)>0 Then Statsu1 = ii + 1
If InStr(1,a(i,3),myStatsu(ii),1)>0 Then Status2 = ii + 1
Next
dic(z) = WorksheetFunction.Max(dic(z),Status1,Status2)
End If
Status1 = 0 : Status2 = 0
Next
Erase a
With Workbooks("example2.xls").Sheets("Sheet1")
For Each r In .Range("b1",.Range("b" & Rows.Count).End(xlUp))
z = Left(r.Value,6)
If dic.exists(z) Then
If dic(z) > 0 Then r.Offset(,6).Value = myStatus(dic(z)-1)
End If
Next
End With
Set dic = Nothing
End Sub
hi, i tried running the code and it says there is a syntax error at
Code:myStatus = Array("Released","Low",Med","High","EOL")
Sub test()
Dim dic As Object, a, i As Long, z As String, myStatus, e
Dim Status1 As Integer, Status2 As Integer, ii As Integer
Set dic = CreateObject("Scripting.Dictionary")
dic.comparemode = vbTextCompare
myStatus = Array("Released","Low","Med","High","EOL")
a = Workbooks("example1.xls").Sheets("Sheet1").Range("a1").CurrentRegion.Value
For i = 2 To UBound(a,2)
z = Left(a(i,1),6)
If Not dic.exists(z) Then
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,2),myStatus(ii),1)>0 Then Status1 = ii + 1 : Exit For
Next
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,3),myStatus(ii),1)>0 Then Status2 = ii + 1 : Exit For
Next
dic.add z, WorksheetFunction.Max(Status1,Status2)
Else
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,2),myStatus(ii),1)>0 Then Statsu1 = ii + 1 : Exit For
Next
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,3),myStatsu(ii),1)>0 Then Status2 = ii + 1 : Exit For
Next
dic(z) = WorksheetFunction.Max(dic(z),Status1,Status2)
End If
Status1 = 0 : Status2 = 0
Next
Erase a
With Workbooks("example2.xls").Sheets("Sheet1")
For Each r In .Range("b1",.Range("b" & Rows.Count).End(xlUp))
z = Left(r.Value,6)
If dic.exists(z) Then
If dic(z) > 0 Then r.Offset(,6).Value = myStatus(dic(z)-1)
End If
Next
End With
Set dic = Nothing
End Sub
Sub test()
Dim dic As Object, a, i As Long, z As String, myStatus, e
Dim Status1 As Integer, Status2 As Integer, ii As Integer
Set dic = CreateObject("Scripting.Dictionary")
dic.comparemode = vbTextCompare
myStatus = Array("Released","Low","Med","High","EOL")
a = Workbooks("example1.xls").Sheets("Sheet1").Range("a1").CurrentRegion.Value
For i = 2 To UBound(a,2)
z = Left(a(i,1),6)
If Not dic.exists(z) Then
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,2),myStatus(ii),1)>0 Then Status1 = ii + 1 : Exit For
Next
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,3),myStatus(ii),1)>0 Then Status2 = ii + 1 : Exit For
Next
dic.add z, WorksheetFunction.Max(Status1,Status2)
Else
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,2),myStatus(ii),1)>0 Then Statsu1 = ii + 1 : Exit For
Next
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,3),myStatsu(ii),1)>0 Then Status2 = ii + 1 : Exit For
Next
dic(z) = WorksheetFunction.Max(dic(z),Status1,Status2)
End If
Status1 = 0 : Status2 = 0
Next
Erase a
With Workbooks("example1.xls").Sheets("Sheet1")
.Range("g1").Resize(dic.count) = Application.Transpose(dic.keys)
.Range("h1").Resize(dic.Count)= Application.Transpose(dic.items)
End With
Set dic = Nothing
End Sub
Sub test()
Dim dic As Object, a, i As Long, z As String, myStatus, e
Dim Status1 As Integer, Status2 As Integer, ii As Integer
Set dic = CreateObject("Scripting.Dictionary")
dic.comparemode = vbTextCompare
myStatus = Array("Released","Low","Med","High","EOL")
a = Workbooks("example1.xls").Sheets("Sheet1").Range("a1").CurrentRegion.Value
For i = 2 To UBound(a,2)
z = Left(a(i,1),InStr(a(i,1),"-")-1)
If Not dic.exists(z) Then
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,2),myStatus(ii),1)>0 Then Status1 = ii + 1 : Exit For
Next
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,3),myStatus(ii),1)>0 Then Status2 = ii + 1 : Exit For
Next
dic.add z, WorksheetFunction.Max(Status1,Status2)
Else
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,2),myStatus(ii),1)>0 Then Statsu1 = ii + 1 : Exit For
Next
For ii = 0 To UBound(myStatus)
If InStr(1,a(i,3),myStatsu(ii),1)>0 Then Status2 = ii + 1 : Exit For
Next
dic(z) = WorksheetFunction.Max(dic(z),Status1,Status2)
End If
Status1 = 0 : Status2 = 0
Next
Erase a
With Workbooks("example2.xls").Sheets("Sheet1")
For Each r In .Range("b1",.Range("b" & Rows.Count).End(xlUp))
z = Left(r.Value,6)
If dic.exists(z) Then
If dic(z) > 0 Then r.Offset(,6).Value = myStatus(dic(z)-1)
End If
Next
End With
Set dic = Nothing
End Sub