ID非公開さん
2022/5/19 7:35
2回答
エクセルの計算式について教えてください。
エクセルの計算式について教えてください。 月の労働時間の平均が80時間を超えてはいけないので、その月の労働時間を入力すると翌月は何時間まで労働できるかを自動計算できるようにしたいのです。 例えば、1月〜12月までのセルにその月の労働時間の合計を毎月入力するとします。 仮に今月は5月なので5月末に5月の労働時間を5月のセルに入力すると、来月(6月)は何時間まで労働できるかを自動計算させたいのです。 条件が一つありまして、平均時間の期間対象は、 過去2ヶ月、過去3ヶ月、過去4ヶ月、過去5ヶ月、過去6ヶ月のいずれの組み合わせでも80時間を超えてはならないようにしたいです。 例えば、5月分を入力すると、翌月(6月)のセルには、 下記の条件をクリアする計算式の値が表示するようにしたいです。 ・過去2ヶ月(5〜6月の平均が80時間を超えてはならない) ・過去3ヶ月(4〜6月の平均が80時間を超えてはならない) ・過去4ヶ月(3〜6月の平均が80時間を超えてはならない) ・過去5ヶ月(2〜6月の平均が80時間を超えてはならない) ・過去6ヶ月(1〜6月の平均が80時間を超えてはならない) 要は、翌月の労働時間は過去2〜6ヶ月のいずれの平均でも80時間を超えないようにするには、何時間まで労働できるかを自動計算させたいのです。 80時間まではOKです。 80.1時間以上がNGです。 よろしくお願いします。
Excel・70閲覧
ベストアンサー
5月まで入力済みとして、 5月から6月までの平均が80時間を超えない → 6月は160時間から5月の時間を引き算した分 4月から6月までの平均が80時間を超えない → 6月は240時間から4月と5月の合計を引き算した分 以下同様として、最小値を選ぶことになります。ポイントは範囲をどう変化させながら合計するかですね。 offset(先月の実績,0,0, -n) で、先月の実績のセルを基準にnヶ月分の範囲で上に広がっていきます。offset(E14,0,0,-3) なら E12:E14 ってことです。ただこれを使って。offset(E14,0,0,{-1,-2,-3}) みたいなことをして配列を生成しても、「列ごとに合計して1次元な配列に加工する」ことはできませんでした。そうすると、ひたすら列記するしかありません。 というわけで、"8:00"*(n+1)-sum(offset(先月の実績,0,0,-1*n)) をn=1から5まで並べて最小値を求めたのが添付の図です。
ID非公開さん
質問者2022/5/23 10:21