• 締切済み

エクセルで、複数年にまたがる期間を、年ごとに日数計算できないかと思って

soixanteの回答

  • soixante
  • ベストアンサー率32% (401/1246)
回答No.4

#1の者です。 >Stday = Cells(1, 1).Value、Edday = Cells(1, 2).Valueの部分を変えればいいのでしょうか? はい。Stday はスタート日、Edday はエンド日としています。 他の部分もそれにあわせて変える必要はありますが、Cells というのは、R1C1形式ですので、丁寧に見ていただければ分かると思います。 念のため、簡単な解説コメントを足したコードを以下に記します。 #1の回答の代わりに以下を貼っても構いません。 VBAでは、文頭に’がついている文は解説文として色が変わりますのでコードには影響が出ません。 --------------------------------------------------------------------- Sub 日数計算() '変数宣言 Dim r As Integer, c As Integer, p As Integer Dim Stday As Date, Edday As Date On Error GoTo ErrShori '開始日、終了日のセット Stday = Cells(1, 1).Value Edday = Cells(1, 2).Value '前回分の内容を消す Range(Cells(2, 1), Cells(Rows.Count, 3)).ClearContents Cells(1, 3).ClearContents '開始日、終了日の関係によって場合分け処理 '開始日より終了日のほうが古い場合、エラーメッセージを出して終了 If Stday > Edday Then MsgBox "開始日と終了日の設定が間違っています。" Exit Sub '開始日と終了日が同じ場合 ElseIf Stday = Edday Then Range(Cells(2, 1), Cells(2, 2)).Value = Stday Cells(2, 3).Value = 0 '開始日と終了日が同じ年の場合 ElseIf Year(Stday) = Year(Edday) Then Cells(2, 1).Value = Stday Cells(2, 2).Value = Edday Cells(2, 3).Value = Cells(2, 2).Value - Cells(2, 1).Value + 1 '開始日と終了日が年が異なる場合 Else p = Year(Edday) - Year(Stday) + 1 Cells(2, 1).Value = Stday Cells(2, 2).Value = DateSerial(Year(Stday), 12, 31) Cells(2, 3).Value = Cells(2, 2).Value - Cells(2, 1).Value + 1 For r = 2 To p Cells(r + 1, 1).Value = DateSerial(Year(Stday) + r - 1, 1, 1) Cells(r + 1, 2).Value = DateSerial(Year(Stday) + r - 1, 12, 31) Cells(r + 1, 3).Value = Cells(r + 1, 2) - Cells(r + 1, 1) + 1 Next r Cells(p + 1, 2).Value = Edday Cells(p + 1, 3).Value = Cells(p + 1, 2) - Cells(p + 1, 1) End If 'A列、B列、C列の書式設定 Range(Columns(1), Columns(2)).NumberFormatLocal = "ggge年m月d日" Columns(3).NumberFormatLocal = "0" '経過日数の合計 With Cells(1, 3) .Value = Application.WorksheetFunction.Sum(Range(Cells(2, 3), Cells(Rows.Count, 3))) .NumberFormatLocal = "#,###" End With Exit Sub 'エラー(開始日・処理日に文字などを入力されたなど)発生時は終了させる ErrShori: MsgBox "エラーのため終了します" End Sub

jyango1
質問者

お礼

説明込みでわかりやすいです。ありがとうございます。 試してみます。

