[COLOR="Navy"]Sub[/COLOR] MG20Sep02
'[COLOR="Green"][B]modified[/B][/COLOR]
[COLOR="Navy"]Dim[/COLOR] Rng [COLOR="Navy"]As[/COLOR] Range, Dn [COLOR="Navy"]As[/COLOR] Range, n [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] Num [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] R1 [COLOR="Navy"]As[/COLOR] Range, R2 [COLOR="Navy"]As[/COLOR] Range, Q [COLOR="Navy"]As[/COLOR] Variant
[COLOR="Navy"]Dim[/COLOR] ErrorCount [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] Num1 [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] Num2 [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long[/COLOR]
[COLOR="Navy"]Set[/COLOR] Rng = Range("D23", Range("D" & Rows.Count).End(xlUp))
ErrorCount = 0
[COLOR="Navy"]With[/COLOR] CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] Dn [COLOR="Navy"]In[/COLOR] Rng
[COLOR="Navy"]If[/COLOR] Dn.Offset(, -2).Value = 2100 Or Dn.Offset(, -2).Value = 3000 [COLOR="Navy"]Then[/COLOR]
Num = IIf(Dn.Offset(, -2).Value = 2100, 0, 1)
[COLOR="Navy"]If[/COLOR] Not .Exists(Dn.Value) [COLOR="Navy"]Then[/COLOR]
[COLOR="Navy"]If[/COLOR] Dn.Offset(, -2).Value = 2100 [COLOR="Navy"]Then[/COLOR]
[COLOR="Navy"]Set[/COLOR] R1 = Dn.Offset(, -2)
[COLOR="Navy"]ElseIf[/COLOR] Dn.Offset(, -2).Value = 3000 [COLOR="Navy"]Then[/COLOR]
[COLOR="Navy"]Set[/COLOR] R2 = Dn.Offset(, -2)
[COLOR="Navy"]End[/COLOR] If
.Add Dn.Value, Array(R1, R2)
[COLOR="Navy"]Else[/COLOR]
Q = .Item(Dn.Value)
[COLOR="Navy"]If[/COLOR] Q(Num) [COLOR="Navy"]Is[/COLOR] Nothing [COLOR="Navy"]Then[/COLOR]
[COLOR="Navy"]Set[/COLOR] Q(Num) = Dn.Offset(, -2)
[COLOR="Navy"]Else[/COLOR]
[COLOR="Navy"]Set[/COLOR] Q(Num) = Union(Q(Num), Dn.Offset(, -2))
[COLOR="Navy"]End[/COLOR] If
.Item(Dn.Value) = Q
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]Set[/COLOR] R1 = Nothing: [COLOR="Navy"]Set[/COLOR] R2 = Nothing
[COLOR="Navy"]Next[/COLOR]
[COLOR="Navy"]Dim[/COLOR] K [COLOR="Navy"]As[/COLOR] Variant, c [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] p [COLOR="Navy"]As[/COLOR] Range, A [COLOR="Navy"]As[/COLOR] [COLOR="Navy"]Long,[/COLOR] t, tt
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] K [COLOR="Navy"]In[/COLOR] .keys
c = 0: A = 0
[COLOR="Navy"]If[/COLOR] Not .Item(K)(0) [COLOR="Navy"]Is[/COLOR] Nothing [COLOR="Navy"]Then[/COLOR]
A = .Item(K)(0).Count
A = 0
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]If[/COLOR] Not .Item(K)(1) [COLOR="Navy"]Is[/COLOR] Nothing [COLOR="Navy"]Then[/COLOR]
[COLOR="Navy"]If[/COLOR] .Item(K)(0) [COLOR="Navy"]Is[/COLOR] Nothing Or Not .Item(K)(1)(1).Offset(, 3).Value = 1 [COLOR="Navy"]Then[/COLOR]
'[COLOR="Green"][B]This counts entire "3000" range when start cell is not 1 or there is no "2100"[/B][/COLOR]
If Not .Item(K)(1) Is Nothing Then '[COLOR="Green"][B]''''''''''''''[/B][/COLOR]
ErrorCount = ErrorCount + .Item(K)(1).Count '[COLOR="Green"][B]''''''''''[/B][/COLOR]
End If '[COLOR="Green"][B]''''''''''''[/B][/COLOR]
.Item(K)(1).Offset(, 3).Interior.Color = vbRed
.Item(K)(1).Offset(, 3).Font.Color = vbYellow
.Item(K)(1).Offset(, 3).Font.Bold = True
'[COLOR="Green"][B] .Item(K)(1).Offset(, -1).Interior.Color = vbRed[/B][/COLOR]
'[COLOR="Green"][B] .Item(K)(1).Offset(, -1).Font.Color = vbYellow[/B][/COLOR]
'[COLOR="Green"][B] .Item(K)(1).Offset(, -1).Font.Bold = True[/B][/COLOR]
'[COLOR="Green"][B] .Item(K)(1).Offset(, -1).Value = "Errors in this Row"[/B][/COLOR]
[COLOR="Navy"]Else[/COLOR]
[COLOR="Navy"]For[/COLOR] [COLOR="Navy"]Each[/COLOR] Dn [COLOR="Navy"]In[/COLOR] .Item(K)(1)
c = c + 1
[COLOR="Navy"]If[/COLOR] Not Dn.Offset(, 3).Value = c [COLOR="Navy"]Then[/COLOR]
'[COLOR="Green"][B]This counts the errors when the "1,2,3, ect" count is incorrect[/B][/COLOR]
ErrorCount = ErrorCount + 1 '[COLOR="Green"][B]'''''[/B][/COLOR]
Dn.Offset(, 3).Interior.Color = vbRed
Dn.Offset(, 3).Font.Color = vbYellow
Dn.Offset(, 3).Font.Bold = True
'[COLOR="Green"][B] .Item(K)(1).Offset(, -1).Interior.Color = vbRed[/B][/COLOR]
'[COLOR="Green"][B] .Item(K)(1).Offset(, -1).Font.Color = vbYellow[/B][/COLOR]
'[COLOR="Green"][B] .Item(K)(1).Offset(, -1).Font.Bold = True[/B][/COLOR]
'[COLOR="Green"][B] .Item(K)(1).Offset(, -1).Value = "Errors in this Row"[/B][/COLOR]
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]Next[/COLOR] Dn
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]End[/COLOR] If
[COLOR="Navy"]Next[/COLOR] K
[COLOR="Navy"]End[/COLOR] With
MsgBox "Total Number of Potential Errors Found = " & ErrorCount & Chr(10) & Chr(10) & "Also,check the '[COLOR="Green"][B]Raw Data' tab for potential comma counts issues"[/B][/COLOR]
[COLOR="Navy"]End[/COLOR] [COLOR="Navy"]Sub[/COLOR]