Try running this macro on the worksheet with the values:
Sub test2()
Dim arrSize, i, k, j As Long, f As Boolean, v, v2
arrSize = 1
ReDim v(1 To arrSize)
i = 1
Do While Range("A" & i) <> ""
f = False
For k = 1 To UBound(v)
If v(k) <> "" Then
v2 = Split(v(k), Chr(9))
If Format(v2(0), "@") = Format(Range("B" & i), "@") Then
f = True
Exit For
End If
Else
f = True
v(k) = Range("B" & i) & Chr(9) & 0 & Chr(9) & 0 & Chr(9) & 0
Exit For
End If
Next
If Not f Then
arrSize = arrSize + 1
ReDim Preserve v(1 To arrSize)
v(UBound(v)) = Range("B" & i) & Chr(9) & 0 & Chr(9) & 0 & Chr(9) & 0
End If
Select Case Range("A" & i).Value
Case Is < 5: j = 1
Case 5 To 10: j = 2
Case Is > 10: j = 3
End Select
v2 = Split(v(k), Chr(9))
v(k) = v2(0) & Chr(9) & CLng(v2(1)) + IIf(j = 1, 1, 0) & Chr(9) & CLng(v2(2)) + IIf(j = 2, 1, 0) & Chr(9) & CLng(v2(3)) + IIf(j = 3, 1, 0)
i = i + 1
Loop
With Sheets.Add
.Range("B1:D1").Value = Array("< 5", "5 <= x <= 10", "> 10")
For k = 1 To UBound(v)
v2 = Split(v(k), Chr(9))
.Range("A" & k + 1 & ":D" & k + 1).Value = Array(v2(0), v2(1), v2(2), v2(3))
Next
With .Sort
.SortFields.Add Key:=Range("A2:" & Range("A" & rows.Count).End(xlUp).Address), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Header = xlYes
.SetRange Range("A1", Cells(Range("A" & rows.Count).End(xlUp).row, 4))
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
.SortFields.Clear
End With
End With
End Sub
Bookmarks