関連するQ&A

  • エクセルの日数計算について

    エクセル初心者です。 日数を求める計算式を教えてください。年とかではなく、○○日という計算です。 例えば、 平成10年2月1日 平成21年5月5日 という2つの日数を求めるのですが、求めるときに H11・12・31以前 ○○日 H12・1・1~H13・12・31 ○○日 H14・1・1~H18・12・31 ○○日 H19・1・1~H19・12・31 ○○日 H20・1・1~H20・12・31 ○○日 H21・1・1~          ○○日 と上記の期間をそれぞれ求める式を教えてください。 よろしくお願いします

  • エクセルで作業期間の日数を計算したい

    エクセルについて質問です。 セルA1に開始日(例:2012/2/20) セルC1に終了日(例:2012/5/12)を入力し、この期間の日数(○○日間)を 計算する方法を教えて下さい。 更にこの期間で、「土日祝日を除いた日数(平日のみの日数)」と 「日曜祝日を除いた日数(平日+祝日でない土曜日の日数)」を算出する方法も教えて下さい。 ちなみに作業日数を計算するのに、DAYS360関数を使ってみましたが、 1年を360日として計算するので、正確な日数になりません。 また、曜日や休日が絡むとどんな関数を使えば良いのか全くわかりません。 よろしくお願いいたします。

  • 日数計算ソフト

    例)平成11年9月1日から平成16年8月3日まで日数は何日間か、、、のように計算できるフリーソフトもしくはエクセルの計算式などご存知の方はいらっしゃいませんか?

  • エクセルで日数計算

    エクセル2003で、 A1に「5月10日」 B1に「8月3日」 と入力したとして C1に5月10日~8月3日までの日数(両端入れ) で自動的に計算してくれる関数ってありますか? よろしくお願いします。

  • エクセルで日数を計算したいんですが、

    エクセルで日数を計算したいんですが、 「月」と「日」を別のセルに入れています。 A1セル=月 B1セル=日 (例) A1セル B1セル 4月     10日 5月     13日 この4月10日から5月13日の間の日数を数えたいのですが セルが分かれていても計算することって可能ですか? 初歩的な質問で恐縮ですが教えて下さい! よろしくお願いします!

  • エクセルで期間から期間を足したり引いたりする方法を教えてください

    期間から期間を引く計算方法を教えてください ○年○ヵ月○日から○年○ヵ月○日を引いて○年○ヵ月○日を表示する方法を教えてください。 たとえば、勤続年数が31年6ヵ月15日(A1)で休職期間が1年8ヶ月21日(A2)あった場合、実際に勤務についていた日数を祭日に関係なく、○年○ヵ月○日(A3)と表示させたい。 入社日  昭和52年9月16日 退社日  平成21年3月31日 在籍期間  31年6ヵ月15日 休職開始日 平成18年1月8日 休職終了日 平成19年9月29日 休職期間   1年8ヶ月21日 期間計算の方法はEXCELのDATEDIF関数で出してます。 期間同士を足したり引いたりする方法を教えてください。

  • 日数計算について

    たとえば平成11年5月31日~15年6月31日までとあるとします。その間の日数を計算したいのですが簡単な求め方を教えてください。お願いします!

  • エクセル 平日の日数

    エクセルで、年月を入力するだけで その入力された月の平日の日数(土日・祝日を除いた日数)が 自動に入力される方法ってありますか? つまりA2に『平成21年1月』と入力すると    A3に『20』と出てくる と、いう感じ。 さらに、年と月を違うセルに入力(年は年度もあり)した時はどうでしょうか? つまりA1に『平成20年度』    A2に『1月』    と入力すると    A3に『20』と出てくる。 と、いう感じです。 もしおわかりの方がいらっしゃいましたらぜひ教えてください。

  • Excel 日数計算について

    Excelの日数計算について質問です。 H18.9.20(A2)からH19.2.22(B2)の期間を月数と残りの日数で表示すると =DATEDIF(A2,B2,"M")&"月" =DATEDIF(A2,B2,"MD")&"日" ここまでは何とかできましたが、 上記期間の1/2、及び1/3の月数と残日数を整数(端数は切捨て)で表示するにはどのような式が必要でしょうか? 月数は=DATEDIF(A2,B2,"M")で求めた月を1ヶ月30日で計算します。 よろしくご指導お願いします。

  • EXCELの日数計算

    各セルごとに平成 23 年 12 月 20 日 から 平成 23 年 12 月 25 日と15のセルに入力されたシートですがこれの日数を出すのはどうしたらいいでしょうか 教えてください。EXCEL2007を使用しています。