[あすかぜ・ねっと]あすかぜ・ねっと自作ソフトCassava > サポート掲示板

Cassava Editor サポート掲示板

スレッド一覧に戻る返信

[375] ソート時にリスト順で指定した順に並べたい

けんちんぢる [2016/10/21 16:58:08]

業務上,csvデータを直接扱うことが多く,Cassavaは列でソートもできるので重宝しております。

列を右クリックして「この列でソート」を実行すればソートされますよね。
この時,降順か昇順は選べますが,基本的には数値やコード順に並んでしまいます。

これを,指定したリストの順に並べ替えられたら素晴らしいです。
今のところ機能が無いようなのですが,できれば実現して欲しいです。

この機能を実現するマクロでもないかと探してみたのですが,見つかりませんでした。


良く利用するのは,次の様なリストです。

●会社の部署を組織図の順に並べた部署漢字リスト(部署英字リスト,部署コードリストなどのバリエーションがある)
●都道府県の名前をコード順に並べた都道府県リスト
●ローマ字を50音順に並べたリスト
●自前のマニュアルのカテゴリー順リスト


もし,上記の説明がわかりづらいようでしたら,Excelでは並び順を指定する機能があるので紹介させていただきます。

Excelでいえば,オプションの詳細設定にある「ユーザー設定リストの編集」ボタンを押すことで,並び順のリストを設定できます。もちろん,上記のリストは一通り設定して利用しております。

並べ替えを実行する際,「順序」列で「ユーザー設定リスト」を選択すると,最初から設定されている「日,月,火,水,木,金,土」とか「甲,乙,丙,丁・・・」などの他に,上記のリストが選択でき,数値やコード順でないリストの並び順にソート可能です。



よろしくお願いいたします。

Re: [375] ソート時にリスト順で指定した順に並べたい

あすかぜ [2016/10/21 23:42:24]

ご意見ありがとうございます。
ご指摘の通り、今のところユーザー定義順でソートをする機能はありません。

ユーザー定義順ソートのマクロを出力するマクロを作ってみたので、使ってみてください。
http://www.asukaze.net/soft/cassava/macro/asukaze/bbs375_20161021.cms.cms

まず、上のマクロを「.cms.cms」と 2 つ拡張子がついたファイル名で「Export」フォルダに置いてください(「Macro」フォルダではありません)。

次に、ユーザー定義順のデータファイルを作成します。CSV データで 1 列目に上から順にデータを並べてください。
例えば







という感じです。
データファイルができたら、Cassava Editor の [ファイル(F)]-[エクスポート(T)...] を実行し、
ファイルの種類を「BBS375_20161021.CMS 形式 (*.cms)」(エクスポートマクロのファイル名を変更していた場合は対応するもの)にして
「保存」を実行してください。

保存された .cms ファイルを今度は「Macro」フォルダに置きます。
次回 Cassava Editor 起動時から [オプション(O)]-[マクロ(M)] 内に対応するメニューが増えるので、
ソートしたいファイルを開いてキーとなる列の上にカーソルを合わせた状態でマクロを実行してください。
最初のデータファイルの順にデータがソートされるはずです。

なお、データファイルに含まれないキーはランダムな順序でファイルの前半に移動します。
また、同じキーを持つ行が複数ある場合も、順番は保存されません。


手順が面倒くさくてすみません。少しは役に立つでしょうか。
よろしくお願いします。

Re: [375] ソート時にリスト順で指定した順に並べたい

けんちんぢる [2017/01/01 17:44:10]

亀レスで申し訳ありません。
仕事が忙しかったこともありますが,実はすぐには実現できないだろうなと思い込んでいたモノで,レスのチェックが遅くなりました。

このようなマクロが作成できるなんで素晴らしいですね。
実行スピードもマクロとは思えず素早いですし。
手順も思ったほど面倒ではないので問題ないです。

個人的には,同じ発想で別のエディターのマクロを作ったりしたのですが,不覚にも同じようなことができるとは思っていませんでした。

ただ,肝心の実行結果と言いますか,マクロの限界と言いますか,都道府県でソートしたいと思ったのですが,エラーが出て実行されませんでした。

エラーは次の通りです。

