過去の桐井戸端BBS (桐ver.9)
23420 ひとつの項目で何回も置換をしてデータを変換しているけど一度に行いたい おぎの 2003/11/21-15:34
項目[生年月日]に今は「2003年11月21日」と入っている表があります。
この表を別の表に読み込み、[生年月日]を数字だけに、
つまり「20031121」という風にしたいのですが、今は読み込んでから、
文字置換を3回、#文字置換([生年月日],"年","")・・(月と日も)とやっています。
これを読み込んだ時に置換できる方法は無いものか、と考えています。
いい式があったら教えて下さい。よろしくお願いします。
23421 Re:複数の置換を一度に行うには? アックン 2003/11/21-16:20
記事番号23420へのコメント
おぎのさん、こんにちは。ふたつの方法を書いておきます。
文字置換を一度に行うには、#文字置換(#s)をネスト(入れ子)にします。

#s(#s(#s([],"年","" ),"月",""),"日","")

パッと見ただけでは、ちょっとわかりにくいと思いますが、内側のカッコから順に計算されます。
最初に置換する項目の"年"を消します。
s([],"年","" )

次ぎにその文字列の"月"を消します。
#s( 年を消した文字列 ,"月","")

最後に"日"を消します。
#s( 年月を消した文字列 ,"日","")

もうひとつ、別のやり方を。
文字列を #数値(#num)で変換すると、"年","月","日"の3文字が取り除かれます。
これをさらに #文字列(#str)で文字列に戻します。

#str(#num([]))

こういう方法もあるということで、覚えていると便利に使えるかもしれません。
23422 Re:複数の置換を一度に行うには? 通りすがり人 2003/11/21-16:22
記事番号23420へのコメント
置換は一度でいいのでは?

>#文字置換([生年月日],"年","")
↓  ↓
#文字置換(#文字置換(#文字置換([生年月日],"年",#U),"月",#U),"日",#U)

元の表に[生年月日2]なる別の項目を設けて、自動計算に登録、別の表に取り込むときには
この[生年月日2]を読み込ませれば、置換作業はいりませんね。

ところで、
元データは「01月」とか「07日」と1桁の場合には「0」が付加されていますね?

23423 Re:複数の置換を一度に行うには? 通りすがり人 2003/11/21-16:27
記事番号23421へのコメント
>#str(#num([]))
こりゃ、いいや・・・。
2003年06月03日 → 20030603 としてくれる。
2003年3月1日  → 200331

やっぱり「0」で補われていることが前提だけど。


23425 Re:複数の置換を一度に行うには? アックン 2003/11/21-17:11
記事番号23423へのコメント
通りすがり人さん> どうも。
データをセロ詰めで整えるには、こうすればよかったかも。

#日時文字列( #日時値( [] ) , 1 , 1 , 2 )
23426 Re:複数の置換を一度に行うには? うにん 2003/11/21-17:13
記事番号23420へのコメント

#部分列([],1,2)+#日付([],3)

なんてのもあり。2000年台だけなら
"20"+#日付([],3)
でいいですが。


23520 ありがとうございました おぎの 2003/11/26-17:18
記事番号23426へのコメント
うにんさんは


>#部分列([],1,2)+#日付([],3)
>
>なんてのもあり。2000年台だけなら
>"20"+#日付([],3)
>でいいですが。

なーるほど。
ありがとうございました。できました。
関数を「+」足すことは思いつきませんでした。
23521 Re:複数の置換を一度に行うには? おぎの 2003/11/26-17:25
記事番号23421へのコメント
アックンさん

>文字置換を一度に行うには、#文字置換(#s)をネスト(入れ子)にします。

ありがとうございました。
入れ子にはしてみたんですが、エラーになってしまって、できませんでした。
教えていただいた式と比べると、やっぱり私のは式が間違っていました。

>#s(#s(#s([],"年","" ),"月",""),"日","")

カッコの位置やカンマの位置が難しいですね。
でも理屈が分かったので、今度は大丈夫だと思います。

>文字列を #数値(#num)で変換すると、"年","月","日"の3文字が取り除かれます。
>これをさらに #文字列(#str)で文字列に戻します。
>
>#str(#num([]))
>
>こういう方法もあるということで、覚えていると便利に使えるかもしれません。

#文字列で文字列に変換できるのは知りませんでした。
たまに、日時値を文字列に読み込ませたときに秒数まで出てしまって、いちいち消していたので、この式で解決しますね。
これはとても便利に使えそうです!ありがとうございました。
23522 Re:複数の置換を一度に行うには? おぎの 2003/11/26-17:28
記事番号23422へのコメント
通りすがり人さん

>元の表に[生年月日2]なる別の項目を設けて、自動計算に登録、別の表に取り込むときに
>はこの[生年月日2]を読み込ませれば、置換作業はいりませんね。

自動計算とはどこで設定するのでしょうか?

>ところで、
>元データは「01月」とか「07日」と1桁の場合には「0」が付加されていますね?

はい、0付きにしてあります。

戻る