0

私はcsvファイルからのデータを持っています。1 つの列には、「0.02.0011」に再フォーマットする必要がある「0.2.11」のようなテキストが含まれています。先頭のゼロと、ドットで区切られた部分の長さが重要です。これらは日付ではなく、乱数です。それらを再フォーマットするにはどうすればよいですか?

ありがとう。

4

2 に答える 2

1

私はこれがめちゃくちゃ長い式であることを知っています、しかし私はそれがあなたが探していることをするだろうと信じています:

=IF(LEN(IF(ISERR(FIND(".",A1)),A1,LEFT(A1,FIND(".",A1)-1)))=2,IF(ISERR(FIND(".",A1)),A1,LEFT(A1,FIND(".",A1)-1)),"0"&IF(ISERR(FIND(".",A1)),A1,LEFT(A1,FIND(".",A1)-1)))&"."&IF(RIGHT(MID(A1,FIND(".",A1)+1,2))<>".",MID(A1,FIND(".",A1)+1,2),"0"&LEFT(MID(A1,FIND(".",A1)+1,2),1))&"."&IF(LEN(RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))))=4,RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))),IF(LEN(RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))))=3,"0"&RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))),IF(LEN(RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))))=2,"00"&RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))),"000"&RIGHT(A1,LEN(A1)-FIND("*",SUBSTITUTE(A1,".","*",LEN(A1)-LEN(SUBSTITUTE(A1,".",""))))))))

保存するには、これを.xlsxや.xlsmなどの新しいExcel形式のいずれかで保存する必要があるほど長い可能性があります。問題が発生した場合はお知らせください。必要に応じて、数式をいくつかのセル(またはステップ)に分割します。

于 2012-05-14T13:33:18.613 に答える
0

書式設定に TEXT 関数を使用した、より短い (ただしい) Excel 式があります。

=TEXT(MID(A1,1,FIND(".",A1)-1),"00") &"."& TEXT(MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1),"00") &"."& TEXT(RIGHT(A1,LEN(A1)-FIND(".",A1,FIND(".",A1)+1)),"0000")

同じ問題を解決する他の方法があることを指摘したいと思います。大きな csv ファイルがたくさんある場合は、Excel にインポートする前に前処理を検討してください。たとえば、awk で同じ作業を行うのは簡単です。

BEGIN {
    while(getline < "e.csv") {
        split($1,a,".");
        printf("%02d.%02d.%04d\n",a[1],a[2],a[3]);
    }
}

gawk は Windows でうまく動作します。インストール後、Windows または PowerShell のコマンド ラインで実行できます.\awk -f x.awk。x.awk はテキスト ファイル内の上記のコードです。

于 2015-09-08T07:43:58.923 に答える