「文字列定数は255文字以内にしてください」

ちなみに,255文字以内にすれば良いと言うことで,都道府県を半分(北海道から富山県まで)にして実行してみた結果は,最初に書いたとおり大変良好です。

如何せん「文字列定数の文字数オーバー」となると,機能的に改良していただく以外に方法がないということになってしまいますでしょうか・・・

Re: [375] ソート時にリスト順で指定した順に並べたい

あすかぜ [2017/01/01 19:01:41]

返信ありがとうございます。
「文字列定数は255文字以内」という制約を自分でも忘れていました。
この制約は定数のみの制約で計算結果では255文字以上でも大丈夫だったはずなので、
"北海道\n青森\n..."
ではなく
"北海道\n" + "青森\n" + ...
を出力するようにすれば回避できそうな気がします。

今日と明日は手元にパソコンがなく試せないのですが、あさって以降に修正版のマクロを作ってみたいと思います。

よろしくお願いします。

Re: [375] ソート時にリスト順で指定した順に並べたい

けんちんぢる [2017/01/01 21:29:51]

ちなみに,3行目を次の様に修正してみました。

list = list + replace([1,y], "\"", "\\\"") + "\\n\"" + " + \"";

すると,listが次の様に生成されるのですが,同じエラーになってしまいますね・・・

list = "\n北海道\n" + "青森県\n" + "岩手県\n" + "宮城県\n" + "秋田県\n" + "山形県\n" + "福島県\n" + "茨城県\n" + "栃木県\n" + "群馬県\n" + "埼玉県\n" + "千葉県\n" + "東京都\n" + "神奈川県\n" + "新潟県\n" + "山梨県\n" + "長野県\n" + "富山県\n" + "石川県\n" + "福井県\n" + "岐阜県\n" + "静岡県\n" + "愛知県\n" + "三重県\n" + "滋賀県\n" + "京都府\n" + "大阪府\n" + "兵庫県\n" + "奈良県\n" + "和歌山県\n" + "鳥取県\n" + "島根県\n" + "岡山県\n" + "広島県\n" + "山口県\n" + "徳島県\n" + "香川県\n" + "愛媛県\n" + "高知県\n" + "福岡県\n" + "佐賀県\n" + "長崎県\n" + "熊本県\n" + "大分県\n" + "宮崎県\n" + "鹿児島県\n" + "沖縄県\n" + "";

・・・と思ったら,マクロの置換が旨くいっていなかったようです。

最初,「共有マクロフォルダ」に入れてしまったのですが,「ユーザーマクロフォルダ」があることに気付き入れ直したら,同名だと実行されているのはどうやら最初の方のマクロでした。

マクロをまったく別の名前にしたら,上記の通りで旨く実行されました。
ありがとうございました。

ただ,マクロメニューは挙動不審のままです。
過去三台分の都道府県マクロが登録されたままになっています。

Re: [375] ソート時にリスト順で指定した順に並べたい

あすかぜ [2017/01/02 18:48:00]

はい、マクロフォルダは Cassava.exe のある場所(共有マクロフォルダ)と C:\Users\ユーザー名\AppData の中(ユーザーマクロフォルダ)の2ヶ所にあります。
どちらか片方に置いておけば動くので、不要なマクロファイルは削除してください。
メニュー項目は Cassava Editor 起動時と [マクロの検索] の実行時にしか更新されないので、マクロファイルの更新後は Cassava Editor を再起動するようにしてみてください。

よろしくお願いします。

Re: [375] ソート時にリスト順で指定した順に並べたい

けんちんぢる [2017/01/02 22:55:54]

お正月にもかかわらず,素早いレスですね。
お手数をおかけして申し訳ありません。

自宅ではWin10なのですが,「共有マクロフォルダ」を触ったときに「仮想化フォルダ」が作成されて,そこにマクロが格納されていたことを,スッカリ勘が鈍っていて忘れておりました。

仮想化フォルダ内に,該当のファイルが残っていたので,そちらをクリアしたところ,メニューが正常になりました。

Cassavaには,何も問題はありませんでした。
また,質問するかも知れませんが,よろしくお願いいたします。

スレッド一覧に戻る返信