関数を用いて期間の月数を求める
2022-06-28 17:13
お世話になります。
現在、ある期間の月数を求めたいと思っております。
DATEDIF関数が使えればいいのですが、CELFでは使えず、下記のように数式を作成しております。
=(YEAR(A)-YEAR(B))*12)+(MONTH(A)-MONTH(B))
※Aが終了日 Bが開始日-1の値になります。
Bを開始日-1にしている理由としては、終了日に合わせるためとなります。
開始日が月初だったりする場合、問題ないのですが、
開始日が月末で終了日と同日の30日だった場合に不整合が発生します。
例えば、終了日が2023/9/30で開始日が2023/1/31の場合、
2023/9/30-2023/1/30の計算となり、実際は9ヶ月となりますが、
計算結果が8ヶ月となってしまいます。
なにかいい数式等ありましたら、ご教授いただけますと大変助かります。
回答を投稿するにはログインが必要です。
Yexiongmao さん
ご回答いただきありがとうございます。
いただいた内容で検証した結果、現状、思い通りの結果を導くことができています。
ありがとうございます。
日本コンピュータシステム(CELFチーム) さん
不足していた情報にも関わらず方法を考えてくださり誠にありがとうございます。
ご回答いただきありがとうございます。
いただいた内容で検証した結果、現状、思い通りの結果を導くことができています。
ありがとうございます。
日本コンピュータシステム(CELFチーム) さん
不足していた情報にも関わらず方法を考えてくださり誠にありがとうございます。
日本コンピュータシステム(CELFチーム)さん
Yexiongmao さん
ありがとうございます。
月数の計算方法について、情報が不足しており、失礼致しました。
いただいた内容ですと、①、②が1ヶ月、③、④が2ヶ月というカウント方法になります。
EDATE関数の1日前(応当日前日)を境目としたいと考えております。
今回、質問させていただいた経緯としては、
現在、保守のシステムを作成しており、ある年数から保守金額が変更になる製品があります。
変更になる日付から保守終了日までの月数を求めて、その月数分の割り増し料金を計算するために月数のカウント方法を検討しております。
基本的には、開始日(変更のタイミング)が1日、終了日が月末になるため問題なかったのですが、
今回記載させていただいた通り、開始日(変更のタイミング)が2023/1/31、終了日が2023/9/30と、どちらも月末になる案件が発生しました。
日割計算を行っていないため、2023/1~2023/9までの9ヶ月となりますが、
先日記載させていただいた方法ですと8ヶ月になってしまっておりました。
今回、下記のように修正したところ、上記の計算は問題なくできておりますが
他のパターンについて、考えられておりません。
=(YEAR(A)-YEAR(B))*12)+(MONTH(A)-MONTH(B)+1)
※開始日を1日に、終了日を28日(2月を考慮)に変換
Aが終了月の28日、Bが開始月の1日の値になります。
※開始日について以前、開始日-1日として計算しておりましたが、数式の変更に伴い、本来の開始日になります。
こちらの情報で何かわかったりしますでしょうか…?
恐れ入りますが、よろしくお願いいたします。
Yexiongmao さん
ありがとうございます。
月数の計算方法について、情報が不足しており、失礼致しました。
いただいた内容ですと、①、②が1ヶ月、③、④が2ヶ月というカウント方法になります。
EDATE関数の1日前(応当日前日)を境目としたいと考えております。
今回、質問させていただいた経緯としては、
現在、保守のシステムを作成しており、ある年数から保守金額が変更になる製品があります。
変更になる日付から保守終了日までの月数を求めて、その月数分の割り増し料金を計算するために月数のカウント方法を検討しております。
基本的には、開始日(変更のタイミング)が1日、終了日が月末になるため問題なかったのですが、
今回記載させていただいた通り、開始日(変更のタイミング)が2023/1/31、終了日が2023/9/30と、どちらも月末になる案件が発生しました。
日割計算を行っていないため、2023/1~2023/9までの9ヶ月となりますが、
先日記載させていただいた方法ですと8ヶ月になってしまっておりました。
今回、下記のように修正したところ、上記の計算は問題なくできておりますが
他のパターンについて、考えられておりません。
=(YEAR(A)-YEAR(B))*12)+(MONTH(A)-MONTH(B)+1)
※開始日を1日に、終了日を28日(2月を考慮)に変換
Aが終了月の28日、Bが開始月の1日の値になります。
※開始日について以前、開始日-1日として計算しておりましたが、数式の変更に伴い、本来の開始日になります。
こちらの情報で何かわかったりしますでしょうか…?
恐れ入りますが、よろしくお願いいたします。
こんにちは。
この場合月数はどのように数えるのでしょうか?
例えば、開始日が2月28日として、1ケ月は
終了日が①3月1日、②3月27日、③3月28日、④3月31日などが考えられます。
①は月を跨げば1月、②は応当日の前日で1月経過、③応当日で1月(誕生日型)④は月末スタートなので応当日が月末
などです。
この場合月数はどのように数えるのでしょうか?
例えば、開始日が2月28日として、1ケ月は
終了日が①3月1日、②3月27日、③3月28日、④3月31日などが考えられます。
①は月を跨げば1月、②は応当日の前日で1月経過、③応当日で1月(誕生日型)④は月末スタートなので応当日が月末
などです。
日本コンピュータシステム(CELFチーム)
パートナー
日本コンピュータシステム(CELFチーム)様
ご回答いただきありがとうございます。
説明が不足しており失礼致しました。
日割計算を行っていないため、9ヶ月が正となります。
いろいろな関数を合わせて使っており、複雑な式になっております。
開始日を1日に、終了日を28日(2月を考慮)に変換してから月数を計算してみようかと思っております。
ご回答いただきありがとうございます。
説明が不足しており失礼致しました。
日割計算を行っていないため、9ヶ月が正となります。
いろいろな関数を合わせて使っており、複雑な式になっております。
開始日を1日に、終了日を28日(2月を考慮)に変換してから月数を計算してみようかと思っております。
日本コンピュータシステム(CELFチーム)
パートナー