Excel2010を利用しています。 特定の日時に特定の時間を足した日時を出したいのですが、その際に土日祝日などは飛ばすようにしたいのです。 分析ツールのWorkday関数がやりたいことに近いのですが、それでは時間が無視されてしまいました。 Add Star

例として、以下のような計算をしたいと考えています。
起算日時 2015/4/2(木) 15:00に40時間を足すが、休日(土日)は無視する → 求めたい日時は2015/4/6(月) 7:00
簡単に実現する方法はありますでしょうか?

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2015/04/02 22:26:53
  • 終了:2015/04/03 19:39:27

ベストアンサー

id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912015/04/03 09:54:56

ポイント200pt

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
などで。

id:end1736

ご回答ありがとうございます。
やりたいことがドンピシャでできました。 アドインに組み込むにあたり、小数点以下の抽出にはMod(A1,1)は使わず、A1-Int(A1)を使いました。

2015/04/03 19:41:44

その他の回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4545ベストアンサー獲得回数18952015/04/02 22:56:19

ポイント100pt

元の日付が A2 に入ってるとして、以下のような式だったら、「例として」の要求は満たしてます。

=IF(WEEKDAY(A2+40/24)=7,A2+40/24+2,IF(WEEKDAY(A2+40/24)=1,A2+40/24+1,A2+40/24))

f:id:a-kuma3:20150402225427p:image

WEEKDAY 関数で曜日が分かるので、それを IF 関数で場合分けしてます。

id:a-kuma3

セルの式でやると、40時間を足すところが5回も出てきて冗長な感じだし、やりたいことは「2営業日後の午前7時」を求めたい(切れ目は0時じゃないと思う)、ということのような気もするので、VBA を使ってユーザ定義関数を使う方が良いんじゃないかな、という気もします。

2015/04/03 01:06:32
id:end1736

ご回答ありがとうございます。
土日以外の休日も考慮したいので、Workday関数を使う方法を使うことにしましたが、助言いただいた通りVBAで書いてアドインにしました。 非常にすっきりしました。

2015/04/03 19:43:15
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912015/04/03 09:54:56ここでベストアンサー

ポイント200pt

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
などで。

id:end1736

ご回答ありがとうございます。
やりたいことがドンピシャでできました。 アドインに組み込むにあたり、小数点以下の抽出にはMod(A1,1)は使わず、A1-Int(A1)を使いました。

2015/04/03 19:41:44
  • id:taknt
    土日祝日だけはずすのか?
    年末年始や盆休みとかも考慮しなくていいのか?
    ま、祝日の日付リストを作ればそれで除外することは可能だが。
  • id:end1736
    >> きゃづみぃさん
    コメントありがとうございます。 説明が不足しており申し訳ありませんでした。 ご推察の通り、年末年始や別途指定した休日も考慮する必要がありましたので、休日リストを用意してWorkday関数を用いる方法を使うことにしました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません