過去の桐井戸端BBS (桐ver.7)
2945 日付の条件選択について 久保 1999/10/19-15:53
資金の借り入れを行っていますが、
借入日によって償還日が違うため、
条件選択によって日付を指定したいのですが、
例えば、3月31日から9月29日までなら、3月31日が償還日に
9月30日から3月30日までの借り入れなら9月1日の償還日に
なります。これを日時値の範囲指定で行おうとしますが、
うまくいきません。条件選択の式の中では代入できないデータ型だといわれます。
どなたか、お教えください。
年月日は11/10/19のように入力しています。
Ver.7.1です。
2946 Re: 宮城 1999/10/19-16:17
記事番号2945へのコメント
借り入れ末日が項目中にあるなら、#日数加算([借り入れ末日1,1)を
[償還日]の項目計算式にセットすれば、どうってことありませんが・・・。

>条件選択の式の中では代入できないデータ型だ

どんな式をいれたのでしょうか。

>年月日は11/10/19のように入力しています。

これも気になります。これでは桐は1911年か2011年のいずれかと勘
違いするのでは・・・。
2947 Re: 宮城 1999/10/19-16:20
記事番号2946へのコメント
ミスしてます。すみません。

誤:#日数加算([借り入れ末日1,1)

正:#日数加算([借り入れ末日],1)
2948 Re: HAS 1999/10/19-20:22
記事番号2945へのコメント
ゴテゴテの計算式ですが、出来そうです。
もっと適当な関数があるかもわかりません。

#条件選択(#日時値生成(#年([借入日]),3,31 )≦[借入日]
.and [借入日]<#日時値生成(#年([借入日]),9,30 )
,#日時値生成(#年([借入日])+1,3,31 )

,#日時値生成(#年([借入日]),1,1 )≦[借入日]
.and [借入日]<#日時値生成(#年([借入日]),3,31 )
,#日時値生成(#年([借入日]),9,30 )

,#日時値生成(#年([借入日]),9,30 )≦[借入日]
.and [借入日]≦#日時値生成(#年([借入日]),12,31 )
,#日時値生成(#年([借入日])+1,9,30 ))
2956 Re: 宮城 1999/10/20-09:31
記事番号2947へのコメント
失礼しました。勘違いです。ただ、このての話で年をぬきにしたのがそもそも
疑問です。
2963 Re: 宮城 1999/10/20-18:22
記事番号2956へのコメント
借入日・年、f1、t1、f2、t2を項目追加し、(勝手に半年償還の前提を
置きますが)、

借入日・年:#年([借入日])
f1    :#日時値生成([借入日・年],3,31)
t1    :#日時値生成([借入日・年],9,29)
f2    :#日時値生成([借入日・年],9,30)
t2    :#日時値生成([借入日・年]+1,3,30)

としたうえで、償還日の項目計算式を

#条件選択([f1]≦[借入日] .and [借入日]≦[t1],
#日時値生成([借入日・年]+1,3,31),
[f2]≦[借入日] .and [借入日]≦[t2],
#日時値生成([借入日・年],9,1),1,"")

で問題なく動作しました。借入日・年は数値、以外は日時型です。

代入できないデータ型というのは? 文字列と日時がごっちゃになって
いるとき、そういうメッセージがでるようですが・・・。
2964 Re: 久保 1999/10/20-20:51
記事番号2963へのコメント
ありがとうございます。いろいろやってみた結果、#日時値生成の関数が#条件選択の中に
代入できないことに気がつきました。
それで、宮城さんの方法と同様に式を作ったところうまくいきました。
どうも、いろいろありがとうございました。
2965 Re: 久保 1999/10/20-20:56
記事番号2948へのコメント
どうもありがとうございました。いろいろとやってみた結果何とか思い通りに
なるようになりましたが、式の書き方など初心者の私には非常に参考になりま
した。また、お教えください。
2966 Re:式を整理しました HAS 1999/10/20-21:01
記事番号2965へのコメント
少し式を整理しました。

#条件選択([借入日]<#日時値生成(#年([借入日]),3,31 )
,#日時値生成(#年([借入日]),9,30 )
,#日時値生成(#年([借入日]),9,29 )<[借入日]
,#日時値生成(#年([借入日])+1,9,30 )
,1,#日時値生成(#年([借入日])+1,3,31 ))

これでもいけそうです。
2967 Re: HAS 1999/10/20-21:15
記事番号2964へのコメント
久保さんは No.2964「Re:日付の条件選択について」で書きました。

>ありがとうございます。いろいろやってみた結果、#日時値生成の関数が#条
>件選択の中に代入できないことに気がつきました。

V7.1では出来ませんでしたか。V8sp2ではできますが。
2968 Re: 宮城 1999/10/20-22:31
記事番号2964へのコメント
みなさん、どうも。おおいにもたついて面目ない限りですが、もう一言。

