2017-07-21 7 views
1

私は式を書くことを試みています(つまり、vbaコードはvbaにインポートするので、指定した勤務時間で日付を計算します)。Excelスケジュールを時間と一緒に使用する

2つの主な変数があります。 作業時間(時間):その行の特定のジョブが何時間かかるかを指定します。 作業日(日付):そのジョブを開始する計画日です。

この計算は、数千の行に対して行われます。

今の数式は次のようなものです:workday(A2; Sum(A2:$ A $ 2)) 問題は、A2(時間単位の作業時間)は0から数1〜数百時間までの範囲である。 問題が分かるように、各行では合計数が増え、膨大な数になります。そして、もし私が開始日を修正しなければ、仕事時間は7時間以上、あるいは7時間を超えることがあるので、日付はほとんど決して正確ではありません。

ここでの主な目標は、各就業日の合計勤務時間が7時間を超えた場合に就業日を増やし、余分な時間または分を次の就業日に移すことです。

だから、このようになります。

作業時間---------------作業日

2 -------------------- ----- 2017年1月1日

4 ------------------------- 2017年1月1日

3 ---- --------------------- 02.01.2017

4 --------------------- ---- 02.01.2017

2 ------------------------- 03.01.2017

勤務時間はVBAの別の部分から来ており、就業日は自動計算される必要があります。 (私は最初の開始日を与えるつもりです)

答えて

0

累積作業時間欄のアイデアをカスタマイズして解決策を見つけました。

行15では、この式を累積作業時間列に使用しました。

=IF(K15>7;SUM(K15;MOD(L14;7));IF(L14>7;SUM(K15;MOD(L14;7));SUM(L14;K15))) 

再び15行目の場合、私はworkdateにこの式を使用しました。

=WORKDAY(M14;(L15/7)) 

これらの式を使用すると、作業日関数がうまく機能します。 累積作業時間のアイデアをありがとう!

1

累積作業時間の列を追加すると考えられますが、増加する傾向はありますが、合計が7を超えると、すべて開始されます。

作業日の列はこの情報を使用でき、合計が> 7になると翌営業日に移動します。

だから、置いてもよい:セルB2の

  • 式 - セルC3で=IF(SUM(B1,A2)>7,A2,SUM(B1,A2))
  • 式 - =IF(SUM(B3,A4)>7,WORKDAY(C3,1),C3)

をそして下の行の残りの部分にコピーします。

enter image description here

注:仮定はあなたのVBAが一列に7時間の最大値を入れてケースに作業時間が多い、それは前方に次の行の残高を運ぶことです。 VBAがそうしていない場合は、その問題に取り組むためにWork-time列に追加の式が必要です。

+0

返信いただきありがとうございますが、これらの数式では、B列は2行増加するだけです。だから、もし私が5行(1,1,1,2,2時間のような)で7時間を取得したら、正しく動作せず、C列の式が正しくない。それはそれ自身を指しています。 – Bildircin13

+0

あなたは正確に方向を正確に追跡していますか?このアップロードされたサンプルを見てみるとよいでしょう:https://docs.google.com/spreadsheets/d/13HXGzG60Jyom3AOrpqjbpSweQO6C63fzNhGkXKWZq5Q/edit?usp=sharing – curious

+0

あなたが書いた数式は実際にはB3になるでしょう。 C4の場合、A列の「作業時間」が7以上の場合はどうなりますか?あなたが書いたBの数式では、それが7より大きい場合、直接書かれます。しかし、セルA5が22または100であっても、スケジュールに3つの就業日を加える必要があります。 – Bildircin13

関連する問題