No.2ベストアンサー
- 回答日時:
わたしもこれをワークシート関数で求めようとして挫折しました。
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
参考URL:http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips05.htm
No.4
- 回答日時:
No2です。
No3さんご紹介の「代わり」の式でDatedif関数のバグが解消できるのなら凄いと思ったのですか・・・。
=DATEDIF(A1,B1,"Y")&"年"&DATEDIF(A1,B1,"YM")&"ヶ月"&IF(A1>B1,#NUM!,IF(DAY(B1)>=DAY(A1),DAY(B1)-DAY(A1),B1-MIN(DATE(YEAR(B1),MONTH(B1)-1,DAY(A1)),B1-DAY(B1))))&"日"でやってみましたが、やはり
2005/2/28-2005/4/30が0年2ヶ月2日になってしまいます。(2日余分です)
No.3
- 回答日時:
DATEDIF(A1,B1,"MD") の代わりの例です。
=IF(A1>B1,#NUM!,IF(DAY(B1)>=DAY(A1),DAY(B1)-DAY(A1),B1-MIN(DATE(YEAR(B1),MONTH(B1)-1,DAY(A1)),B1-DAY(B1))))
DATEDIF(A1,B1,"YD") の代わりの例です。
=IF(A1>B1,#NUM!,B1-DATE(YEAR(B1)-IF(DATE(YEAR(B1),MONTH(A1),DAY(A1))>B1,1,0),MONTH(A1),DAY(A1)))
参考URL:http://hp.vector.co.jp/authors/VA016119/kitan01. …
No.1
- 回答日時:
それぞれ単一のセルに入っているのなら、datedif関数でOKです。
廃止予定なのか、最近のエクセルにはヘルプすら出ませんが計算はできます。=datedif(a1,b1,"Y")&"年"&datedif(a1,b1,"YM")&"ヶ月"&datedif(a1,b1,"MD")&"日
参考URL:http://kokoro.kir.jp/excel/datedif.html,http://o …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ペントハウスは述べ床面積に入る?
-
長期優良住宅について
-
敷地上に設置されている受水槽...
-
天空率 屋外階段の扱いについて
-
直径1m未満の外部の螺旋階段は...
-
片持ち式カーポートの先端の1m...
-
屋外階段で地上階に降りたあと...
-
店舗の階段の幅と踊り場
-
建物表示登記の図面と求積にポ...
-
共同住宅の容積、エントランス...
-
共同住宅 2以上の直通階段
-
排煙に関わる告示
-
倉庫の採光・換気等の計算
-
建築基準法28条 居室の採光
-
ショールームの用途区分は?
-
事務室の有効採光の計算は?
-
住宅の図面にある「ALVS」...
-
車寄せ可能な玄関ポーチは床面...
-
天井チャンバー方式の排煙にお...
-
平面図の平米と坪の出し方がわ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ペントハウスは述べ床面積に入る?
-
敷地上に設置されている受水槽...
-
外置き給湯器が床面積算入?
-
建物表示登記の図面と求積にポ...
-
片持ち式カーポートの先端の1m...
-
直径1m未満の外部の螺旋階段は...
-
階段下の床面積参入について 集...
-
搭屋の容積算入
-
建築基準法 塔屋の最高高さに...
-
長期優良住宅について
-
店舗の階段の幅と踊り場
-
物品販売業を営む店舗の階段幅
-
共同住宅の容積、エントランス...
-
屋外階段で地上階に降りたあと...
-
住宅のポーチ階段の手すりについて
-
2方向避難について
-
柱付きの外廊下・外階段は建築...
-
共同住宅 2以上の直通階段
-
容積率に含まれるもの含まれな...
-
室内階段の手摺子の間隔につい...
おすすめ情報