[[20100914104808]] 『期間計算』(さぼてん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『期間計算』(さぼてん)

 いつも大変お世話になっております。
 試行錯誤や色々検索したのですが辿りつきませんでしたので質問させていただきます。 

 1回目と2回目の間の合計期間計算を行いたい時の計算方法をご教授いただきたいです。
 ※開始日と終了日もカウントします。
 ※書式は[$-411]gee.mm.ddとしております。

 A1:1回目の開始日
 B1:1回目の終了日
 C1:2回目の開始日
 D1:2回目の終了日
 E1:1回目と2回目の合計期間計算。

 どうぞ、宜しくお願い致します。

 >1回目と2回目の間の合計期間計算
 これは1回目の日数+2回目の日数なのでしょうか?
 それとも1回目の開始日から2回目の終了日までの日数なのでしょうか?

 または上記以外なのでしょうか?

 (独覚)

 申し訳御座いません。
 1回目の日数+2回目の日数です。

 追加でF1に1回目と2回目が3ヶ月開いていればOKと開いていなければNGと表示させることは可能でしょうか。

 (さぼてん)

 E1は経過日数ではなく経過年月日を表示させたいです。

 (さぼてん)

 > E1は経過日数ではなく経過年月日を表示させたいです。

 具体的なサンプルデータを使って、ご説明いただけませんか?

 (半平太) 2010/09/14 16:21

        A            B             C            D                   E               F
 1 1回目開始日  1回目終了日  2回目開始日  2回目終了日  1回目と2回目通算日数    空白期間
 2  H22.06.11    H22.07.10    H22.11.11      H22.12.10      0年2ヶ月0日 取得    0年4ヶ月2日経過 OK

 A2からD2は入力セル。H22.06.11〜H22.07.10は30日H22.08.11〜H22.09.10は31日と算出
 E2は1回目と2回目の通算を算出
 F2は1回目と2回目の間の日数を算出し、3ヶ月以内だとNG、3ヶ月以上だとOKと算出

 としたいです。
 説明が分かりにくくて申し訳ないです。

 (さぼてん)


他の皆さんがどう解決されるか、また疑問に思っておられるか、わかりませんが、まず2点、質問させてください。

1.上のサンプル例で、E2セルに出力する2ヶ月ですが、何日で1ヶ月とカウントするか(30日でなく、31日とか、2月の28日はどのように処理するのか)、閏年の2月をまたぐ場合は366日を1年とカウントするのか否かがわかりかねます。

2.上記1の解決となるかもしれませんが、終了日は、必ず開始日の1ヶ月後でしょうか?

(終了日は、開始月の日の翌月の前日で固定でしょうか?)

日数を割り出したり、文字列として何年何ヶ月何日と表示するだけならさほど難しくありませんが、年ごと月ごとに日数が異なるため、年ごと月ごとの定義を変える場合の処理は複雑となりそうです。

(えくせらんなぁ)


 [前提]
  1.各期間は、暦に従って算出するものとします。

  2.経過年月日は、(暦とは関係なく)対象二期間の日数合計が30日になると
    1ヶ月に繰上換算されるものとします。

 ※ EDATE()関数を使う関係で、エクセルのバージョンがXL2003以前でしたら、
   メニュー[ツール]→[アドイン]→[分析ツール]にチェックを入れてから、
   下記数式を入力してください。

 (1) E2セル =INT((H2+J2+(I2+K2)/30)/12)&"年"&MOD((H2+J2+INT((I2+K2)/30)),12)&"ヶ月"&MOD(I2+K2,30)&"日"
 (2) F2セル =L2*30+M2>=90
   ちょうど3ヶ月の場合は「NG」なら、イコールをハズして下さい。>=90 → >90 へ

 (3) H2セル =DATEDIF(A2,B2+1,"m")
 (4) I2セル =B2-EDATE(A2,DATEDIF(A2,B2+1,"m"))+(DAY(EDATE(A2,DATEDIF(A2,B2+1,"m")))=DAY(A2))

 (5) J2セル =DATEDIF(C2,D2+1,"m")
 (6) K2セル =D2-EDATE(C2,DATEDIF(C2,D2+1,"m"))+(DAY(EDATE(C2,DATEDIF(C2,D2+1,"m")))=DAY(C2))

 (7) L2セル =DATEDIF(B2,C2+1,"m")
 (8) M2セル =C2-EDATE(B2,DATEDIF(B2,C2+1,"m"))+(DAY(EDATE(B2,DATEDIF(B2,C2+1,"m")))=DAY(B2))

 <結果図>
  行 ____A____ ____B____ ____C____ ____D____ ______E______ __F__ _G_ ____H____ _____I_____ ____J____ _____K_____ ____L____ ____M____
   1 第1開始   第1終了   第2開始   第2終了   経過年月日    T/F       第1回月数 第1回日数   第2回月数 第2回日数   空白月数  空白日数 
   2 H22.6.11  H22.7.10  H22.11.11 H22.12.10 0年2ヶ月0日   TRUE              1          0          1          0         4         2 
   3 2010/1/31 2010/2/28 2010/4/30 2010/5/28 0年1ヶ月29日  FALSE             1          0          0         29         2         3 
   4 2010/1/31 2010/2/27 2010/4/30 2010/5/27 0年1ヶ月26日  FALSE             0         28          0         28         2         4 
   5 2010/2/1  2010/2/28 2010/5/1  2010/5/28 0年1ヶ月28日  FALSE             1          0          0         28         2         4 
   6 2010/2/1  2010/3/30 2010/5/1  2010/6/30 0年4ヶ月0日   FALSE             1         30          2          0         1         2 
   7 2010/2/1  2010/3/31 2010/5/1  2010/6/30 0年4ヶ月0日   FALSE             2          0          2          0         1         1 
   8 2010/2/1  2010/4/1  2010/5/1  2010/7/1  0年4ヶ月2日   FALSE             2          1          2          1         1         1 
   9 2010/2/2  2010/3/31 2010/5/2  2010/6/30 0年3ヶ月29日  FALSE             1         30          1         29         1         2 
  10 2010/2/28 2010/3/31 2010/5/28 2010/6/30 0年2ヶ月7日   FALSE             1          4          1          3         1        28 
  11 2010/3/1  2010/3/31 2010/6/1  2010/6/30 0年2ヶ月0日   FALSE             1          0          1          0         2         2 
  12 2010/3/1  2010/3/30 2010/6/1  2010/6/30 0年2ヶ月0日   FALSE             0         30          1          0         2         3 
  13 2010/3/30 2010/4/30 2010/6/30 2010/7/30 0年2ヶ月2日   FALSE             1          1          1          1         2         1 
  14 2010/3/31 2010/4/30 2010/6/30 2010/7/30 0年2ヶ月1日   FALSE             1          0          1          1         2         1 
  15 2010/5/1  2010/5/15 2010/8/1  2010/8/15 0年1ヶ月0日   FALSE             0         15          0         15         2        18 
  16 2010/5/1  2010/5/15 2010/8/15 2010/8/30 0年1ヶ月1日   TRUE              0         15          0         16         3         1 
  17 2010/5/1  2010/5/15 2010/7/16 2010/8/31 0年2ヶ月1日   FALSE             0         15          1         16         2         2 

 ※ 上記サンプルの結果がご希望と違う時は、何が正解なのか、それはどんな計算をするからなのか、をご説明ください。

 (半平太) 2010/09/14 22:24

 訂正です。 m(__)m

 >  2.経過年月日は、(暦とは関係なく)対象二期間の日数合計が30日になると
 >    1ヶ月に繰上換算されるものとします。
   ↑
 1.表現が紛らわしかったです。           へ変更
                          ___↓___  
   2.経過年月日は、(暦とは関係なく)対象二期間の日数部分の合計が30日になると
     1ヶ月に繰上換算されるものとします。

 > (2) F2セル =L2*30+M2>=90
 >   ちょうど3ヶ月の場合は「NG」なら、イコールをハズして下さい。>=90 → >90 へ
    ↑
 2.ここは間違えました。
   『各期間は暦に従って算出する』前提でしたので、
   「2ヶ月と30日」は「未だ3ヶ月ではない」ことになるので、以下に訂正します。

  (1)ちょうど3ヶ月は「OK」になる場合
    F2セル =IF(L2>=3,"OK","NG")

  (2)ちょうど3ヶ月は「NG」になる場合
    F2セル =IF(L2&"-"&M2="3-0","NG",IF(L2>=3,"OK","NG"))

 (半平太) 2010/09/15 11:01

 >えくせらんなぁ様、ご質問ありがとうございます。
 回答と致しましては

 1.E列の経過年月日の算出は
 H22/01/01〜H22/01/02は2日
 H22/01/01〜H22/01/31は1ヶ月
 H22/01/01〜H22/02/28は1ヶ月(閏年も1ヶ月)
 H22/04/01〜H22/04/30は1ヶ月
 H22/01/11〜H22/02/10は1ヶ月
 H22/04/11〜H22/05/10は1ヶ月として、カウントになります。
 月によって日数が変動してしまいますがカウントは月でカウントしたいです。

 2.開始日と終了日は、固定ではなく期間もバラバラです。

 F列の算出(3ヶ月計算)ですが
 1回目終了日がH22/01/01
 2回目開始日がH22/04/01はOK

 1回目終了日がH22/01/01
 2回目開始日がH22/03/31はNG

 ただ
 1回目終了日がH22/10/30
 2回目開始日がH23/03/01からOKとなります。

 >半平太様
 説明不足に関わらずご親切に、ありがとうございます!
 計算理由と致しましては欠勤日数の計算になります。
 欠勤の通算が1年半で満了。途中復帰したとしても3ヶ月の連続復帰期間がなければ前回の
 欠勤期間と通算する。
 これが基になります。

 (フク) 

 私には、期間の算出法が理解できないので、ドロップアウトします。 m(__)m

 (半平太) 2010/09/16 00:00

 こんにちは。
 皆さんがご指摘されているように、期間の算出ルールが不明ですね。

 例えば、1ヶ月29日間と1ヶ月3日間を合計したら何ヶ月何日間か?と聞かれても、1ヶ月32日間としか答えられません。

 ↑で書かれているように、欠勤期間の計算であれば、通常は就業規則などに、期間の計算方法が規定されていると思います。
(1ヶ月未満の端数日は、切り上げとか、切り捨てとか、15捨16入とか)

 その辺りをもう一度確認されてはいかがでしょうか。

 (コタ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.