1

タスクの開始日と終了日のリストを含むデータシートがあります。クリスマス休暇 (12 月 11 日から 1 月 7 日まで) の開始日から終了日までの日数を計算する必要があります。

たとえば、開始日が 2012 年 10 月 12 日で終了日が 2013 年 12 月 12 日である場合、28 日はこれらの日付の間にあります。開始日が 2012 年 12 月 15 日で、終了日が 2013 年 12 月 3 日である場合、これらの日付の間には 22 日があります。開始日が 2012 年 10 月 12 日で、終了日が 2014 年 12 月 1 日である場合、56 日がこれらの日付の間にあります (範囲が 2 年あるため)。

私が設定した要件のため、数式でこれを行う必要があります。最初に、クリスマス (12 月 25 日) が発生する回数を使用して、発生ごとに 4 週間を計算することにしました。

私が使った式は

=FLOOR((E12-A25)/365,1)+IF(OR(MONTH(E12)=12,
       MONTH(A25)=12),
       IF(AND(DAY(A25)<=25,DAY(E12)>=25),1,0),
       IF(OR(MONTH(A25)>=12,
       IF(MONTH(E12)<MONTH(A25),
          MONTH(E12)+12,
          MONTH(E12))>=12),1,0))*28

ただし、範囲の開始日と終了日がこれら 2 つの日付の間にある場合、明らかにこれは役に立ちません。

助言がありますか?私は行き止まりにいます

4

2 に答える 2

0

この数式は、12 月 11 日から 1 月 7 日までの日付を、複数の年にわたる場合でも、任意の日付範囲内でカウントします。

=SUMPRODUCT((TEXT(ROW(INDIRECT(B1&":"&B2)),"mmdd")+0>=1211)+(TEXT(ROW(INDIRECT(B1&":"&B2)),"mmdd")+0<=107))

開始日は B1、終了日は B2 です。

これにより、範囲内のすべての日付が数値に変換されます。たとえば、12 月 1 日は 1201 になり、3 月 4 日は 304 になり、1207 以上 (12 月 7 日) または 107 以下 (1 月 7 日) の日付がカウントされます。 、したがって、最後の例では 56 になります

すべての日付から 7 を減算する場合 (1 月 7 日を終了日として)、式を短くすることができます。結果の数値が >= 1204 であることを確認するだけで済みます。

=SUMPRODUCT((TEXT(ROW(INDIRECT(B1-7&":"&B2-7)),"mmdd")+0>=1204)+0)

.....そして、同じ結果が得られるはずの3番目のオプションも、リチャードタレントのアプローチに近いです-年数を取得し、28を掛けてから、開始/終了日に基づいて数値を調整します

=(YEAR(B1-7)-YEAR(B2-7)+1)*28-MAX(0,B2-DATE(YEAR(B2-7),12,11))-MIN(28,DATE(YEAR(B1-7)+1,1,7)-B1)

于 2012-12-19T13:17:01.000 に答える
0

2 番目の例の日付計算は間違っています。その範囲には 22 日ではなく 24 日があります。

私はあなたをそこに連れて行くことができます1 つの休暇期間:

させて:

  • A1 には、休日の開始 (2012 年 12 月 11 日) が含まれています。
  • A2 休日の終了を含む (2013 年 1 月 7 日)
  • B1 には開始日が含まれます
  • B2 には終了日が含まれます

方式:

=MAX(MIN(A2+1,B2+1),A1) - MIN(MAX(A1,B1),A2+1)

この数式は基本的に、重複する日付範囲がある場合はそれを見つけ、減算して全体の日数を取得します。「+1」は、「終了日」が実際に含まれているためです。そのため、日付計算では、その最終日をキャプチャするには、1 月 7 日ではなく 1 月 8 日に休日を終了する必要があります。

ただし、これは1年間の休暇にのみ有効です。休日の範囲を他のセルに保存し、同じ数式を使用してそれらをすべて加算することもできますが、設定した年数に制限されます。

于 2012-12-19T07:18:28.953 に答える