[302] 列の入れ替え
ゆえ [2014/12/11 16:11:19]
A.csvの中に列1,列2,列3,列4,列5とあった場合、このツールを使って列5,列3,列1,列2,列4と列を入れ替えるマクロを作りたいのですが、どのように作ったらよいかご教示をお願い致します。(実データファイルは列が100ぐらいあります。)
また条件ファイルのような定義ファイルを渡して並び替えできる操作方法がありましたら合わせてご教示をお願い致します。
Re: [302] 列の入れ替え
あすかぜ [2014/12/11 22:33:19]
オプションダイアログの「動作」ページで「固定セルドラッグ時の動作」を「行・列の移動」に指定すれば、列番号をドラッグすることで列の順番を入れ替えられます。
Cassava マクロではファイルの読み込みや配列の利用ができないため、マクロで処理するには次のようなマクロを書く必要があると思います。
http://www.asukaze.net/soft/cassava/macro/asukaze/bbs302_20141211.cms
よろしくお願いします。
Re: [302] 列の入れ替え
シクラメン [2016/05/24 14:45:04]
上記のマクロを活用させて頂いているのですが、
並び替えた際に、数字だけが入ってる列は先頭の「0」が消えてします。
例えば電話番号の場合などです。
09012345678 → 9012345678
こちら元の値のまま並び替える方法はございますでしょうか。
ご教示頂けますと幸いです。
Re: [302] 列の入れ替え
あすかぜ [2016/05/24 20:49:25]
バグのあるマクロを公開していてすみません。
データが数値に変換されないようにするには、次のようにセルの読み込み箇所に str() を追加してください。
http://www.asukaze.net/soft/cassava/macro/asukaze/bbs302_20160524.cms
よろしくお願いします。
Re: [302] 列の入れ替え
シクラメン [2016/05/25 09:08:14]
ご対応ありがとうございます。
助かりました。
Re: [302] 列の入れ替え
べてまる [2017/04/08 00:59:08]
このマクロを参考に52列あるデータの並び替えを試みましたが
なぜか指定した通りに並びません。(めちゃくちゃな並びになります)
なにか原因は有るのでしょうか?
ちなみに元データはすべて""で囲まれています。
全セルにデータは入っています。
Re: [302] 列の入れ替え
あすかぜ [2017/04/08 09:36:51]
お手数ですが、作成したマクロを mail@asukaze.net まで送っていただけるでしょうか。
よろしくお願いします。
Re: [302] 列の入れ替え
あすかぜ [2017/04/08 21:58:34]
メールありがとうございます。
メールへの返信がエラーとなってしまったのでこちらで返信させていただきます。
送っていただいたマクロは、私の手元では指定したとおりに動作しました。
下記の点のご確認をお願いします。
・実行するファイル名が間違っていないか
・マクロの保存先が以下の2ヶ所にあるので、最新版でないものが残っていないか
- ユーザーマクロフォルダ:C:\Users\ユーザー名\AppData\Roaming\Asukaze\Cassava\Macro
- 共有マクロフォルダ:Cassava.exe のある場所のMacroフォルダ
よろしくお願いします。
Re: [302] 列の入れ替え
べてまる [2017/04/09 18:55:02]
ケータイメールでの送信でしたので
受信できずに申し訳ありませんでした。
問題ないとのことでもう一度全て見直したところ
並び替えの指定が前と後ので逆に記入していたという
お恥ずかしい間違いでした。
お手数おかけしまして本当に申し訳ありません。
もう一点だけお聞きしたいのですが
列を削除してから、列の入れ替えをするのですが
一つのマクロにまとめることはできるでしょうか?
今は掲示板を参考にそれぞれのマクロを実行していますが
毎日何回か行う作業なので、一つのマクロにできれば助かります。
単純に削除のマクロの後に入れ替えのマクロを記入しただけでは
出来なかったので、御教示いただけると幸いです。
本当に初心者の質問ですみません。
Re: [302] 列の入れ替え
べてまる [2017/04/09 21:00:47]
自己レスですみません。
削除マクロを
for (x=1; x<2; x++) { 削除マクロ }
とし、その下に列の入れ替えマクロを書くことで
一つにまとめられました。
もし間違っていたらご指摘ください。
Re: [302] 列の入れ替え
あすかぜ [2017/04/09 22:58:28]
複数の処理を順番に実行するのは、単純に削除のマクロの後に入れ替えのマクロを記入すればよいはずです。
動かないとすれば、削除のマクロの書き方になにか問題があるのだと思います(末尾の「;」を忘れている等)
for (x=1; x<2; x++) { } は処理を 1 度だけ実行する特に意味のない命令ですが、それで動いているのなら問題もなさそうです。
よろしくお願いします。