人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel2010を利用しています。 特定の日時に特定の時間を足した日時を出したいのですが、その際に土日祝日などは飛ばすようにしたいのです。 分析ツールのWorkday関数がやりたいことに近いのですが、それでは時間が無視されてしまいました。 Add Star
例として、以下のような計算をしたいと考えています。
起算日時 2015/4/2(木) 15:00に40時間を足すが、休日(土日)は無視する → 求めたい日時は2015/4/6(月) 7:00
簡単に実現する方法はありますでしょうか?

●質問者: end1736
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●100ポイント

元の日付が 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 関数で場合分けしてます。


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

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

2 ● Mook
●200ポイント ベストアンサー

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


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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