Sub Check() Dim i As Double Range("e5:w70000").Clear For i = 1 To 70000 x = Range("B4").Offset(i, 0) If (IsNull(x)) Then GoTo Done If Len(x) < 1 Then GoTo Done y = Range("C4").Offset(i, 0) len1 = Sqr(x * x + y * y) If (x >= 0 And y >= 0) Then If x = 0 Then tan1 = 2 Else tan1 = y / x End If If (Abs(tan1) <= 1) Then Range("E4").Offset(i, 0) = tan1 Range("E4").Offset(i, 10) = len1 count1 = count1 + 1 Else Range("F4").Offset(i, 0) = tan1 Range("F4").Offset(i, 10) = len1 count2 = count2 + 1 End If GoTo ReadNext End If If (x < 0 And y >= 0) Then tan1 = y / x If (Abs(tan1) <= 1) Then Range("H4").Offset(i, 0) = tan1 Range("H4").Offset(i, 10) = len1 count4 = count4 + 1 Else Range("G4").Offset(i, 0) = tan1 Range("G4").Offset(i, 10) = len1 count3 = count3 + 1 End If GoTo ReadNext End If If (x < 0 And y < 0) Then tan1 = y / x If (Abs(tan1) <= 1) Then Range("I4").Offset(i, 0) = tan1 Range("I4").Offset(i, 10) = len1 count5 = count5 + 1 Else Range("J4").Offset(i, 0) = tan1 Range("J4").Offset(i, 10) = len1 count6 = count6 + 1 End If GoTo ReadNext End If If (x >= 0 And y < 0) Then If x = 0 Then tan1 = -2 Else tan1 = y / x End If If (Abs(tan1) <= 1) Then Range("K4").Offset(i, 0) = tan1 Range("K4").Offset(i, 10) = len1 count7 = count7 + 1 Else Range("L4").Offset(i, 0) = tan1 Range("L4").Offset(i, 10) = len1 count8 = count8 + 1 End If GoTo ReadNext End If ReadNext: Next Done: Range("E4").Offset(-1, 0) = count1 Range("F4").Offset(-1, 0) = count2 Range("G4").Offset(-1, 0) = count3 Range("H4").Offset(-1, 0) = count4 Range("I4").Offset(-1, 0) = count5 Range("J4").Offset(-1, 0) = count6 Range("K4").Offset(-1, 0) = count7 Range("L4").Offset(-1, 0) = count8 DOGrouping MsgBox ("Done Rows Processed =" & i) End Sub Sub DOGrouping() For j = 0 To 7 Grp1 = 0 Grp2 = 0 Grp3 = 0 Grp4 = 0 Grp5 = 0 For i = 1 To 70000 val1 = Range("O4").Offset(i, j).Value x = Range("B4").Offset(i, 0) If (IsNull(x)) Then GoTo Done If Len(x) < 1 Then GoTo Done If IsEmpty(val1) Then GoTo GetNext If (val1 < 200) Then Grp1 = Grp1 + 1 GoTo GetNext End If If (val1 < 300) Then Grp2 = Grp2 + 1 GoTo GetNext End If If (val1 < 350) Then Grp3 = Grp3 + 1 GoTo GetNext End If If (val1 < 550) Then Grp4 = Grp4 + 1 GoTo GetNext End If Grp5 = Grp5 + 1 GetNext: Next Done: Range("Y4").Offset(1, j) = Grp1 Range("Y4").Offset(2, j) = Grp2 Range("Y4").Offset(3, j) = Grp3 Range("Y4").Offset(4, j) = Grp4 Range("Y4").Offset(5, j) = Grp5 Next MsgBox ("Done") End Sub