- 締切済み
所要時間を日数化する方法について
条件付きで、ある日時(A)からある日時(B)までの所要日数を出そうとしています。 例)(A)2/3 8:45~ (B)2/3 18:00 ⇒ 1.0日 (A)2/3 15:20~ (B)2/3 18:00 ⇒ 0.5日 (A)2/4 15:30~ (B)2/5 18:00 ⇒ 1.5日 ここで、条件として、1日は8:30~18:00までを1日とカウントする。 (A)の時間が 0:00~9:00までであれば、1とし、 9:00~12:00までであれば0.75とし、12:00~15:00までであれば、0.5とし、 それ以外15:00~24:00までは 0とする。 (B)の時間は変わらず18:00を最終とします。 少し分りにくいかもしれませんが、時間帯によって数値を割り当てる方法を探しています。 計算式などについて教えてください。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
> (A)2/3 15:20~ (B)2/3 18:00 ⇒ 0.5日 > (A)2/4 15:30~ (B)2/5 18:00 ⇒ 1.5日 >それ以外15:00~24:00までは 0とする。 上記2件(0.5日、1.5日)は矛盾します。 正しくは次のようになるのではないでしょうか? (A)2/3 15:20~ (B)2/3 18:00 ⇒ 0.0日 (A)2/4 15:30~ (B)2/5 18:00 ⇒ 1.0日 また、厳密に考えるとき0:00~9:00の9:00と9:00~12:00の9:00は重複しますので(A)の時刻が9:00のとき1日とするか0.75日にするかを決めなければなりません。 そこで、(A)<=9:00を1日、(A)<=12:00を0.75日、(A)<=15:00を0.5日、(A)<24:00を0日とすれば良いでしょう。小さい方から順次比較することで目的通りの結果を得られるはずです。 >(B)の時間は変わらず18:00を最終とします。 「(B)の時間」は「(B)の時刻」ですよね? 時間と時刻は「似て非なり」です。時刻はその時の瞬時であり、時刻は或る時刻から別の時刻までの間を言います。 (B)の日時の時刻はすべて18:00と言うことで時間を計算する対象にならないと言うことですか? >計算式などについて教えてください。 矛盾点を勝手解釈で対応させて頂きます。 計算方法は幾つかあります。 条件分岐で端数を計算する方法(IF関数の入れ子構造) =INT(B4)-INT(A4)+IF(MOD(A4,1)<="9:00"*1,1,IF(MOD(A4,1)<="12:00"*1,0.75,IF(MOD(A4,1)<="15:00"*1,0.5,0))) 定数の一覧から条件抽出する方法(LOOKUP関数で数式内に定数の配列を使う) =INT(B1)-INT(A1)+LOOKUP(MOD(A1,1),{0;0.375;0.5;0.625;1},{1;0.75;0.5;0;0}) 他にもありますが省略します。
- aokii
- ベストアンサー率23% (5210/22062)
単に(A)の時刻のみの違いによって、(A)と(B) の間の日数を決めるのであれば、 (A)の時刻部分だけを使って以下の表から、VLOOKUP関数を使って,0.75.05.0のいずれかを抽出し、その値と、(A)の月日部分のみと(B) の月日部分のみの日数差を、加算してはいかがでしょう。 0:00 1 9:00 0.75 12:00 0.5 15:00 0
- Nouble
- ベストアンサー率18% (330/1783)
此では、どうでしょう? 9:00と、12:00の時 どちらに、属させるか が、判りません でもまあ、 仮には、書けます Aが、入っているセルを 仮に A3と、して 話します =("0:00"<=A3<="9:00")*1 +("9:00"<=A3<="12:00")*0.75 +("12:00"<=A3<="15:00")*0.5 此のまま、では 9:00の時. 12:00の時、 変な値に、なりますが 扱いが 先にも 述べました、通り 判りません ので、 <=の、=を 適切に 抜いて、ください ね
- tsubu-yuki
- ベストアンサー率46% (179/386)
> 少し分りにくいかもしれませんが、 少しじゃないですね(笑)。 まず、どうにもわからないことが一点。 > (A)の時間が 0:00~9:00までであれば、1とし、 > 9:00~12:00までであれば0.75とし(以下略) 9:00はどちらに含みます? 0時の扱いも曖昧ですよね? で、 > 15:00~24:00までは 0とする のであれば、2個目の例 > (A)2/3 15:20~ (B)2/3 18:00 ⇒ 0.5日 これは0日ではないですか? 開始(A)が15時以降なのですから。 3個目についても何故1.5日になるのか、見当もつきません。 例えば 「2/5の8:30~18:00までは1日」 だったとしても、 「15時~は0」なのだから、どう解釈しても結果は1日のはずです。 とりあえず、 HOUR関数、VLOOKUP関数を使えば添付図のように処理が可能です。 考え方を整理なさった方が良いかもしれません。