• ベストアンサー

Excel  期間を算出したい 計算式 教えてください!

こんにちは。Excelで次の計算式を作りたいです。 (1)期間を算出する計算式     A      B 1 1990/3/30   セル番号A1;入塾年月日 セル番号B2;入塾から現在(2006/5/30)までの年数(期間。何年何ヶ月何日あるのか?)を表示されるようにしたい。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

こんばんは。 わたしもこれをワークシート関数で求めようとして挫折しました。 ワークシート関数にも、Datedifという関数があるのですが、末日計算の端日数処理でバグがあり、信頼に欠け、使えませんでした。 しかたなく、一般公開されているサンプルコードで下記のようなVBAでユーザー定義関数を用いるしかありませんでした。 使用方法 下記のマクロのコードを標準モジュールに貼り付け、ワークシートのセルに 開始日A1 終了日B1 の場合 =ktDATEDIF(A1,B1,"YMD",FALSE) としてみてください。 最後の引数は初日算入ならTRUE, 初日不算入ならFALSEです。 (民法規定は[初日 不算入]が基本です) 『開始日』『終了日』に対し、民法規定に従って【y年mヶ月d日】を求めるマクロ。 Public Function ktDATEDIF(ByVal StartDate As Date, _ ByVal EndDate As Date, _ ByVal Interval As String, _ ByVal FirstDay As Boolean) As Variant ' [Interval] ' YMD:"yyyy年mヶ月d日"で編集(文字列) ' Y:期間内満年数, M:期間内満総月数 ' YM:端数の月数, MD:端数の日数 ' [FirstDay] ' 初日算入=True, 初日不算入=False (民法規定は[初日 不算入]が基本) Dim dtmFirstDate As Date '起算日 Dim dtmLastDate As Date '満了日 Dim wkDate As Date Dim intMonth As Integer '総月数 Dim intYear As Integer Dim intMonth_in_Year As Integer '年未満の月数 Dim intDay_in_Month As Integer '月未満の日数 If (StartDate > EndDate) Then ktDATEDIF = "Error" Exit Function End If If (FirstDay = False) Then dtmFirstDate = StartDate + 1 '民法規定は[初日 不算入]が基本 Else dtmFirstDate = StartDate 'True:[初日算入]指定 End If dtmLastDate = EndDate '注)[DateDiff関数]自体は初日不算入で処理している If (Day(dtmFirstDate) = 1) Then '起算日が1日(開始日が月末日)の場合、月の大小閏に係わりなく '[月末日]までで『丸Nヶ月』 '月の大小閏に影響されないように「月末日~終了日」を1日分シフトして '「1日~(終了日+1)」で求める。 intMonth = DateDiff("m", dtmFirstDate, (dtmLastDate + 1)) intYear = intMonth \ 12 intMonth_in_Year = intMonth Mod 12 If (Day(dtmLastDate + 1) = 1) Then '満了日(終了日)が月末か? intDay_in_Month = 0 Else intDay_in_Month = Day(dtmLastDate) End If Else '起算日≠1日の場合、「起算日の応答日前日」までで『丸Nヶ月』 intMonth = DateDiff("m", (dtmFirstDate - 1), dtmLastDate) wkDate = DateAdd("m", intMonth, (dtmFirstDate - 1)) If (wkDate > dtmLastDate) Then intMonth = intMonth - 1 wkDate = DateAdd("m", intMonth, (dtmFirstDate - 1)) End If intDay_in_Month = DateDiff("d", wkDate, dtmLastDate) intYear = intMonth \ 12 intMonth_in_Year = intMonth Mod 12 End If Select Case UCase(Interval) Case "YMD" ktDATEDIF = intYear & "年" & intMonth_in_Year & "ヶ月" & intDay_in_Month & "日" Case "Y" ktDATEDIF = intYear Case "M" ktDATEDIF = intMonth Case "YM" ktDATEDIF = intMonth_in_Year Case "MD" ktDATEDIF = intDay_in_Month Case Else ktDATEDIF = "Error" End Select End Function

poisson
質問者

お礼

merlionXXさんこんばんは! すごくご丁寧にありがとうございます!m(^o^)m 今、調べていたら、dateifを使えばいい、とネットにあったのですが、端数処理に信頼がおけない、とのことで、、 ここまで詳しく教えて頂いてありがたいです。 早速あした使わせて頂こうと思います! ありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#204879
noname#204879
回答No.2