本来のデータとしては一見不要と思われる項目も追加していったほうが
結果的に楽です。項目計算式中で処理しきろうとすると式が見づらくな
り、ミスの元だと私は思います。ユーザーに見せたくないなら、表示幅
をゼロにするまでです。余計でしたが。
2998 Re: HAS 1999/10/24-18:18
記事番号2963へのコメント
>借入日・年、f1、t1、f2、t2を項目追加し、(勝手に半年償還の前提を
>置きますが)、
>
>借入日・年:#年([借入日])
>f1    :#日時値生成([借入日・年],3,31)
>t1    :#日時値生成([借入日・年],9,29)
>f2    :#日時値生成([借入日・年],9,30)
>t2    :#日時値生成([借入日・年]+1,3,30)
>
>としたうえで、償還日の項目計算式を
>
>#条件選択([f1]≦[借入日] .and [借入日]≦[t1],
>#日時値生成([借入日・年]+1,3,31),
>[f2]≦[借入日] .and [借入日]≦[t2],
>#日時値生成([借入日・年],9,1),1,"")
>
>で問題なく動作しました。

上記の計算式では、借入日が3月30日の場合償還日が未定義になります。
3004 Re: HAS 1999/10/25-19:36
記事番号2963へのコメント
>借入日・年、f1、t1、f2、t2を項目追加し、(勝手に半年償還の前提を
>置きますが)、
>
>借入日・年:#年([借入日])
>f1    :#日時値生成([借入日・年],3,31)
>t1    :#日時値生成([借入日・年],9,29)
>f2    :#日時値生成([借入日・年],9,30)
>t2    :#日時値生成([借入日・年]+1,3,30)
>
>としたうえで、償還日の項目計算式を
>
>#条件選択([f1]≦[借入日] .and [借入日]≦[t1],
>#日時値生成([借入日・年]+1,3,31),
>[f2]≦[借入日] .and [借入日]≦[t2],
>#日時値生成([借入日・年],9,1),1,"")
>
>で問題なく動作しました。

上記の計算式では、借入日が9月30日の場合償還日が9月1日となり、
借入日と償還日が逆転します。
3014 Re:式が間違っています。 HAS 1999/10/26-19:15
記事番号2963へのコメント
>借入日・年、f1、t1、f2、t2を項目追加し、(勝手に半年償還の前提を
>置きますが)、
>
>借入日・年:#年([借入日])
>f1    :#日時値生成([借入日・年],3,31)
>t1    :#日時値生成([借入日・年],9,29)
>f2    :#日時値生成([借入日・年],9,30)
>t2    :#日時値生成([借入日・年]+1,3,30)
>
>としたうえで、償還日の項目計算式を
>
>#条件選択([f1]≦[借入日] .and [借入日]≦[t1],
>#日時値生成([借入日・年]+1,3,31),
>[f2]≦[借入日] .and [借入日]≦[t2],
>#日時値生成([借入日・年],9,1),1,"")
>
>で問題なく動作しました。

そこで、上記の式に実際に借入日を入力したところ下記の結果となり
正しく動作いたしません。

  借入日       償還日    
  1999年 1月 1日   未定義
  1999年 2月 1日   未定義
  1999年 3月 1日   未定義
  1999年 3月30日   未定義

  1999年 3月31日   2000年 3月31日
  1999年 4月 1日   2000年 3月31日
  1999年 5月 1日   2000年 3月31日
  1999年 6月 1日   2000年 3月31日
  1999年 7月 1日   2000年 3月31日
  1999年 8月 1日   2000年 3月31日
  1999年 9月 1日   2000年 3月31日
  1999年 9月29日   2000年 3月31日

  1999年 9月30日   1999年 9月 1日   逆転
  1999年10月 1日   1999年 9月 1日   逆転
  1999年11月 1日   1999年 9月 1日   逆転
  1999年12月 1日   1999年 9月 1日   逆転
  1999年12月31日   1999年 9月 1日   逆転

原因は、項目計算式の誤りです。

1.借入日が、1月1日より3月30日の間の場合
  返す値が "" であるため未定義となる
  
2.借入日が、9月30日より12月31日の間の場合
  返す値が #日時値生成([借入日・年],9,1)となっているが、
  正しくは#日時値生成([借入日・年]+1,9,1)とすべきである。

また、.and [借入日]≦[t2]の式は、借入日とその翌年の3月30日とを
比較しておりますが、借入日はその年の1月1日より12月31日の間の何
れかの日でありますので、翌年の3月30日とを比較することは意味をな
しません。

そこで宮城さんのつくられた項目を使用して計算式を作成すると下記の
様になります。

#条件選択([借入日]<[f1],[f2]
,[t1]<[借入日],#日時値生成(#年([借入日])+1,9,1)
,1,#日時値生成(#年([借入日])+1,3,31 ) )

以上。

戻る