
Option Explicit
Sub abc()
Dim a, b, i, j, k, p, m, n
a = Range("a1:b" & [b1].End(xlDown).Row + 1).Value
ReDim pos(1 To UBound(a), 1 To 3)
For i = 1 To UBound(a) - 1
If Len(a(i + 1, 1)) Or i = UBound(a) - 1 Then
m = m + 1
pos(m, 1) = a(p + 1, 1): pos(m, 2) = p + 1: pos(m, 3) = i
p = i
End If
Next
Call bsort(pos, 1, m, 1, 3, 1)
b = a: p = 0
For i = 1 To m
For j = pos(i, 2) To pos(i, 3)
n = n + 1
For k = 1 To UBound(a, 2)
b(n, k) = a(j, k)
Next
Next
Call bsort(b, p + 1, n, 2, UBound(b, 2), 2)
p = n
Next
[d1].Resize(UBound(b), 2) = b
End Sub
Function bsort(a, first, last, left, right, key)
Dim i, j, k, t
For i = first To last - 1
For j = first To last + first - 1 - i
If a(j, key) > a(j + 1, key) Then
For k = left To right
t = a(j, k): a(j, k) = a(j + 1, k): a(j + 1, k) = t
Next
End If
Next
Next
End Function