行並べ替え

選択範囲の文字列を比較し、行の並べ替えを行うマクロです。
- 通常選択・行選択・矩形選択に対応しています。
- Unicode または Shift_JIS風の並べ替えが行えます。
- 大文字/小文字、ひらがな/カタカナを区別するかを選択できます。
※表示行での並べ替えには対応していません。論理行のみです。
※数値での並べ替えには対応していません。
※半角/全角を区別しない並べ替えには対応していません。
※処理速度が遅い上、処理中はCPUをフルに使用します。
(作者の環境では、100行の処理に0.1秒、4000行に7秒、1万行に30秒かかりました)
ステータスバーに処理に要した時間が表示されますので参考にしてください。
| 並べ替え(Unicode) | Unicode順での並べ替えを実行します。 |
|---|---|
| 並べ替え(Shift_JIS風) | Shift_JIS風での並べ替えを実行します。 ※Shift_JISとは一部の並び順が異なるため「風」と付いています。 ※Shift_JISにない文字は、昇順降順問わず最後尾にまとめられます。 |
| 昇順or降順 で並べる | 昇順(A→Z)か降順(Z→A)かを切り替えます。 |
| 大文字/小文字を区別 | 大文字(ABC)と小文字(abc)を区別するかしないかを切り替えます。 区別する場合、大文字が先に並びます(昇順時)。 |
| ひらがな/カタカナを区別 | ひらがなとカタカナを区別するかしないかを切り替えます。 区別する場合、ひらがなが先に並びます(昇順時)。 |
Shift_JIS風の並び順
MicroSoftコードページ932 (参考→Wikipedia) の文字表を基本に、以下の変更を加えています。
- NEC/IBM記号類(①~")は、全角記号の次。㍻は㍼の次に並ぶ。
- ローマ数字の小文字形(ⅰ~ⅹ)は、大文字形(Ⅰ~Ⅹ)の次に並ぶ。
ソースコード
ダウンロード→ファイル:行並べ替え.zip
開発者メモ
- 「数値での並べ替え」対応 →面倒くさいので予定なし
数値の判定が面倒くさいため対応予定はありません。
空白文字や通貨記号や3桁区切りカンマ(,)の処理、負数(-)や小数(.)の判定など、対処すべきことがいろいろあって力尽きました。
- 「半角/全角を区別」対応 →面倒くさいので予定なし
半角カナの変換が面倒くさいため対応予定はありません。
Mery の Document.Selection.ChangeWidth 関数が String型 でも使えれば話は簡単なのですが、参照できなかったので諦めました。そもそも個人的に、半角カナほとんど使わないし…
- 処理速度の改善 →お手上げ
数千行以上での処理速度が遅すぎますが、改善予定はありません。というか、自分の腕前では「焼け石に水」程度の改善しかできないでしょう。
コメント
処理速度の改善を図ってみましたので,ご参考まで (ks)
スポンサーリンク