.csvファイルの、数値が入力された列をいじって、数値の「前」を任意の桁だけ0で埋めたいのですが、どうすれば実現できるでしょうか。
例:列Aを4桁にしたい場合
列A→置換後
1 →0001
25 →0025
356 →0356
8392→8392
例:列Bを3桁にしたい場合
列B→置換後
3 →003
15 →015
946→946
Excelでは、
対象データがA1セルに存在する場合、4桁にしたい場合は、以下の関数、
=REPT("0",4-LENB(A1))&A1
3桁にしたい場合は、以下の関数で可能です。
=REPT("0",3-LENB(A1))&A1
列Aを4桁にしたい場合は、
=text(a1,"0000")
と、列Bを3桁にしたい場合は、
=text(b1,"000")
とする方法も考えられます。
コメント(3件)
% cat csv.txt
1,2,3,4
20,32,33,45
101,102,103,4444
のとき、列Cだけを4桁0詰めにしたければ、
% awk 'BEGIN{FS=",";FMT="%d,%d,%04d,%d\n";}{printf FMT,$1,$2,$3,$4}' < data.csv
1,2,0003,4
20,32,0033,45
101,102,0103,4444
C言語のstdioにあるprintfの書式指定とほぼ同じ。
十進4桁0埋めなら、%04d
書式指定と引数を列の数だけ並べないといけないのが難点なかわりに、すべての列の処理をいっぺんにできます。
それともEXCEL上で0001に表示されればいいのでしょうか?EXCELの場合、数値としては使う必要はありますか?文字列でも良いんでしょうか?
文字列にしてください。