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
この回答へのお礼
お礼日時:2006/05/30 23:59
merlionXXさんこんばんは!
すごくご丁寧にありがとうございます!m(^o^)m
今、調べていたら、dateifを使えばいい、とネットにあったのですが、端数処理に信頼がおけない、とのことで、、
ここまで詳しく教えて頂いてありがたいです。
早速あした使わせて頂こうと思います!
ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- Excel(エクセル) Excel ある日の45日後の計算 及び 3か月後の計算 6 2022/04/05 13:44
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
- Excel(エクセル) ExcelにてA1セルに1、B1セルに月と入力した際に、A列に日付、B列に曜日が入力される様になる為 1 2023/03/02 06:47
- 簿記検定・漢字検定・秘書検定 簿記2級 表作成時の仕訳の問題 2 2022/07/07 18:15
- Excel(エクセル) エクセルでIF関数中にIFERROR関数を使いたいのですが???? 5 2022/04/08 13:24
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Excel(エクセル) B列に、A列の数字が偶数の場合は1減算した数字、奇数の場合はそのまま数字を自動表示したい 4 2022/04/16 12:01
- Excel(エクセル) 至急回答お願いいたします><Excel関数について 8 2022/03/25 10:34
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
片持ち式カーポートの先端の1m...
-
外置き給湯器が床面積算入?
-
ペントハウスは述べ床面積に入る?
-
店舗の階段の幅と踊り場
-
柱付きの外廊下・外階段は建築...
-
建物の延床面積計算は、屋上階...
-
外玄関灯(ポーチ)の色
-
ミステリという勿れ11巻に出て...
-
住宅の図面にある「ALVS」...
-
倉庫の採光・換気等の計算
-
建築基準法28条 居室の採光
-
鉄骨耐火被覆材に埋込コンセン...
-
美濃太田駅の近くで24時間あい...
-
第一種低層住居専用地域におい...
-
平面図の平米と坪の出し方がわ...
-
建築確認申請中の変更について...
-
ガレージ・自動車車庫の内装制限
-
診療所
-
ALC壁に開口あけて鉄扉を付ける...
-
室面積について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ペントハウスは述べ床面積に入る?
-
外置き給湯器が床面積算入?
-
敷地上に設置されている受水槽...
-
建物表示登記の図面と求積にポ...
-
共同住宅の容積、エントランス...
-
直径1m未満の外部の螺旋階段は...
-
エスカレーター1段の高さ
-
片持ち式カーポートの先端の1m...
-
階段下の床面積参入について 集...
-
建築基準法 塔屋の最高高さに...
-
店舗の階段の幅と踊り場
-
搭屋の容積算入
-
住宅のポーチ階段の手すりについて
-
天空率 屋外階段の扱いについて
-
室内階段の手摺子の間隔につい...
-
柱付きの外廊下・外階段は建築...
-
屋外階段で地上階に降りたあと...
-
長期優良住宅について
-
物品販売業を営む店舗の階段幅
-
建物の延床面積計算は、屋上階...
おすすめ情報