TSVモードで末尾を揃えたいNo.39240
styth さん 21/10/02 19:43
 
 多分、無理だとは思いますが、TSVモードで、数字の列(あるいは指定した
列)は右揃えにならないでしょうか?
 無理だと思いますので、
 例えば、3列目に数字のみのデータ(最大で数字5桁位)が入っているとします。
 これを、末尾を揃えたいので、先頭にスペースをくっつけて、スペース+数字
で、10桁くらいにしたいのですが、正規表現でこういったことが、出来ないでし
ょうか?
 1行ずつ、rightstr(スペース+数字,10)でやれば出来そうなんですが、3列目
を範囲選択しておいて、一気に出来ないでしょうか?
 よろしくお願いいたします。

[ ]
RE:39240 TSVモードで末尾を揃えたいNo.39241
h-tom さん 21/10/02 23:52
 
h-tom です。

> 例えば、3列目に数字のみのデータ(最大で数字5桁位)が入っているとします。
> これを、末尾を揃えたいので、先頭にスペースをくっつけて、スペース+数字
>で、10桁くらいにしたいのですが、正規表現でこういったことが、出来ないでし
>ょうか?
一回の置換では出来ませんよ。
必要な桁数分、複数回置換するなら可能でしょう。

> 1行ずつ、rightstr(スペース+数字,10)でやれば出来そうなんですが、3列目
>を範囲選択しておいて、一気に出来ないでしょうか?
無理でしょう。地道に1行ずつやるしか無い思いますよ。

目的がわかりませんが、見た目を変えたいだけなら、CSVエディタやExcel使って見れ
ばいいのでは?

[ ]
RE:39241 TSVモードで末尾を揃えたいNo.39247
秀丸担当 さん 21/10/04 17:44
 

マクロを使うと、目的の場所を取得してからのrightstrなど、いろいろ方法はあると
思います。

正規表現だけでやるとしたら、Google検索とかしてみたら、以下のようなページのや
り方がありました。
https://qiita.com/officemove/items/0b54d28e7db236cc7cab
$1$2というタグを使っていますが、秀丸エディタの場合は\1\2になります。
数字だけで空白4桁埋めの例:
1回目
検索文字列「(\d+)」
置換文字列「    \1」
2回目
検索文字列「 *([ \d]{4,})」
置換文字列「\1」


範囲を絞って検索したり置換したりする方法はだんだん増えてきたので、最近のヘル
プでは「目次− コマンド− 検索系コマンド− いろいろな検索例− 特定の範囲内だ
けで検索したい場合」に幾つかのやり方を書いています。

特定のカラムだけ対象にするには、以前はカラーマーカーを付けてから、追加の条件
でカラーマーカーを指定する方法がありました。
最近のバージョンでは、範囲選択してから検索や置換ダイアログの「選択した範囲」
をONにして「文字単位」にする方法もあります。範囲選択の場合は何回も選択する必
要があります。

マクロにすると以下のような感じです。
範囲選択の文字単位の場合はsettargetcolormarkerをしないといけない問題がありま
した。また修正します。

//カラーマーカーの例
setcompatiblemode 0x00120000;
$layer = "test";
disabledraw;
selectcolumn;
colormarker 0xff,-1,-1,0,0,$layer;
settargetcolormarker $layer;
replaceallfast @"(\d+)",@"    \1",regular,incolormarker;
replaceallfast @" *([ \d]{4,})",@"\1",regular,incolormarker;
deletecolormarkerall $layer;
endmacro;

//範囲選択の例
setcompatiblemode 0x00120000;
#a=tabcolumn;
disabledraw;
selectcolumn #a,#a;
settargetcolormarker "\x01#inselect2";//本来不要だけどバグのため必要
replaceallfast @"(\d+)",@"    \1",regular,inselect2;
selectcolumn #a,#a;
replaceallfast @" *([ \d]{4,})",@"\1",regular,inselect2;
selectcolumn #a,#a;
escape;
escapeinselect;
endmacro;

[ ]
RE:39247 TSVモードで末尾を揃えたいNo.39248
styth さん 21/10/04 18:18
 
>マクロにすると以下のような感じです。
>範囲選択の文字単位の場合はsettargetcolormarkerをしないといけない問題があり
>ました。また修正します。
 ありがとうございます。うまくいきました。
 右揃えになっていないために、エクセルに貼り付けるのでは、・・・と思って
いましたが、その手間が省けました。
 最初から、エクセルでやれば良いんでしょうが、そうも言っていられないので、
大変、助かりました。

[ ]
RE:39248 TSVモードで末尾を揃えたいNo.39250
Micky さん 21/10/04 18:53
 
まいどお世話になります。

styth さん write:

> 最初から、エクセルでやれば良いんでしょうが、そうも言っていられないので、
>大変、助かりました。
既に解決済みのようですが、以前同じようなことを考えて、
マクロ作ってもらったことがあります。

https://log.maruo.co.jp/hidesoft/hidesoft_2/x37230.html
列を指定して右寄せしてくれるので、数値を見る時は助かります。

列選択しているときに出てくるメニューに登録できればもっと楽かもしれませんが、
方法がわかりませんでした。

[ ]
RE:39250 TSVモードで末尾を揃えたいNo.39251
styth さん 21/10/04 19:41
 
 お気遣い、ありがとうございます。
 同じようなお考えをお持ちの方がいて、心強いです。
 自分も過去ログから、以下のようなものを見つけました。

//*5    A1.mac
    if( updated ){  endmacro;   } // 更新中はダメ。
    replaceallfast "^[0-9]+\\f", "00000000\\0", regular, ask;
    replaceallfast "^[0-9]+\\f........", "\\1", regular, ask;
endmacro;

https://log.maruo.co.jp/hidesoft/hidesoft_4/x02195.html

[ ]