2017-02-11 12 views
0

この作業はまだ簡単ですが、私はvbaに頼らずにこれを行う方法を理解できません。Excelで2つの日付間の年次休暇を計算する

私が必要とするのは、従業員が年末年始に使い切った時間数を、開始日と終了日、およびその作業時間に基づいて知ることだけです。

Hours of Work

より明確にするために、この例では、1人の従業員は7.5時間、毎日のために、唯一のウェッズ、木、金曜日の仕事、すなわち月曜日から日曜日までの時間を委託示しています。 従業員が年次休暇を取ることを選択した開始日と終了日を以下に示します。彼らの契約時間に基づいて、2つの日付間にどのくらいの年次休暇が使用されるかを計算する必要があります。この場合の回答は45時間です。ここで

+0

あなたは、(1)人が1日に就労しなければならない時間は何か、(2)就労する人は曜日、 (3)休日や休暇はどうですか、(4)どのフォーマットが長期間の所定のデータですか(例:10/04/2017から22/10/2017)?この場合、お互いの隣に約200列ありますか?データを行にまとめるほうが簡単でしょうか?また、平日に付いている日付は表示されませんか、フォーマットの下にこの情報を隠すだけで、実際に日付が含まれていますか? – Ralph

+0

従業員はすべて、他の人にさまざまな時間を費やすことができます。私の質問は、水曜日、木曜日、金曜日の7.5時間働いている従業員の一例です。これは、その年の契約時間です。私が提供した日付は、従業員が取ることを望んでいた年次休暇の開始日と終了日です。 – WillacyMe

答えて

2

は別のアプローチだ - 私は配列に開始日と終了日の間の日数を拡大してきた場合は、作業範囲

=SUMPRODUCT(N(OFFSET(A3,0,WEEKDAY(ROW(INDIRECT(A6&":"&B6)),2)-1))) 

enter image description here

の日にオフセットした日番号を使用しました

=SUMPRODUCT(N(OFFSET(A3,0,WEEKDAY(ROW(INDIRECT(A6&":"&B6)),2)-1))*ISNA(MATCH(ROW(INDIRECT(A6&":"&B6)),I3:N3,0))) 

を次のようにあなたがそれらを除外することができ - それはビット長ったらしいですが、O:(N3を言うI3で)あなたは休日のリストはどこかに持っていた日付私は現時点で考えることができますnly方法。

+0

1分未満でそのアルゴリズムで私を打ち負かしてください –

+0

これは優れた、雄弁な解決策です。それは、休日として7つのセルに渡って毎日計算して、それをまとめて合計する= networkdays.intlを使用すると、自分の結果に耐えます。これははるかにクリーンで使いやすくなります。 – WillacyMe

+1

私は通常速度に関してはあまり知られていませんが、幸運なことに、あまりにも多くの愚か者なしで働いていました。 –

関連する問題