例として、以下のような計算をしたいと考えています。
起算日時 2015/4/2(木) 15:00に40時間を足すが、休日(土日)は無視する → 求めたい日時は2015/4/6(月) 7:00
簡単に実現する方法はありますでしょうか?
A1 に基準となる日時
A2 に加算する時間
C列 に祝日リスト
として、
A3 =WORKDAY(INT(A1),INT((A2+MOD(A1,1)*24)/24),C:C) +MOD(A2/24+MOD(A1,1),1)
A1、A3 の書式はユーザ定義で YYYY/MM/DD hh:mm
などで。
元の日付が A2 に入ってるとして、以下のような式だったら、「例として」の要求は満たしてます。
=IF(WEEKDAY(A2+40/24)=7,A2+40/24+2,IF(WEEKDAY(A2+40/24)=1,A2+40/24+1,A2+40/24))
セルの式でやると、40時間を足すところが5回も出てきて冗長な感じだし、やりたいことは「2営業日後の午前7時」を求めたい(切れ目は0時じゃないと思う)、ということのような気もするので、VBA を使ってユーザ定義関数を使う方が良いんじゃないかな、という気もします。
ご回答ありがとうございます。
土日以外の休日も考慮したいので、Workday関数を使う方法を使うことにしましたが、助言いただいた通りVBAで書いてアドインにしました。 非常にすっきりしました。
A1 に基準となる日時
A2 に加算する時間
C列 に祝日リスト
として、
A3 =WORKDAY(INT(A1),INT((A2+MOD(A1,1)*24)/24),C:C) +MOD(A2/24+MOD(A1,1),1)
A1、A3 の書式はユーザ定義で YYYY/MM/DD hh:mm
などで。
ご回答ありがとうございます。
やりたいことがドンピシャでできました。 アドインに組み込むにあたり、小数点以下の抽出にはMod(A1,1)は使わず、A1-Int(A1)を使いました。
ご回答ありがとうございます。
2015/04/03 19:41:44やりたいことがドンピシャでできました。 アドインに組み込むにあたり、小数点以下の抽出にはMod(A1,1)は使わず、A1-Int(A1)を使いました。