以前の記事「【VB.NET】DataGridViewで選択した行を取得する」でDataGridViewで選択した行がSelectedRowsプロパティに格納される順序について記載しました。
今回は、データの表示順に合わせてSelectedRowsプロパティの内容を整列する方法について記載します。

以下、サンプルです。
※この方法は、一番単純な例です。
Public Class Form1
Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

'整列のため、SelectedRowsの格納順を取得する
Dim SortList() As Integer
ReDim SortList(DataGridView1.SelectedRows.Count - 1)
Dim idx As Integer = 0
For Each row As DataGridViewRow In DataGridView1.SelectedRows
SortList(idx) = row.Index
idx += 1
Next

'格納順を表示上の行番号順にする
Array.Sort(SortList)

'整列した行番号順にデータを取得する
Dim dgvRow() As DataGridViewRow
ReDim dgvRow(DataGridView1.SelectedRows.Count)
idx = 0
For Each sortno As Integer In SortList
dgvRow(idx) = DataGridView1.SelectedRows(sortno)
Debug.Print("DgvRow" & idx & ") : " & sortno)
idx += 1
Next
End Sub
End Class

【補足事項】
・整列には、Array.Sort()を利用しています。
 →自前で整列のコードを記載しても構いません。
・パフォーマンスが悪い場合、ジェネリック(List)等を利用して高速化を図りましょう。