プロが教える店舗&オフィスのセキュリティ対策術

爬虫類を飼い始め、温度管理(設定値-温度計測箇所)を始めました。
昼と夜の温度管理値が違っており採取時刻によって設定(設定1or設定2)を変えるにように
エクセル式を作りたいのですがわかりません。

例 設定-A 、設定-B に入れる式 教えてください

「時刻により変わる式」の質問画像

質問者からの補足コメント

  • 昼間時間とは 例えば 朝7:00~夕方17:00 つまり17:01~朝6:59夜時間です。
    左側昼条件に 入りと切り時刻を入力すると右側夜条件に自動反映できるようにはなっています。

      補足日時:2022/11/29 02:04

A 回答 (3件)

他の回答者さんも指摘しておられますが、画像が不鮮明なため不明な部分が多く、かなりの推測を入れて回答せざるを得ません。



>昼間時間とは 例えば 朝7:00~夕方17:00 
>つまり17:01~朝6:59夜時間です。
>左側昼条件に 入りと切り時刻を入力すると右側夜条件に
>自動反映できるようにはなっています。

と説明されているので昼間時間は、もしかすると季節等によって変更になる場合があるのかも知れません。

>左側昼条件に入りと切り時刻を入力すると・・・

と仰っているので、昼間時間の開始時刻がB5セルに、昼間時間の終了時刻がC5セルに入力されるものと想像しました。

その状態でデータ採取時刻の区分によって「設定-A」「設定-B」に異なる数式を適用したいというのがご質問の主旨だと思います。

添付画像①をご覧ください。時刻は全てシリアル値で入力されているものとします。

H10セルに、

=IF(($C10>=$B$5)*($C10<=$C$5),$E$5-D10,$J$5-D10)・・・・・・(a)

という数式を記述し、右隣I列および下方向へコピーしています。

数式の意味は「データ採取時刻(C10)」が昼条件の入り(B5)以上かつ昼条件の切り(C5)以下のときは、設定1(E5)から計測値(D10)をマイナスし、それ以外のときは、設定2(J2)から計測値(D10)をマイナスする。

ということになります。

従って、条件が「〇時以上」が「〇時を超え」の場合は上記数式の「>=」を「>」に変更する必要がありますし、「●時以下」が「●時未満」の場合は「<=」を「<」に修正する必要があります。

添付画像②をご覧ください。

ご質問者が例示した昼間時間が朝7:00~夕方17:00という場合、画像②上図の赤線の部分になるわけです。

これを画像②の下図のように7時間左にずらすと0:00~10:00となり、上記(a)の数式で「〇〇時以降」かつ「●●時以前」という二つの条件を記述するところが「10:00以前」という一つの条件にすることができます。

これを説明したのが銀鱗さん回答です。

7時間左にずらすということは「時刻-7:00」を計算せよということですが、時刻が7:00以前の場合もあり、その場合結果がマイナスになってしまいます。
そこで1日が24時間であることを考慮すると、7時間左にずらすということは17(=24-7)時間右にずらすと同じことです。

つまり、「時刻+17:00」を計算し、24時を超える場合は24時以内の時刻に読み替えすればよいということです。

その手順で数式を組み立てると、H10セルに

=IF(MOD($C10+"24:00"*1-$B$5,1)<=$D$5,$E$5-D10,$J$5-D10)・・・・・・(b)

という数式を記述し、右隣I列および下方向へコピーすればよいことになります

確かに数式(b)は判別条件は一つになるのですが、数値を加工するための数式が増えてしまい(a)より長くなりますし、数式でなにをやろうとしているのかが判りにくいため、メンテナンス性が低下する気もします。

最終的には(a)(b)どちらにするかは好みの問題かも知れません。
「時刻により変わる式」の回答画像3
    • good
    • 0
この回答へのお礼

皆さん回答ありがとうございます
やりたかったことは、わざわざ作成してもらった表の内容そのものです。
季節毎に日照時間やサーモスタットの設定温度を変えて必要最低限入力
し後は自動計算できたらと軽く考えていましたがエクセル式の深い知識
がないと辿り着けない領域でした。

本当にありがとうございました。

お礼日時:2022/12/01 00:04

画像がボケボケなのとセルアドレスを使って説明していないから、正直何をしたいのかがわかりにくいです。



とりあえず現在時刻が7:00~17:00なら「設定1」、それ以外なら「設定2」が返る式を書きましたので(かなりベタな式ですが)これを応用できますでしょうか。

=IF(OR(MOD(NOW(),1)<"7:00"*1,MOD(NOW(),1)>"17:00"*1),"設定2","設定1")
    • good
    • 0

時間が「シリアル値」であることを前提に回答します。



自分なら、表示の時間に17時間足した値を
 1で割った余り 
にして時間に直して判断します。

 表示時間+17時間    (1で割った余りの時間)
    0:00+17:00=17:00(17:00)
    6:59+17:00=23:59(23:59)
    7:00+17:00=24:00( 0 :00)
  17:00+17:00=34:00(10:00)
  17:01+17:00=34:10(10:01)
  23:59+17:00=40:59(16:59)
になりますから、
計算した結果の時間が「10:00より大きい」か「10:00以下か」で判断可能になります。

(/・ω・)/ こうすると比較が簡単になるんだ。
あとはIF関数で式を選べば良いだけ。

※ 「シリアル値」「1で割った余り」が何のことか分からない場合は調べてください。


・・・本題・・・

>設定-A 、設定-B に入れる式 教えてください

これは単に引き算で良いでしょ?

 B1-A1
とか
 C1-D1
とか簡単な式で良いよ。


・・・余談・・・

 温度管理(設定値-温度計測箇所)
じゃなくて
 温度管理(設定値-計測箇所別温度)
じゃないのかな。
表現を間違えるとあとで混乱する原因になるから、そこのところはよく考えるようにしましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!