過去の桐井戸端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付きにしてあります。 |