「行並べ替え」の版間の差分
ナビゲーションに移動
検索に移動
細 文字が見辛い部分を改訂 |
行並べ替え(rev.6)公開 |
||
| 1行目: | 1行目: | ||
<div style="float:right">__TOC__</div> | <div style="float:right">__TOC__</div> | ||
選択範囲(矩形可)の文字列を比較し、論理行単位で並べ替えるマクロです。 | |||
* Unicode順 または Shift_JIS風の並べ替えが行えます。 | * Unicode順 または Shift_JIS風の並べ替えが行えます。 | ||
* | * 大文字/小文字、半角/全角英数カナ、ひらがな/カタカナを区別するかを選択できます。 | ||
【注意点】 | 【注意点】 | ||
* 処理速度が遅い上、処理中はCPUをフルに使用します(作者の環境では、1万行の処理に約1~2秒かかりました)。<br>ステータスバーに処理に要した時間が表示されますので参考にしてください。 | * 処理速度が遅い上、処理中はCPUをフルに使用します(作者の環境では、1万行の処理に約1~2秒かかりました)。<br>ステータスバーに処理に要した時間が表示されますので参考にしてください。 | ||
| 15行目: | 14行目: | ||
|- | |- | ||
!並べ替え(Shift_JIS風) | !並べ替え(Shift_JIS風) | ||
|Shift_JIS風での並べ替えを実行します。<br> | |Shift_JIS風での並べ替えを実行します。<br>Shift_JIS (CP932) にない文字は、最後尾に並びます(昇順時)。<br>※Shift_JIS とは一部の並び順が異なるため「風」と付いています。 | ||
|- | |- | ||
!昇順 or 降順 | !昇順 or 降順 | ||
|昇順 (A→Z) | |昇順 (A→Z) 並びか降順 (Z→A) 並びかを切り替えます。 | ||
|- | |- | ||
! | !辞書順 or 数値順 | ||
| | |辞書順 (1→10→2) 並びか数値順 (1→2→10) 並びかを切り替えます。<br>数値順では、半角数字列を「正の整数値の順」に並べます。 | ||
|- | |- | ||
!大文字/ | !大文字/小文字を区別する | ||
| | |大文字と小文字を区別するかを切り替えます。<br>区別しない場合、大文字は小文字とみなして並べます。 | ||
|- | |- | ||
!ひらがな/ | !半角/全角英数カナを区別する | ||
| | |英数カナの半角と全角を区別するかを切り替えます。<br>区別しない場合、全角英数は半角、半角カナは全角とみなして並べます。 | ||
|- | |||
!ひらがな/カタカナを区別する | |||
|ひらがなとカタカナを区別するかを切り替えます。<br>区別しない場合、ひらがなはカタカナとみなして並べます。 | |||
|} | |} | ||
==ソースコード== | ==ソースコード== | ||
ダウンロード→ [[メディア:行並べ替え.zip|行並べ替え.zip]] (rev. | ダウンロード→ [[メディア:行並べ替え.zip|行並べ替え.zip]] (rev.6) | ||
* 拙作ですがアイコンファイルを同梱してあります。<br>Mery の My Macros フォルダにアイコンファイル (行並べ替え.ico) を配置すれば、ツールバーにアイコンが読み込まれます。 | * 拙作ですがアイコンファイルを同梱してあります。<br>Mery の My Macros フォルダにアイコンファイル (行並べ替え.ico) を配置すれば、ツールバーにアイコンが読み込まれます。 | ||
| 37行目: | 39行目: | ||
==更新履歴== | ==更新履歴== | ||
[[ファイル:行並べ替え.zip]] | [[ファイル:行並べ替え.zip]] | ||
* <b>2014/10/12 (rev.6)</b> | |||
** 「辞書順/数値順」設定を追加。 | |||
** <span style="color:#c00;">「半角/全角を区別」の対象から記号を除外</span>し、「半角/全角<span style="color:#c00;">英数カナ</span>を区別」に変更。 | |||
**: 半角/全角の変換が一対一で定義できず、区別の対象となる文字が分かりにくいため。 | |||
** ポップアップメニューにアクセラレータキー(アクセスキー)を割り当て。 | |||
** 半角/全角区別と大/小文字区別の配置を入れ替え。 | |||
** 大/小文字、半角/全角、かな/カナ区別の項目をチェックボックスに変更。 | |||
* <b>2014/07/27 (rev.5)</b> | * <b>2014/07/27 (rev.5)</b> | ||
** アイコンファイルを同梱し、読み込むようにした。 | ** アイコンファイルを同梱し、読み込むようにした。 | ||
** 並べ替え実行後、行全体を範囲選択するようにした。 | ** 並べ替え実行後、行全体を範囲選択するようにした。 | ||
** 矩形選択で折り返し行を含む場合の不具合を修正。 | ** 矩形選択で折り返し行を含む場合の不具合を修正。 | ||
** | **: 折り返し行を探査するため、通常より処理時間が伸びます(1万表示行で約4秒増加)。 | ||
** rev.4 の処理高速化手法の一部(コード変換)を取り下げ。 | ** rev.4 の処理高速化手法の一部(コード変換)を取り下げ。 | ||
** | **: マクロの処理速度では大量処理にも限界があるので、可読性を優先しておくことに。 | ||
** 半角/全角変換表の仕様を ["正規表現","文字"] → [/正規表現/,"文字"] に変更。 | ** 半角/全角変換表の仕様を ["正規表現","文字"] → [/正規表現/,"文字"] に変更。 | ||
** 半角/全角区別の対象に " ' \ の3字を追加。 | ** 半角/全角区別の対象に " ' \ の3字を追加。 | ||
** 大/小文字区別の処理を toLowerCase() → toLocaleLowerCase() に変更。 | ** 大/小文字区別の処理を toLowerCase() → toLocaleLowerCase() に変更。 | ||
** | **: Mery の大文字/小文字変換と同様、OS の言語設定を考慮するようにした。 | ||
** かな/カナ区別の処理を半角/全角区別と同じ仕様に変更(ひらがなが多い場合に高速化)。 | ** かな/カナ区別の処理を半角/全角区別と同じ仕様に変更(ひらがなが多い場合に高速化)。 | ||
** かな/カナ区別の対象に ゝ ゞ の2字を追加。 | ** かな/カナ区別の対象に ゝ ゞ の2字を追加。 | ||
| 79行目: | 89行目: | ||
* ローマ数字の小文字形 ⅰ~ⅹ は、大文字形 Ⅰ~Ⅹ の次に並ぶ。 | * ローマ数字の小文字形 ⅰ~ⅹ は、大文字形 Ⅰ~Ⅹ の次に並ぶ。 | ||
=== | ===数値順の並び順および注意点=== | ||
* 半角数字列を「正の整数値の順」で並べ替えます。同値の場合は辞書順となります。例> 002→02→2 | |||
* | * <span style="color:#c00;">全角数字列は対象外です。</span>ただし「半角/全角英数カナを区別」<b>しない</b>場合は半角とみなされるため、数値順となります。 | ||
* | * <span style="color:#c00;">負数 (-12)/小数 (0.12)/分数 (1/2)/指数 (1.2e3) などには対応していません。</span> | ||
* 仕様上、10の65520乗 以上の数値は扱えず、辞書順となります。 | |||
===大文字/小文字を区別しない並び順=== | ===大文字/小文字を区別しない並び順=== | ||
| 88行目: | 99行目: | ||
* ギリシャ文字やローマ数字など、大小の区別が存在する文字も区別しなくなります。 | * ギリシャ文字やローマ数字など、大小の区別が存在する文字も区別しなくなります。 | ||
* 小さい <b>っ ぁ ゃ</b> などは「捨て仮名」「小書き文字」と呼び、小文字とは異なる概念の文字なので対象外です。 | * 小さい <b>っ ぁ ゃ</b> などは「捨て仮名」「小書き文字」と呼び、小文字とは異なる概念の文字なので対象外です。 | ||
===半角/全角英数カナを区別しない並び順=== | |||
※区別の対象となる文字は、ソースコードの「半角/全角変換表」で定義されています。 | |||
* 全角英数は半角、半角カナは全角とみなして並べ替えます。 | |||
* <span style="color:#c00;">半角/全角記号は対象外です。</span> | |||
===ひらがな/カタカナを区別しない並び順=== | |||
※区別の対象となる文字は、ソースコードの「かな/カナ変換表」で定義されています。 | |||
* ひらがなはカタカナとみなして並べ替えます。このため、<b>゛ ゜ ゟ</b> は <b>ぁ</b> より前に並ぶようになります。 | |||
==開発者メモ== | ==開発者メモ== | ||
; | ;数値順・自然順での並べ替え ⇒<s style="color:#999;">予定なし</s> 正の整数値の順のみ対応 | ||
: | :空白文字・通貨記号・3桁区切りの考慮、負数・小数・分数などの対応は難題が多いため、実装の予定は現状ありません。 | ||
;プラグイン化 | ;プラグイン化 | ||
: | :マクロよりプラグインの方が高速に処理できると思いますが、自分は JavaScript くらいしか組めないので実現の予定はありません。 | ||
==コメント== | ==コメント== | ||
* [http://merysmacro.seesaa.net/?1377428899 処理速度の改善を図ってみました]ので,ご参考まで (ks) | * [http://merysmacro.seesaa.net/?1377428899 処理速度の改善を図ってみました]ので,ご参考まで (ks) | ||
** ありがとうございます。おかげさまで処理速度を大幅に改善することができました。 (masme) | ** ありがとうございます。おかげさまで処理速度を大幅に改善することができました。 (masme) | ||
2014年10月12日 (日) 09:59時点における版
選択範囲(矩形可)の文字列を比較し、論理行単位で並べ替えるマクロです。
- Unicode順 または Shift_JIS風の並べ替えが行えます。
- 大文字/小文字、半角/全角英数カナ、ひらがな/カタカナを区別するかを選択できます。
【注意点】
- 処理速度が遅い上、処理中はCPUをフルに使用します(作者の環境では、1万行の処理に約1~2秒かかりました)。
ステータスバーに処理に要した時間が表示されますので参考にしてください。
| 並べ替え(Unicode) | Unicode順での並べ替えを実行します。 |
|---|---|
| 並べ替え(Shift_JIS風) | Shift_JIS風での並べ替えを実行します。 Shift_JIS (CP932) にない文字は、最後尾に並びます(昇順時)。 ※Shift_JIS とは一部の並び順が異なるため「風」と付いています。 |
| 昇順 or 降順 | 昇順 (A→Z) 並びか降順 (Z→A) 並びかを切り替えます。 |
| 辞書順 or 数値順 | 辞書順 (1→10→2) 並びか数値順 (1→2→10) 並びかを切り替えます。 数値順では、半角数字列を「正の整数値の順」に並べます。 |
| 大文字/小文字を区別する | 大文字と小文字を区別するかを切り替えます。 区別しない場合、大文字は小文字とみなして並べます。 |
| 半角/全角英数カナを区別する | 英数カナの半角と全角を区別するかを切り替えます。 区別しない場合、全角英数は半角、半角カナは全角とみなして並べます。 |
| ひらがな/カタカナを区別する | ひらがなとカタカナを区別するかを切り替えます。 区別しない場合、ひらがなはカタカナとみなして並べます。 |
ソースコード
ダウンロード→ 行並べ替え.zip (rev.6)
- 拙作ですがアイコンファイルを同梱してあります。
Mery の My Macros フォルダにアイコンファイル (行並べ替え.ico) を配置すれば、ツールバーにアイコンが読み込まれます。
更新履歴
- 2014/10/12 (rev.6)
- 「辞書順/数値順」設定を追加。
- 「半角/全角を区別」の対象から記号を除外し、「半角/全角英数カナを区別」に変更。
- 半角/全角の変換が一対一で定義できず、区別の対象となる文字が分かりにくいため。
- ポップアップメニューにアクセラレータキー(アクセスキー)を割り当て。
- 半角/全角区別と大/小文字区別の配置を入れ替え。
- 大/小文字、半角/全角、かな/カナ区別の項目をチェックボックスに変更。
- 2014/07/27 (rev.5)
- アイコンファイルを同梱し、読み込むようにした。
- 並べ替え実行後、行全体を範囲選択するようにした。
- 矩形選択で折り返し行を含む場合の不具合を修正。
- 折り返し行を探査するため、通常より処理時間が伸びます(1万表示行で約4秒増加)。
- rev.4 の処理高速化手法の一部(コード変換)を取り下げ。
- マクロの処理速度では大量処理にも限界があるので、可読性を優先しておくことに。
- 半角/全角変換表の仕様を ["正規表現","文字"] → [/正規表現/,"文字"] に変更。
- 半角/全角区別の対象に " ' \ の3字を追加。
- 大/小文字区別の処理を toLowerCase() → toLocaleLowerCase() に変更。
- Mery の大文字/小文字変換と同様、OS の言語設定を考慮するようにした。
- かな/カナ区別の処理を半角/全角区別と同じ仕様に変更(ひらがなが多い場合に高速化)。
- かな/カナ区別の対象に ゝ ゞ の2字を追加。
- 2013/09/19 (rev.4) ファイル:行並べ替え r4.zip
- ks 氏の改善策を参考に、処理を高速化(作者の環境で1万行に2秒→1秒に短縮)。
- 並べ替え(Shift_JIS風) 時、Shift_JIS にない文字の扱いが変わりました。
rev.3 までは、昇順/降順を問わず最後尾に並ぶようになっていましたが、
rev.4 からは、昇順/降順の設定に従うようになっています。
- 2013/09/19 (rev.3) ファイル:行並べ替え r3.zip
- 「半角/全角を区別」設定を追加。
- 選択範囲がない場合にエラーが出る不具合を修正。
ポップアップメニューで「並べ替えが行えない」ことを注意するようにした。 - 並べ替え(Unicode) 時にも Shift_JIS 用のデータを処理していたムダを解消し、高速化。
- 2013/08/29 (rev.2) ファイル:行並べ替え r2.zip
- ks 氏の改善策を参考に、処理を高速化(作者の環境で1万行に30秒→2秒に短縮)。
- 並べ替え(Unicode) 時に、水平タブが空行より前に並ぶバグがあります(rev.3 で修正)。
- 2013/08/25 (rev.1)
- 初版公開。
不具合(解決)
矩形選択で折り返し行を含む場合
※rev.5 で解決
折り返された行を矩形選択していると、正しく並べ替えられません(画像参照)。
仕様
Shift_JIS風の並び順
※Shift_JIS風の並び順は、ソースコードの「Shift_JIS(CP932)索引」で定義されています。
Microsoft コードページ932 (参考: Wikipedia) の定義を基本に、以下の変更を加えてあります。
- NEC特殊/IBM拡張記号類 ①~" は、全角記号の次。㍻は㍼の次に並ぶ。
- ローマ数字の小文字形 ⅰ~ⅹ は、大文字形 Ⅰ~Ⅹ の次に並ぶ。
数値順の並び順および注意点
- 半角数字列を「正の整数値の順」で並べ替えます。同値の場合は辞書順となります。例> 002→02→2
- 全角数字列は対象外です。ただし「半角/全角英数カナを区別」しない場合は半角とみなされるため、数値順となります。
- 負数 (-12)/小数 (0.12)/分数 (1/2)/指数 (1.2e3) などには対応していません。
- 仕様上、10の65520乗 以上の数値は扱えず、辞書順となります。
大文字/小文字を区別しない並び順
- 大文字は小文字とみなして並べ替えます。このため、[ ] \ ^ _ は A より前に並ぶようになります。
- ギリシャ文字やローマ数字など、大小の区別が存在する文字も区別しなくなります。
- 小さい っ ぁ ゃ などは「捨て仮名」「小書き文字」と呼び、小文字とは異なる概念の文字なので対象外です。
半角/全角英数カナを区別しない並び順
※区別の対象となる文字は、ソースコードの「半角/全角変換表」で定義されています。
- 全角英数は半角、半角カナは全角とみなして並べ替えます。
- 半角/全角記号は対象外です。
ひらがな/カタカナを区別しない並び順
※区別の対象となる文字は、ソースコードの「かな/カナ変換表」で定義されています。
- ひらがなはカタカナとみなして並べ替えます。このため、゛ ゜ ゟ は ぁ より前に並ぶようになります。
開発者メモ
- 数値順・自然順での並べ替え ⇒
予定なし正の整数値の順のみ対応 - 空白文字・通貨記号・3桁区切りの考慮、負数・小数・分数などの対応は難題が多いため、実装の予定は現状ありません。
- プラグイン化
- マクロよりプラグインの方が高速に処理できると思いますが、自分は JavaScript くらいしか組めないので実現の予定はありません。
コメント
- 処理速度の改善を図ってみましたので,ご参考まで (ks)
- ありがとうございます。おかげさまで処理速度を大幅に改善することができました。 (masme)
スポンサーリンク

