TL;DR
Excelのソートはキーが多いと面倒なので、GUIのソート設定を使わずにソートできるようなマクロを書いた
本文
サンプル
ソート順の設定方法
表のひとつ上の行を、ソート条件として扱う。
サンプルでは、第1キー:項目4、第2キー:項目3、第3キー:項目2(降順)。
ソート範囲の設定方法
2通りの方法を使えるようにした。
- ソート範囲を選択
- ヘッダ行も含めたソート範囲を選択。サンプルの画像の状態。
- ソート範囲を任意のセルに記載して、そのセルを選択
- サンプル画像で言うと、C3セルを選択した状態。
ソート実行
Alt+F8→sortHelper
親切設計よりも、いつでもどこでも使える汎用性を重視した。
ソート範囲をしくじってたら気づけるように、ソート範囲の最終セル(サンプルではG15)を終了後に選択するようにした
ソース
苦労したところ
ソート順を必ずしも1,2,3...の連番じゃなくてもいいようにしたかったので、ソート条件をDictionaryに格納してキーでソートしてCollectionに格納し直すという面倒なことをした。