11 返信 最新の回答 日時: Jan 15, 2015 2:21 PM ユーザー:宗人福島

    残月数を表示するには?

    宗人福島

      タイトル

      残月数を表示するには?

      フォーラムに投稿

      初心者です。よろしくお願いいたします。

       

      契約日のフィールドがあり、満了日のフィールドがあり、本日から満了日までの残月数をフィールドに表示する方法を知りたいです。

      御存じの方があればご教授ください。

       

      よろしくお願いいたします。

       

        • 1. Re: 残月数を表示するには?
          sago350@未来Switch

          満了日 - Get( 日付 )

          という計算フィールドを用意すれば日数は出ます。
          計算結果を保存しない設定を忘れずに。

          で、今回は月数ですよね。
          その計算の条件ってどうなっていまいますか?
          例えば、
          今日 :2015/2/28
          満了日:2015/3/28
          の場合は月数はどういう計算になるでしょうか?
          要は一ヶ月をどう考えるか?という仕様が決まらないと回答しにくいです。

          • 2. Re: 残月数を表示するには?
            宗人福島

            ありがとうございます!

            計算結果は月単位で良いので、例の場合では、今日が3月1日になれば残月数はゼロになれば良いです。

            その場合の設定がありましたら、ご教授ください。

            よろしくお願いいたします。

             

            • 3. Re: 残月数を表示するには?
              Shin

              満了日:2015/3/28 の場合、

               2015/1/28 では2ヶ月

               2015/1/29 では1ヶ月30日

               2015/2/28 では1ヶ月

              となるのが、自然でしょうか。

              日が不要ならば、適当に短くしてください。

              Let (
              [

               data = 満了日 ;
               d1 = Max ( data ; Get ( 日付 ) ) ;
               d0 = Min ( data ; Get ( 日付 ) ) ;
               YM1 = Year ( d1 ) * 12 + Month ( d1 ) + Day ( d1 ) / 100 ;
               YM0 = Year ( d0 ) * 12 + Month ( d0 ) + Day ( d0 ) / 100 ;
               m = Int ( YM1 - YM0 ) ;
               d = Case ( Day ( d1 ) = Day ( d0 ) ; 0 ; Day ( d1 - Day ( d0 ) ) )
              ] ;
               Case (
                m = 0 ; d & "日" ;
                m < 12 ; Mod ( m ; 12 ) & "ヶ月" & d & "日" ;
                Div ( m ; 12 )  & "年" & Mod ( m ; 12 ) & "ヶ月" & d & "日"
               )
              )

              • 4. Re: 残月数を表示するには?
                宗人福島

                ありがとうございます!

                早速試してみます!

                ありがとうございました!

                • 5. Re: 残月数を表示するには?
                  sago350@未来Switch

                  月単位ということは

                  今日 :2015/1/5
                  満了日:2015/2/3

                  の時は残日数は29日あるわけですが、残月数としては0月でいいんですかね?
                  この場合に残月数を1月とする場合は下記の計算式でいいかと思います。

                  Let([
                  %満了日 = 満了日 ; 
                  %基準日 = Get( 日付 ) ;
                  %満了年月 = Year ( %満了日 ) & Right( "00" & Month( %満了日 ) ; 2 ) ;
                  %基準年月 = Year ( %基準日 ) & Right( "00" & Month( %基準日 ) ; 2 ) 
                  ];
                  %満了年月 - %基準年月
                  )


                  計算式的には「201501」と「201502」という数字を生成して、引き算しているだけです。

                  • 6. Re: 残月数を表示するには?
                    宗人福島

                    ありがとうございます!

                    早速試してみます。

                    ありがとうございました!

                    • 7. Re: 残月数を表示するには?
                      Shin

                      「201501」と「201502」という数字を生成して、引き算しているだけです。

                      年を跨ぐとだめでしょう。「201412」「201502」だと...

                      • 8. Re: 残月数を表示するには?
                        sago350@未来Switch

                        ああそうか、じゃこっちで。

                        Let([
                        %基準日 = Get( 日付 ) ; 
                        %満了日 = 満了日;
                        %誕生月 = Month( %基準日 ) ;
                        %基準月 = Month( %満了日 ) ;
                        %基準月 = %基準月 - ( %満了日 < Date ( Month ( %基準日 ) ; Day ( %基準日 ) ; Year ( %満了日 ) ) and Month( %基準日 ) = Month( %満了日 ) )
                        ];
                        Mod ( ( %基準月 - %誕生月 ) ; 12 )
                        )

                         

                        • 9. Re: 残月数を表示するには?
                          宗人福島

                          sago35さんありがとうございます!

                          でも、計算結果が12か月以内になってしまいます。

                          2015/09/14に満了するものがあと8か月でOKなんですが、2016/09/14に満了するものも残8か月となってしまします。

                          どうしたら良いでしょう?

                          御存じでしたら教えてください!

                          • 10. Re: 残月数を表示するには?
                            Shin

                            私の提示した式は使ってみました?

                            表示方法をきちんと書いていただけないと、中途半端な回答になりますが。

                            • 11. Re: 残月数を表示するには?
                              宗人福島

                              Shinさん。表示方法の説明が拙くての申し訳ありませんでした。

                              Shinさんの式をつかってみましたが、残月数は?で表示されてしまいます。

                              でも結局、下記の式でうまくいきました!

                              (Year(満了日)*12+Month(満了日))-(Year(Get ( 日付 ))*12+Month(Get ( 日付 )))
                              -If(Day(満了日)<Day(Get ( 日付 )); 1; 0)

                              みなさん、ありがとうございました!無事解決しました!

                              また、よろしくお願いいたします!