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

提供: MeryWiki
ナビゲーションに移動 検索に移動
Masme (トーク | 投稿記録)
行並べ替え(rev.6)公開
MSY-07 (トーク | 投稿記録)
作成者の修正
 
(3人の利用者による、間の20版が非表示)
1行目: 1行目:
<div style="float:right">__TOC__</div>
== 概要 ==
 
選択範囲(矩形可)の文字列を比較し、論理行単位で並べ替えるマクロです。
選択範囲(矩形可)の文字列を比較し、論理行単位で並べ替えるマクロです。
* Unicode順 または Shift_JIS風の並べ替えが行えます。
* 大文字/小文字、半角/全角英数カナ、ひらがな/カタカナを区別するかを選択できます。
【注意点】
* 処理速度が遅い上、処理中はCPUをフルに使用します(作者の環境では、1万行の処理に約1~2秒かかりました)。<br>ステータスバーに処理に要した時間が表示されますので参考にしてください。


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


{| class="wikitable"
{|class="wikitable"
!※全行を
|<b style="color:#c00;">※非選択時に表示。</b>文書全体が並べ替えの対象になります。
|-
!並べ替え(Unicode)
!並べ替え(Unicode)
|Unicode順での並べ替えを実行します。
|Unicode順の並べ替えを実行します。
|-
|-
!並べ替え(Shift_JIS風)
!並べ替え(SJIS風)
|Shift_JIS風での並べ替えを実行します。<br>Shift_JIS (CP932) にない文字は、最後尾に並びます(昇順時)。<br>※Shift_JIS とは一部の並び順が異なるため「風」と付いています。
|Shift_JIS風の並べ替えを実行します。→ [[#並べ替え(SJIS風)]]
|-
|-
!昇順 or 降順
!昇順 - 降順
|昇順 (A→Z) 並びか降順 (Z→A) 並びかを切り替えます。
|昇順 (A→Z) か降順 (Z→A) かを切り替えます。
|-
|-
!辞書順 or 数値順
!文字順 - 数値順
|辞書順 (1→10→2) 並びか数値順 (1→2→10) 並びかを切り替えます。<br>数値順では、半角数字列を「正の整数値の順」に並べます。
|半角数字列の並べ方を切り替えます。<br>文字順 (1<10<2) は、文字として一字ずつ比較します。<br>数値順 (1<2<10) は、非負整数(正の整数)として比較します。→ [[#数値順]]
|-
|-
!大文字/小文字を区別する
!大文字/小文字を区別する
|大文字と小文字を区別するかを切り替えます。<br>区別しない場合、大文字は小文字とみなして並べます。
|しない場合、大文字を小文字とみなします。
|-
|-
!半角/全角英数カナを区別する
!全角/半角英数を区別する
|英数カナの半角と全角を区別するかを切り替えます。<br>区別しない場合、全角英数は半角、半角カナは全角とみなして並べます。
|しない場合、全角英数を半角とみなします。
|-
!半角/全角カナを区別する
|しない場合、半角カナを全角とみなします。
|-
|-
!ひらがな/カタカナを区別する
!ひらがな/カタカナを区別する
|ひらがなとカタカナを区別するかを切り替えます。<br>区別しない場合、ひらがなはカタカナとみなして並べます。
|しない場合、ひらがなをカタカナとみなします。
|}
|}


==ソースコード==
== ダウンロード ==
ダウンロード→ [[メディア:行並べ替え.zip|行並べ替え.zip]] (rev.6)
 
* 拙作ですがアイコンファイルを同梱してあります。<br>Mery の My Macros フォルダにアイコンファイル (行並べ替え.ico) を配置すれば、ツールバーにアイコンが読み込まれます。
 
==更新履歴==
[[ファイル:行並べ替え.zip]]
[[ファイル:行並べ替え.zip]]
; 内容
* 行並べ替え.ico
* 行並べ替え.js


* <b>2014/10/12 (rev.6)</b>
== 変更履歴 ==
** 「辞書順/数値順」設定を追加。
* rev.12 (2020-05-20)
** <span style="color:#c00;">「半角/全角を区別」の対象から記号を除外</span>し、「半角/全角<span style="color:#c00;">英数カナ</span>を区別」に変更。
** 設定を一時的に記憶する機能の不具合を修正
**: 半角/全角の変換が一対一で定義できず、区別の対象となる文字が分かりにくいため。
* rev.11 (2020-05-17)
** ポップアップメニューにアクセラレータキー(アクセスキー)を割り当て。
** .zip 内の Macros フォルダを除去。ファイルのみ収録
** 半角/全角区別と大/小文字区別の配置を入れ替え。
** .ico の更新日時を .js と同期するのをやめた
** /小文字、半角/全角、かな/カナ区別の項目をチェックボックスに変更。
** 複数選択時は並べ替え不可とした(対応に手間取るため)
* <b>2014/07/27 (rev.5)</b>
** 元に戻すで選択範囲も戻すようにした(Mery 3.0.1 以降)
** アイコンファイルを同梱し、読み込むようにした。
*** 都合上、<b style="color:#c00;">Mery 3.0.0 は動作対象外</b>とした
** 並べ替え実行後、行全体を範囲選択するようにした。
** ステータスバーの表示を「行並べ替え (処理時間: xx秒)」→「行並べ替え (xx秒)」に変更
** 矩形選択で折り返し行を含む場合の不具合を修正。
** break ラベル文 → new function 式 & return に変更
**: 折り返し行を探査するため、通常より処理時間が伸びます(1万表示行で約4秒増加)。
* rev.10 (2019-04-12)
** rev.4 の処理高速化手法の一部(コード変換)を取り下げ。
** Quit() → break ラベル文に変更
**: マクロの処理速度では大量処理にも限界があるので、可読性を優先しておくことに。
*** Chakra エンジンでは Quit() 非対応につき Mery 2.7.0 でエラーを返していたため
** 半角/全角変換表の仕様を ["正規表現","文字"] → [/正規表現/,"文字"] に変更。
** 安定ソートを明文化し、スクリプトエンジンの実装に依存しないようにした
** 半角/全角区別の対象に " ' \ の3字を追加。
* rev.9 (2018-04-15)
** /小文字区別の処理を toLowerCase() → toLocaleLowerCase() に変更。
** 64 ビット版 Mery で動作しない不具合を修正(rev.8 のみの不具合)
**: Mery の大文字/小文字変換と同様、OS の言語設定を考慮するようにした。
*** PopupMenu.Add() の Id に負の値を使用しないよう変更
** かな/カナ区別の処理を半角/全角区別と同じ仕様に変更(ひらがなが多い場合に高速化)。
* rev.8 (2017-06-25)
** かな/カナ区別の対象に ゝ ゞ の2字を追加。
** アイコンファイルに24x24・32x32・48x48の画像を追加
* <b>2013/09/19 (rev.4)</b> [[ファイル:行並べ替え_r4.zip]]
** 非選択時、並べ替え不可 → 文書全体を対象にする仕様に変更
** ks 氏の改善策を参考に、処理を高速化(作者の環境で1万行に2秒→1秒に短縮)。
** 折り返し行を探査する方法を変更し、高速化(1万表示行で4秒→0.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]]
** 「並べ替え(Shift_JIS風)」→「並べ替え(SJIS風)」に改称
** 「半角/全角を区別」設定を追加。
** 「辞書順」→「文字順」に改称
** 選択範囲がない場合にエラーが出る不具合を修正。<br>ポップアップメニューで「並べ替えが行えない」ことを注意するようにした。
** 「文字順」→「数値順」に初期設定を変更
** 並べ替え(Unicode) 時にも Shift_JIS 用のデータを処理していたムダを解消し、高速化。
** 「数値順」で同値の場合、文字順 → 先頭ゼロ比較に変更し、高速化
* <b>2013/08/29 (rev.2)</b> [[ファイル:行並べ替え_r2.zip]]
** 「半角/全角英数カナを区別」の対象から<b style="color:#c00;">半角カナを除外</b>し、「全角/半角英数を区別」に変更
** ks 氏の改善策を参考に、処理を高速化(作者の環境で1万行に30秒→2秒に短縮)。
** 「半角/全角カナを区別」設定を追加
** <span style="color:#c00;">並べ替え(Unicode) 時に、水平タブが空行より前に並ぶバグがあります</span>(rev.3 で修正)。
** 比較用変換の処理を改造
* <b>2013/08/25 (rev.1)</b>
*** 索引を「正規表現」と「文字列」の構成に仕様変更
** 初版公開。
<!-- コード変換の処理を charCodeAt() 走査 → match() 配列走査 に変更 -->
 
*** 索引の改行文字 [LF] と半角数字 (0~9) の符号位置は変更厳禁だった仕様を解消
==不具合(解決)==
<!-- U+000D [CR] をデリミタに利用し、コード変換を回避するようにした -->
 
*** 索引の上限字数を 65535 と明文化し、上限以上は処理しないようにした
===矩形選択で折り返し行を含む場合===
*** 数値順の上限桁数が 65519 → 65505 に 14 縮小
<span style="color:#c00;">※rev.5 で解決</span><br>
** <b style="color:#c00;">並べ替え(Unicode) 時、サロゲートペアの扱いが変わりました</b>
折り返された行を矩形選択していると、正しく並べ替えられません(画像参照)。
*** rev.7 までは、UTF-16順 (U+D7FF~E000 の間) に並びましたが、rev.8 からは、Unicode順 (U+FFFF の次) に並びます
 
** <b style="color:#c00;">並べ替え(SJIS風) 時、Shift_JISに無い文字の扱いが変わりました</b>
[[ファイル:SortLineBySelection_PosView.png]]
*** rev.7 までは、未定義文字 (0xFFFF) に置き換えていましたが、rev.8 からは、Unicode順と同様に並びます
 
* rev.7 (2015-12-26)
==仕様==
** アイコンの指定先を "My Macros\行並べ替え.ico" → "行並べ替え.ico" に変更
** 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正
* rev.6 (2014-10-12)
** 「辞書順/数値順」設定を追加
** 「半角/全角を区別」の対象から<b style="color:#c00;">記号を除外</b>し、「半角/全角英数カナを区別」に変更
*** 半角/全角の対応が定義しづらく、区別の対象となる文字が分かりにくいため
** ポップアップメニューにアクセラレータキー(アクセスキー)を割り当て
** ポップアップメニューの「半角/全角」「大/小文字」の配置を交換
** ポップアップメニューの「大/小文字」「半角/全角」「かな/カナ」をチェックボックス式に変更
* rev.5 (2014-07-27)
** アイコンファイルを同梱し、読み込むようにした
** 並べ替え実行後、実行範囲を行選択するようにした
** <b style="color:#c00;">矩形選択時、折り返し行が含まれていると、正しく並べ替えられない不具合を修正</b>
*** ただし、折り返し行を探査する処理に時間がかかります(1万表示行で4秒)
** rev.4 の処理高速化手法の一部(コード変換)を取り下げ
*** マクロの処理速度では大量処理にも限界があるので、可読性を優先しておくことに
** 半角/全角変換表の仕様を ["正規表現","文字"] → [/正規表現/,"文字"] に変更
** 「半角/全角を区別」の対象に " ' \ の3字を追加
** 「大/小文字を区別」の処理を toLowerCase() → toLocaleLowerCase() に変更
*** Mery の大文字/小文字変換と同様、OS の言語設定を考慮するようにした
** 「かな/カナを区別」の処理を「半角/全角を区別」と同じ仕様に変更(ひらがなが多い場合に高速化)
** 「かな/カナを区別」の対象に ゝ ゞ の2字を追加
* rev.4 (2013-09-19) [[ファイル:行並べ替え_r4.zip]]
** ks 氏の改善策を参考に、高速化(1万行で2秒→1秒)
** <b style="color:#c00;">並べ替え(Shift_JIS風) 時、Shift_JISに無い文字の扱いが変わりました</b>
*** rev.3 までは、昇順/降順を問わず最後尾に並びましたが、rev.4 からは、昇順/降順に従います
* rev.3 (2013-09-19) [[ファイル:行並べ替え_r3.zip]]
** 「半角/全角を区別」設定を追加
** 非選択時にエラーが出る不具合を修正
*** ポップアップメニューに「並べ替えが行えない」旨を表示するようにした
** 並べ替え(Unicode) 時においても Shift_JIS 用の準備をしていたムダを解消
* rev.2 (2013-08-29) [[ファイル:行並べ替え_r2.zip]]
** ks 氏の改善策を参考に、高速化(1万行で30秒→2秒)
** <b style="color:#c00;">並べ替え(Unicode) 時、水平タブが空行より前に並ぶバグがあります</b>(rev.3 で修正)
* rev.1 (2013-08-25)
** 初版公開


===Shift_JIS風の並び順===
== 仕様 ==
※Shift_JIS風の並び順は、ソースコードの「Shift_JIS(CP932)索引」で定義されています。<br>
=== 並べ替え(SJIS風) ===
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] をベースに、下記の仕様で並べます。
* NEC特殊/IBM拡張記号類 ①~" は、全角記号の次。㍻は㍼の次に並ぶ。
* NEC特殊 / IBM拡張記号類 <code>①~"</code> は、全角記号の次に。<code>㍻</code>は<code>㍼</code>の次に並べる。
* ローマ数字の小文字形 ⅰ~ⅹ は、大文字形 Ⅰ~Ⅹ の次に並ぶ。
* ローマ数字の小文字形 <code>ⅰ~ⅹ</code> は、大文字形 <code>Ⅰ~Ⅹ</code> の次に並べる。
* 未定義文字 (0x80, A0, FD, FE, FF)、ユーザー定義外字 (0xF0A0~F9FC) は非対応。
* Shift_JIS(CP932)に無い文字は、Unicode順に並べる。<b style="color:#c00;">(rev.8以降)</b>


===数値順の並び順および注意点===
=== 数値順 ===
* 半角数字列を「正の整数値の順」で並べ替えます。同値の場合は辞書順となります。例> 002→02→2
半角数字列を非負整数(正の整数)の順に並べます。
* <span style="color:#c00;">全角数字列は対象外です。</span>ただし「半角/全角英数カナを区別」<b>しない</b>場合は半角とみなされるため、数値順となります。
* 負数<code>-12</code> 小数<code>0.12</code> 分数<code>1/2</code> 指数<code>1.2e3</code> などには対応していません。
* <span style="color:#c00;">負数 (-12)/小数 (0.12)/分数 (1/2)/指数 (1.2e3) などには対応していません。</span>
* <b style="color:#c00;>全角数字</b>は「全角/半角英数を区別」設定で扱いが変わります。
* 仕様上、10の65520乗 以上の数値は扱えず、辞書順となります。
** 区別する場合、全角数字は対象外となり、文字順になります。
** 区別しない場合、半角数字とみなすため、数値順になります。
* 同値の場合、先頭ゼロの個数で比較します。例> <code>001</code><<code>01</code><<code>1</code>
* 仕様上、10の65505乗 以上の数値は扱えません。超過した数値同士は文字順で比較されます。


===大文字/小文字を区別しない並び順===
=== 大文字/小文字を区別しない ===
* 大文字は小文字とみなして並べ替えます。このため、<b>[ ] \ ^ _</b> <b>A</b> より前に並ぶようになります。
大文字を小文字とみなして並べます。
* ギリシャ文字やローマ数字など、大小の区別が存在する文字も区別しなくなります。
* <code>[ ] \ ^ _</code> <code>A</code> の前に並ぶようになります。
* 小さい <b>っ ぁ ゃ</b> などは「捨て仮名」「小書き文字」と呼び、小文字とは異なる概念の文字なので対象外です。
* ギリシャ文字やローマ数字など、大小が存在する文字も区別しなくなります。
* 小さい <code>っ ぁ ゃ</code> など仮名文字は対象外です。


===半角/全角英数カナを区別しない並び順===
=== 全角/半角英数を区別しない ===
※区別の対象となる文字は、ソースコードの「半角/全角変換表」で定義されています。
全角英数 <code>0~9 A~Z a~z</code> を半角とみなして並べます。
* 全角英数は半角、半角カナは全角とみなして並べ替えます。
* <span style="color:#c00;">半角/全角記号は対象外です。</span>


===ひらがな/カタカナを区別しない並び順===
=== 半角/全角カナを区別しない ===
※区別の対象となる文字は、ソースコードの「かな/カナ変換表」で定義されています。
半角カナ類 <code>ヲ~ッ ア~ン 。 「 」 、 ・ ー ゙ ゚</code> を全角とみなして並べます。
* ひらがなはカタカナとみなして並べ替えます。このため、<b>゛ ゜ &#x309F;</b> は <b></b> より前に並ぶようになります。


==開発者メモ==
=== ひらがな/カタカナを区別しない ===
;数値順・自然順での並べ替え ⇒<s style="color:#999;">予定なし</s> 正の整数値の順のみ対応
ひらがなをカタカナとみなして並べます。
:空白文字・通貨記号・3桁区切りの考慮、負数・小数・分数などの対応は難題が多いため、実装の予定は現状ありません。
* <code>゛ ゜ ゟ</code> が <code></code> の前に並ぶようになります。
;プラグイン化
* <code>ゔ ゕ ゖ</code> は <code>ヴ ヵ ヶ</code> とみなすため、Shift_JIS(CP932)に無い文字と扱われなくなります。
:マクロよりプラグインの方が高速に処理できると思いますが、自分は JavaScript くらいしか組めないので実現の予定はありません。


==コメント==
== コメント ==
* [http://merysmacro.seesaa.net/?1377428899 処理速度の改善を図ってみました]ので,ご参考まで (ks)
* [http://merysmacro.seesaa.net/article/372975309.html 処理速度の改善を図ってみました]ので、ご参考まで。 (ks)
** ありがとうございます。おかげさまで処理速度を大幅に改善することができました。 (masme)
** ありがとうございます。おかげさまで処理速度を大幅に改善することができました。 (masme)
* Mery 64 ビット版だと動作しないようです。マクロの 154, 155 行目ですが、PopupMenu インターフェイスの Add メソッドの Id 引数は UINT_PTR なので正の値を指定してやる必要があります。マクロリファレンスには int と記載しておりましたが間違いでした、申し訳ございません。(Kuro)

2025年1月16日 (木) 12:22時点における最新版

概要[編集]

選択範囲(矩形可)の文字列を比較し、論理行単位で並べ替えるマクロです。

※全行を ※非選択時に表示。文書全体が並べ替えの対象になります。
並べ替え(Unicode) Unicode順の並べ替えを実行します。
並べ替え(SJIS風) Shift_JIS風の並べ替えを実行します。→ #並べ替え(SJIS風)
昇順 - 降順 昇順 (A→Z) か降順 (Z→A) かを切り替えます。
文字順 - 数値順 半角数字列の並べ方を切り替えます。
文字順 (1<10<2) は、文字として一字ずつ比較します。
数値順 (1<2<10) は、非負整数(正の整数)として比較します。→ #数値順
大文字/小文字を区別する しない場合、大文字を小文字とみなします。
全角/半角英数を区別する しない場合、全角英数を半角とみなします。
半角/全角カナを区別する しない場合、半角カナを全角とみなします。
ひらがな/カタカナを区別する しない場合、ひらがなをカタカナとみなします。

ダウンロード[編集]

ファイル:行並べ替え.zip

内容
  • 行並べ替え.ico
  • 行並べ替え.js

変更履歴[編集]

  • rev.12 (2020-05-20)
    • 設定を一時的に記憶する機能の不具合を修正
  • rev.11 (2020-05-17)
    • .zip 内の Macros フォルダを除去。ファイルのみ収録
    • .ico の更新日時を .js と同期するのをやめた
    • 複数選択時は並べ替え不可とした(対応に手間取るため)
    • 元に戻すで選択範囲も戻すようにした(Mery 3.0.1 以降)
      • 都合上、Mery 3.0.0 は動作対象外とした
    • ステータスバーの表示を「行並べ替え (処理時間: xx秒)」→「行並べ替え (xx秒)」に変更
    • break ラベル文 → new function 式 & return に変更
  • rev.10 (2019-04-12)
    • Quit() → break ラベル文に変更
      • Chakra エンジンでは Quit() 非対応につき Mery 2.7.0 でエラーを返していたため
    • 安定ソートを明文化し、スクリプトエンジンの実装に依存しないようにした
  • rev.9 (2018-04-15)
    • 64 ビット版 Mery で動作しない不具合を修正(rev.8 のみの不具合)
      • PopupMenu.Add() の Id に負の値を使用しないよう変更
  • rev.8 (2017-06-25)
    • アイコンファイルに24x24・32x32・48x48の画像を追加
    • 非選択時、並べ替え不可 → 文書全体を対象にする仕様に変更
    • 折り返し行を探査する方法を変更し、高速化(1万表示行で4秒→0.1秒)
    • 並べ替え実行後、実行範囲を行選択する際、末尾の改行を含めるようにした
    • 「並べ替え(Shift_JIS風)」→「並べ替え(SJIS風)」に改称
    • 「辞書順」→「文字順」に改称
    • 「文字順」→「数値順」に初期設定を変更
    • 「数値順」で同値の場合、文字順 → 先頭ゼロ比較に変更し、高速化
    • 「半角/全角英数カナを区別」の対象から半角カナを除外し、「全角/半角英数を区別」に変更
    • 「半角/全角カナを区別」設定を追加
    • 比較用変換の処理を改造
      • 索引を「正規表現」と「文字列」の構成に仕様変更
      • 索引の改行文字 [LF] と半角数字 (0~9) の符号位置は変更厳禁だった仕様を解消
      • 索引の上限字数を 65535 と明文化し、上限以上は処理しないようにした
      • 数値順の上限桁数が 65519 → 65505 に 14 縮小
    • 並べ替え(Unicode) 時、サロゲートペアの扱いが変わりました
      • rev.7 までは、UTF-16順 (U+D7FF~E000 の間) に並びましたが、rev.8 からは、Unicode順 (U+FFFF の次) に並びます
    • 並べ替え(SJIS風) 時、Shift_JISに無い文字の扱いが変わりました
      • rev.7 までは、未定義文字 (0xFFFF) に置き換えていましたが、rev.8 からは、Unicode順と同様に並びます
  • rev.7 (2015-12-26)
    • アイコンの指定先を "My Macros\行並べ替え.ico" → "行並べ替え.ico" に変更
    • 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正
  • rev.6 (2014-10-12)
    • 「辞書順/数値順」設定を追加
    • 「半角/全角を区別」の対象から記号を除外し、「半角/全角英数カナを区別」に変更
      • 半角/全角の対応が定義しづらく、区別の対象となる文字が分かりにくいため
    • ポップアップメニューにアクセラレータキー(アクセスキー)を割り当て
    • ポップアップメニューの「半角/全角」「大/小文字」の配置を交換
    • ポップアップメニューの「大/小文字」「半角/全角」「かな/カナ」をチェックボックス式に変更
  • rev.5 (2014-07-27)
    • アイコンファイルを同梱し、読み込むようにした
    • 並べ替え実行後、実行範囲を行選択するようにした
    • 矩形選択時、折り返し行が含まれていると、正しく並べ替えられない不具合を修正
      • ただし、折り返し行を探査する処理に時間がかかります(1万表示行で4秒)
    • rev.4 の処理高速化手法の一部(コード変換)を取り下げ
      • マクロの処理速度では大量処理にも限界があるので、可読性を優先しておくことに
    • 半角/全角変換表の仕様を ["正規表現","文字"] → [/正規表現/,"文字"] に変更
    • 「半角/全角を区別」の対象に " ' \ の3字を追加
    • 「大/小文字を区別」の処理を toLowerCase() → toLocaleLowerCase() に変更
      • Mery の大文字/小文字変換と同様、OS の言語設定を考慮するようにした
    • 「かな/カナを区別」の処理を「半角/全角を区別」と同じ仕様に変更(ひらがなが多い場合に高速化)
    • 「かな/カナを区別」の対象に ゝ ゞ の2字を追加
  • rev.4 (2013-09-19) ファイル:行並べ替え r4.zip
    • ks 氏の改善策を参考に、高速化(1万行で2秒→1秒)
    • 並べ替え(Shift_JIS風) 時、Shift_JISに無い文字の扱いが変わりました
      • rev.3 までは、昇順/降順を問わず最後尾に並びましたが、rev.4 からは、昇順/降順に従います
  • rev.3 (2013-09-19) ファイル:行並べ替え r3.zip
    • 「半角/全角を区別」設定を追加
    • 非選択時にエラーが出る不具合を修正
      • ポップアップメニューに「並べ替えが行えない」旨を表示するようにした
    • 並べ替え(Unicode) 時においても Shift_JIS 用の準備をしていたムダを解消
  • rev.2 (2013-08-29) ファイル:行並べ替え r2.zip
    • ks 氏の改善策を参考に、高速化(1万行で30秒→2秒)
    • 並べ替え(Unicode) 時、水平タブが空行より前に並ぶバグがあります(rev.3 で修正)
  • rev.1 (2013-08-25)
    • 初版公開

仕様[編集]

並べ替え(SJIS風)[編集]

Microsoft コードページ932 [1] をベースに、下記の仕様で並べます。

  • NEC特殊 / IBM拡張記号類 ①~" は、全角記号の次に。の次に並べる。
  • ローマ数字の小文字形 ⅰ~ⅹ は、大文字形 Ⅰ~Ⅹ の次に並べる。
  • 未定義文字 (0x80, A0, FD, FE, FF)、ユーザー定義外字 (0xF0A0~F9FC) は非対応。
  • Shift_JIS(CP932)に無い文字は、Unicode順に並べる。(rev.8以降)

数値順[編集]

半角数字列を非負整数(正の整数)の順に並べます。

  • 負数-12 小数0.12 分数1/2 指数1.2e3 などには対応していません。
  • 全角数字は「全角/半角英数を区別」設定で扱いが変わります。
    • 区別する場合、全角数字は対象外となり、文字順になります。
    • 区別しない場合、半角数字とみなすため、数値順になります。
  • 同値の場合、先頭ゼロの個数で比較します。例> 001011
  • 仕様上、10の65505乗 以上の数値は扱えません。超過した数値同士は文字順で比較されます。

大文字/小文字を区別しない[編集]

大文字を小文字とみなして並べます。

  • [ ] \ ^ _A の前に並ぶようになります。
  • ギリシャ文字やローマ数字など、大小が存在する文字も区別しなくなります。
  • 小さい っ ぁ ゃ など仮名文字は対象外です。

全角/半角英数を区別しない[編集]

全角英数 0~9 A~Z a~z を半角とみなして並べます。

半角/全角カナを区別しない[編集]

半角カナ類 ヲ~ッ ア~ン 。 「 」 、 ・ ー ゙ ゚ を全角とみなして並べます。

ひらがな/カタカナを区別しない[編集]

ひらがなをカタカナとみなして並べます。

  • ゛ ゜ ゟ の前に並ぶようになります。
  • ゔ ゕ ゖヴ ヵ ヶ とみなすため、Shift_JIS(CP932)に無い文字と扱われなくなります。

コメント[編集]

  • 処理速度の改善を図ってみましたので、ご参考まで。 (ks)
    • ありがとうございます。おかげさまで処理速度を大幅に改善することができました。 (masme)
  • Mery 64 ビット版だと動作しないようです。マクロの 154, 155 行目ですが、PopupMenu インターフェイスの Add メソッドの Id 引数は UINT_PTR なので正の値を指定してやる必要があります。マクロリファレンスには int と記載しておりましたが間違いでした、申し訳ございません。(Kuro)
スポンサーリンク