「行並べ替え」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Masme (トーク | 投稿記録)
改訂版(rev.2)公開。見出し「更新履歴」追加。ページレイアウト調整。
Masme (トーク | 投稿記録)
行並べ替え(rev.3/rev.4)公開。画像更新。
4行目: 4行目:
* 通常選択・行選択・矩形選択に対応しています。
* 通常選択・行選択・矩形選択に対応しています。
* Unicode または Shift_JIS風の並べ替えが行えます。
* Unicode または Shift_JIS風の並べ替えが行えます。
* 大文字/小文字、ひらがな/カタカナを区別するかを選択できます。
* 半角/全角、大文字/小文字、ひらがな/カタカナを区別するかを選択できます。


*※表示行での並べ替えには対応していません。論理行のみです。
*<span style="color:#c00;">※矩形選択時に、折り返し行を含んでいると正しく並べ替えられません。</span>
*※数値での並べ替えには対応していません。
*※数値での並べ替えには対応していません。
*※半角/全角を区別しない並べ替えには対応していません。
*※処理速度が遅い上、処理中はCPUをフルに使用します。<br>(作者の環境では、1万行の処理に約1秒かかりました)<br> ステータスバーに処理に要した時間が表示されますので参考にしてください。
*※処理速度が遅い上、処理中はCPUをフルに使用します。<br>(作者の環境では、1万行の処理に2秒かかりました)<br> ステータスバーに処理に要した時間が表示されますので参考にしてください。


[[ファイル:SortLineBySelection.png]]
[[ファイル:SortLineBySelection.png]]


{| border="1" cellspacing="0"
{| class="wikitable"
!並べ替え(Unicode)
!並べ替え(Unicode)
|Unicode順での並べ替えを実行します。
|Unicode順での並べ替えを実行します。
|-
|-
!並べ替え(Shift_JIS風)
!並べ替え(Shift_JIS風)
|Shift_JIS風での並べ替えを実行します。<br>※Shift_JISとは一部の並び順が異なるため「風」と付いています。<br>※Shift_JISにない文字は、昇順降順問わず最後尾にまとめられます。
|Shift_JIS風での並べ替えを実行します。<br>※Shift_JISとは一部の並び順が異なるため「風」と付いています。<br>※Shift_JISにない文字は、最後尾に並びます(昇順時)。
|-
|-
!昇順or降順 で並べる
!昇順 or 降順 で並べる
|昇順(A→Z)か降順(Z→A)かを切り替えます。
|昇順(A→Z)で並べるか降順(Z→A)で並べるかを切り替えます。
|-
!半角/全角を区別
|半角文字と全角文字を区別するかしないかを切り替えます。<br>区別しない場合、全角英数/記号は半角、半角カナは全角とみなして並べます。
|-
|-
!大文字/小文字を区別
!大文字/小文字を区別
|大文字(ABC)と小文字(abc)を区別するかしないかを切り替えます。<br>区別する場合、大文字が先に並びます(昇順時)。
|アルファベットの大文字と小文字を区別するかしないかを切り替えます。<br>区別しない場合、大文字は小文字とみなして並べます。
|-
|-
!ひらがな/カタカナを区別
!ひらがな/カタカナを区別
|ひらがなとカタカナを区別するかしないかを切り替えます。<br>区別する場合、ひらがなが先に並びます(昇順時)。
|ひらがなとカタカナを区別するかしないかを切り替えます。<br>区別しない場合、ひらがなはカタカナとみなして並べます。
|}
|}


==Shift_JIS風の並び順==
==既知の仕様==
 
===矩形選択内に折り返し行がある場合の問題===
矩形選択して並べ替えを実行したとき折り返された行があると、正しく並べ替えることができません(画像参照)。
 
[[ファイル:SortLineBySelection_PosView.png]]
 
