ワークシートのSortメソッドを使わずに並べ替えを行なう。

ワークシート上のソートは並べ替えで説明しましたが、場合によってはワークシートを使わずに並べ替えたいこともあると思います。
Sortメソッドを使わない利点!?   単一ワークシート上のデータの並べ替えであればSortメソッドを使えば良いと思います。
ですが、外部のテキストなどのデータの並べ替えであったりすれば一旦ワークシートに取り込んで並べ替えてから再度テキストに書き出すという手間が掛かります。 この他、数値と数字文字列が混在していたり、ワークシートに収容し切れない件数だったり、複数シートに分断されているとかで、Sortメソッドでは対応できないケースもあると思います。
Sortメソッドが使えるケースなのにあえてVBAで独自に記述しなさいということではありません。



例えばテキストデータを読み込んで、ワークシートにデータを貼り付ける前にテーブル変数に格納しているような場合です。
そのようなケースでの対応のサンプルと、合わせてワークシートのSortメソッドに比べて処理時間がどうなのかということを含めて比較できるように作りました。

並べ替えの処理時間テスト
(画像をクリックすると、このページのサンプルがダウンロードできます)
画面のようにボタンが縦に並んでおり、一番下(シートのクリア)を除いて上から順にクリックしていくと順に処理されてボタンの上に処理した秒数が表示されます。

処理結果はこのような感じになります。
並び替えの処理結果
ご覧のようにSortメソッドが一番速い結果になりました。ですが、クイックソートの僅差であり1回配列変数に格納して並び替え、再度、配列変数からシートに戻していることを考えると問題ない速さだと言えます。
10000件のランダム値セットよりも速い結果になりました。
実際に比較してみたのは初めてで、私自身もビックリな結果でした。(ビックリなのはクイックソートの速さです)