=DATEDIF(A1,TODAY(),"y")&"年"&DATEDIF(A1,TODAY(),"ym")&"ヵ月"&DATEDIF(A1,TODAY(),"md")&"日"

poisson
質問者

お礼

mike_gさんありがとうございました。 締め切ろうと思いましたら、入れ違いにコメント下さったのですね^^ dateifを使おうと思っても、こんなに長く複雑になるのですねぇ~。 タイミングよくご回答下さってよかったです。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelでの期間計算の方法について

    お世話になります。 今、職員の退職金の計算表を作成中です。 その中で、各職員の定年60歳における退職金の額を求めたくて思考錯誤しておりますので、次の内容について教えてください。    A      B      C      D 1 生年月日 60歳の年月日 採用年月日 勤続期間(年月日)  2 S30.6.4   ????     S50.6.1  ???? 上記、B2のセルには、60歳の誕生日を、D2のセルには、C2とB2の差額である勤続期間(年/月/日)を導く関数(数式)を教えてください。よろしくお願いします。

  • Excel 在籍期間に応じてボーナスの額を算出 条件式 計算式

    こんにちは。下記の計算式を教えてくださいm(^_^)m 【期間に関する条件式】     A      B       C    D   E 1 2006/2/1   2006/3/10  2006/5/15  (バツ)         2 2006/1/10  2006/3/15         (マル)1,000 3 2006/2/1         2006/5/31 (マル) 1,500 4 2006/4/1  2006/4/15  2006/6/15  (バツ)         5 2006/3/10              (マル) 1,000 A列;入塾年月日(5行目については入塾と同時にAコース在籍) B列;BコースからAコースへのコース変更年月日(5行目については入塾と同時にAコース在籍のため、B列のコース変更年月日は空欄) C列;退塾の年月日(退塾する人だけ入力) D列;図書券を貰う資格の有無(ある人;マル印、無い人;バツ印) E列;図書券を貰う資格のある人の図書券の額 上記の説明です。ある学習塾で、Aコースに2006/2/1から2006/5/31まで在籍している人に、在籍期間に応じて図書券を「最大2000円分」プレゼントすることになりました。 C列の資格の有無の条件とD列の図書券の額の算出方法; 2006/2/1~2006/5/31までの期間を対象に下記を考慮して計算。[a]期間中半分以上(この場合対象期間が4か月間あるので、2ヶ月以上の在籍が「半分以上」となる)在籍していること。半分以内の在籍は対象外。 [b]B列(5行目についてはA列)において、コース変更月(5行目については入塾月)は期間として換算せず切り捨てる。 [c]対象期間末(2006/5/31)に在籍していない人は、たとえ期間中半分以上在籍していても対象外。 〈例〉1行目の人物;[c]に該当せず図書券受領資格なし。 2行目の人物;資格有り。3月は移動月で切り捨て、4月~5月の2か月在籍のため、図書券1000円。

  • 期間計算式を教えてください

    EXCELでの期間計算式を教えてください  例として2003年7月12日から2007年9月3日までの期間を何年何ヶ月と表示させる計算式を入力したいのですが、下記の計算式を入力すると「一ヶ月未満」が切り捨てられてしましまい、5年1ヶ月と表示されます。一ヶ月に満たない月も一ヶ月とする計算式を作成したいと思っています。例題であれば、5年3ヶ月と表記できる計算式を教えてください。  (始まりの期間をA1に終了をB1にそれぞれ記入し 期間をC1に表示させています。) =DATEDIF(A1、B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"カ月"  お願いします。

  • エクセルで日付の計算

    エクセル初心者です。私は、エクセルである免許の有効期間などの管理をしています。有効期間は5年間なので、次のように 免許年月日の日付を「2001/6/15」と入力し 表示はH13.6.15させています。 次に、免許の有効期間のセルのところを「H18.6.14」に免許の有効期間を自動計算するには、どうすればいいのでしょうか 色々と調べたのですがわかりません、宜しくお願いします。  

  • Excel : 日にちの計算

    【例】    (A列)        (B列) (1) 開始年月日:(入力) 平成12年10月1日 と表示  (2) 終了年月日:(入力) 平成19年4月16日 と表示 (3) 期 間 : 6年7ヶ月 ← これを表示させたい  (4) 期間年数 : 7年(6年1ヶ月でも6年11ヶ月でも)    ≪(3)期間を 6年7ヶ月 (4)期間年数を7年 と表示させたいのです≫ 平成12年10月1日~31日までが1ヶ月で あと、1日でも越えると11/1でも11/30でも2ヶ月とする。 平成12年10月1日~平成18年9月30日までが、6年で 平成18年10月1日~平成19年4月の1日でも31日でも             7ヶ月になります。 結果 B3に [6年7月] でも、 B3に[6] C3に年と打ち込み D3に[7] E3にヶ月と打っておく。 でも構わない。 最終的に 期間:6年7ヶ月は→期間年数:7年とする。  当然  期間:7年0ヶ月は→期間年数:7年       ( 6年12ヶ月と出る?)   【 期間の年数は○年 】 の結果が欲しい。 B1、B2への打込み方や書式設定(分類)とかも教えてください。 YEAR、や MONTH、IF、を使って見たのですが、日付を扱うのは 初めてで、上手くいきません。 どうか、よろしく、お願いします。

  • EXCELで年令計算するDATEDIF関数

    EXCELで年令計算する関数DATEDIFを使って、生年月日の記入をすると年令を表示しますが、 記入がないと 111才 になってしまいます。生年月日の記入がないときには 0才 にしたいのですが、わかりません。   たとえば、生年月日のセルを         B12         基準日(関数TODAY()を使用 )を E3         年令表示セルを           B11 にして、セルB11に次の関数を入力します。     =DATEDIF(B12,E3,"Y") & "才" すると、生年月日がセルB12に入っていれば、年令を表示しますが、生年月日の記入がない(空欄)と111才と表示されてしまいます。空欄では0才などにしたいのですが、ご教示をお願いします。 セルの西暦・和暦やTODAY関数が影響するのかわかりません。

  • エクセルの年齢の計算方法について

    エクセルで、A1に「現在の日付」、A2に「生年月日」を入れ、 A3のセルで次のとおり計算式、 =DATEDIF(A2,$A$1,"Y")&"年"&DATEDIF(A2,$A$1,"YM")+1&"ヶ月" を入力し、「○○年○○ヶ月」と表示させました。 このA2「生年月日」と、A3「○○年○○ヶ月」のデータがいくつかあるのですが、「○○年○○ヶ月」の平均値を求めることは可能でしょうか? その場合の、計算式等をお教えていただけないでしょうか? 分かりにくい説明で申し訳ありません。 よろしくお願いいたします。

  • エクセルの離れたセルの合計の算出

    エクセルで以下の算出ができなくて困っています。 book1のA1セルにbook2のA1、A3,A7セルの合計値を表示 book1のA2セルにbook2のA21、A23,A27セルの合計値を表示 book1のA3セルにbook2のA41、A43,A47セルの合計値を表示(以後セルが20ずつ増加) 算出件数が500以上あるため、1件ごとに計算するのでなく、何らかの算式でまとめて計算したいと思ってます。 良い方法はありませんか? よろしくお願いします。

  • エクセルでの勤続年数算出は?

     エクセルで勤続年数を出す方法を教えてください。 過去の質問を見ましたが、どう組み合わせたらいいのか分からず。。。 勤続年数を次のように算出したいのです。 「(1)15年まで55歳まで」「(2)15年以上55歳まで」「(3)55歳以上」  例えば   基準日   H20.4.1   生年月日  S26.6.20(56才9カ月12日)   入社日   S53.4.1(30年)   「(1)15年」「(2)13年2ヵ月18日」「(3)1年9カ月12日」   基準日   H20.4.1   生年月日  S24.4.29(58才11カ月3日)   入社日   H7.4.1(13年)   「(1)9年0カ月27日」「(2)」「(3)3年11カ月3日」 というような結果が出るように式を作りたいのです。 datedif等でいろいろ考えたのですが、いい方法がわかりません。 よろしくお願いします。

  • エクセルで勤続年数(切り上げ)を出したいのです。

    皆さんの以前の質問内容を検索してみても、どうしても分からないので、おたずねさせて下さい。 勤続年数を算出するにあたり、A1セルに入社年月日、B1に現在年月日を入力するとして、○年×ヶ月というものを =CONCATENATE(DATEDIF(A1,B+1,"y"),"年",DATEDIF(A1,B1+1,"ym"),"ヶ月") このような式で表しました。 例えば、 A1セルに1988/4/1 B1セルに2004/3/16と入力すると、結果、15年11ヶ月と計算されますが、これを16年と切り上げ、B1セルが2004/2/16の場合は15年11ヶ月と切り上げたいのです。 IF関数をくっつけないといけないのかと思いながらも、組み立てが分かりません。 どなたか、ご教示下さいますようよろしくお願い致します。

専門家に質問してみよう