===Shift_JIS風の並び順===
Microsoft コードページ932 (参考: [http://ja.wikipedia.org/wiki/Microsoft%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8932 Wikipedia]) の文字表を基本に、以下の変更を加えています。
Microsoft コードページ932 (参考: [http://ja.wikipedia.org/wiki/Microsoft%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8932 Wikipedia]) の文字表を基本に、以下の変更を加えています。


37行目: 46行目:


==ソースコード==
==ソースコード==
ダウンロード→[[ファイル:行並べ替え_r2.zip]]
ダウンロード→[[ファイル:行並べ替え_r4.zip]]


==更新履歴==
==更新履歴==
* 2013/08/29 (rev.2) [[ファイル:行並べ替え_r2.zip]]<br>ks 氏の改善策を参考に、処理を高速化(作者の環境で1万行に30秒→2秒)
* <b>2013/09/19 (rev.4)</b> [[ファイル:行並べ替え_r4.zip]]
* 2013/08/25 (rev.1) [[ファイル:行並べ替え.zip]]<br>初版公開
** ks 氏の改善策を参考に、処理を高速化(作者の環境で1万行に2秒→1秒に短縮)。
** <span style="color:#c00;">並べ替え(Shift_JIS風)時、Shift_JISにない文字の扱いが変わりました。<br>rev.3 までは、昇順/降順を問わず最後尾に並ぶようになっていましたが、<br>rev.4 では、昇順/降順の設定に従うようになっています。</span>
* <b>2013/09/19 (rev.3)</b> [[ファイル:行並べ替え_r3.zip]]
** 「半角/全角を区別」設定を追加。
** 選択範囲がない場合にエラーが出る不具合を修正。<br>ポップアップメニューで「並べ替えが行えない」ことを注意するようにした。
** 並べ替え(Unicode)時でもShift_JIS用のデータを処理していたムダを解消し、高速化。
** 並べ替え(Unicode)時に、水平タブが空行より先に並ぶ不具合を修正(rev.2 限定で発生)。
* <b>2013/08/29 (rev.2)</b> [[ファイル:行並べ替え_r2.zip]]
** ks 氏の改善策を参考に、処理を高速化(作者の環境で1万行に30秒→2秒に短縮)。
** <span style="color:#c00;">並べ替え(Unicode)時に、水平タブが空行より先に並ぶバグがあります</span>(rev.3 で修正)。
* <b>2013/08/25 (rev.1)</b> [[ファイル:行並べ替え.zip]]
** 初版公開。


==開発者メモ==
==開発者メモ==
* 「数値での並べ替え」対応 →面倒くさいので予定なし
* 「数値での並べ替え」対応 →予定なし
数値の判定が面倒くさいため対応予定はありません。<br>空白文字や通貨記号や3桁区切り(,)の処理、負数(-)や小数(.)の判定など、対処すべきことがいろいろあって力尽きました。
数値の判定が面倒くさいため対応予定は現状ありません。<br>空白文字や通貨記号や3桁区切り(,)、負数(-)や小数(.)の判定など、考慮することがいろいろあって力尽きました。
* 「半角/全角を区別」対応 →面倒くさいので予定なし
* 「半角/全角を区別」対応 →<s style="color:#999;">予定なし</s> rev.3 で対応
半角カナの変換が面倒くさいため対応予定はありません。<br>Mery の Document.Selection.ChangeWidth 関数が String型 でも使えれば話は簡単なのですが、参照できなかったので諦めました。そもそも個人的に、半角カナほとんど使わないし…
* 処理速度の改善 <s style="color:#999;">お手上げ</s> ks 氏の助力により改善できました
* 処理速度の改善 <s style="color:#999;">→お手上げ</s> ks 氏の助力により改善できました
処理する行数が多いほど時間がかかるのは変わらないので、ご注意ください。
* プラグイン化
* プラグイン化
インタプリタなマクロより、コンパイルしたプラグインの方が処理が高速だと思われます。しかしながら、自分は JavaScript くらいしか組めないので実現予定はありません。
インタプリタなマクロより、コンパイルしたプラグインの方が処理が高速だと思われます。しかしながら、自分は JavaScript くらいしか組めないので実現予定はありません。

2013年9月20日 (金) 00:15時点における版

選択範囲の文字列を比較し、行の並べ替えを行うマクロです。

  • 通常選択・行選択・矩形選択に対応しています。
  • Unicode または Shift_JIS風の並べ替えが行えます。
  • 半角/全角、大文字/小文字、ひらがな/カタカナを区別するかを選択できます。
  • ※矩形選択時に、折り返し行を含んでいると正しく並べ替えられません。
  • ※数値での並べ替えには対応していません。
  • ※処理速度が遅い上、処理中はCPUをフルに使用します。
    (作者の環境では、1万行の処理に約1秒かかりました)
     ステータスバーに処理に要した時間が表示されますので参考にしてください。

並べ替え(Unicode) Unicode順での並べ替えを実行します。
並べ替え(Shift_JIS風) Shift_JIS風での並べ替えを実行します。
※Shift_JISとは一部の並び順が異なるため「風」と付いています。
※Shift_JISにない文字は、最後尾に並びます(昇順時)。
昇順 or 降順 で並べる 昇順(A→Z)で並べるか降順(Z→A)で並べるかを切り替えます。
半角/全角を区別 半角文字と全角文字を区別するかしないかを切り替えます。
区別しない場合、全角英数/記号は半角、半角カナは全角とみなして並べます。
大文字/小文字を区別 アルファベットの大文字と小文字を区別するかしないかを切り替えます。
区別しない場合、大文字は小文字とみなして並べます。
ひらがな/カタカナを区別 ひらがなとカタカナを区別するかしないかを切り替えます。
区別しない場合、ひらがなはカタカナとみなして並べます。

既知の仕様

矩形選択内に折り返し行がある場合の問題

矩形選択して並べ替えを実行したとき折り返された行があると、正しく並べ替えることができません(画像参照)。

Shift_JIS風の並び順

Microsoft コードページ932 (参考: Wikipedia) の文字表を基本に、以下の変更を加えています。

  • NEC/IBM記号類 ①~" は、全角記号の次。㍻は㍼の次に並ぶ。
  • ローマ数字の小文字形 ⅰ~ⅹ は、大文字形 Ⅰ~Ⅹ の次に並ぶ。

ソースコード

ダウンロード→ファイル:行並べ替え r4.zip

更新履歴

  • 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用のデータを処理していたムダを解消し、高速化。
    • 並べ替え(Unicode)時に、水平タブが空行より先に並ぶ不具合を修正(rev.2 限定で発生)。
  • 2013/08/29 (rev.2) ファイル:行並べ替え r2.zip
    • ks 氏の改善策を参考に、処理を高速化(作者の環境で1万行に30秒→2秒に短縮)。
    • 並べ替え(Unicode)時に、水平タブが空行より先に並ぶバグがあります(rev.3 で修正)。
  • 2013/08/25 (rev.1) ファイル:行並べ替え.zip
    • 初版公開。

開発者メモ

  • 「数値での並べ替え」対応 →予定なし

数値の判定が面倒くさいため対応予定は現状ありません。
空白文字や通貨記号や3桁区切り(,)、負数(-)や小数(.)の判定など、考慮することがいろいろあって力尽きました。

  • 「半角/全角を区別」対応 →予定なし rev.3 で対応
  • 処理速度の改善 →お手上げ ks 氏の助力により改善できました
  • プラグイン化

インタプリタなマクロより、コンパイルしたプラグインの方が処理が高速だと思われます。しかしながら、自分は JavaScript くらいしか組めないので実現予定はありません。

コメント

スポンサーリンク