プロが教えるわが家の防犯対策術!

ある条件で、関数を組もうとしてますがうまくいきません。
<条件>
1.1000Lの水槽があります。
2.毎分5Lの速度で水が足されます。
3.水槽に900L溜まったら、水は止まります。
4.排水はランダムな量で、時間も不規則です。
5.水槽の残りが100L以下になったら、2.に戻り、水が足され始めます。
6.再び900Lになるまで足され続けます。
※2~3の間もランダムに排水されます。

EXCELのシート上では、
     A列  B列   C列   D列
1行目 時刻  足す量  減る量  =B1-C1
2行目 時刻  足す量  減る量  =D1+B2-C2
というようなイメージで表現したく、
B列の部分を関数で組みたいのですが、どうもうまくいきません。
条件の内容はフリップフロップ回路をくだいて表現したつもりです。
言葉では伝わり難いかと思いますが、この関数の組み方をご教授下さい。

A 回答 (5件)

IF文の使用ではいかがでしょうか?



B列だけについて考えるとして,
例えばB2のセルには次のような式をいれることで,
=IF((B1=5),IF(D1>=900,0,5),IF(D1<=100,5,0))

水が出ている時には水槽が900L以上になれば止まり,
水が止まっている時には100L以下になれば水が出ます。
    • good
    • 0

No.4の者です。

追加で。

いちおう,最初は水を出すのだとすれば,初期値としてセルB1には5を入れておいてください。
    • good
    • 0
この回答へのお礼

早々のご回答ありがとうございます。ご回答の関数でいけそうです。
水槽ですので累計が「マイナス」になることはないので、この辺は自分で努力します。
space_needle様、mshr1962様、knyi様、ありがとうございます。
誠に勝手ながら、代表としてNo.5の欄にお礼をさしあげます。

お礼日時:2004/06/30 22:06

#2のmshr1962です。


減る量の方ですがRANDBETWEENと言う関数がありました。
こちらなら
RANDBETWEEN(最小値,最大値)
を整数値で返します。
こちらならF1に最大値の設定は必要ありません。
    • good
    • 0

時刻は0から始まるのですよね。


減る量はランダムになっていますが最大値はありますよね。
減る量の最大値をF1に設定毎分XLとして
A2での時間経過(分)は A2-A1
B2足す量は5*(A2-A1)
C2減る量は$F$1*RAND()*(A2-A1)
これに3,5の条件を加味するのだから
D2現在の水量を比較してE2にスイッチを作成
E1=0
E2=IF(D2>900,1,IF(D2<100,0,E1))
B2=IF(E1=1,0,5*(A2-A1))
C2=$F$1*RAND()*(A2-A1)
で計算できませんか?
時刻が時刻形式の場合は
(A2-A1)*24*60
としてください。
    • good
    • 0

例えば、



(1)
・12:00 の時点で、水槽には100Lの水が入っていた。
・12:00~12:10の間、毎分10Lの速度で排水された。

(2)
・12:00 の時点で、水槽には100Lの水が入っていた。
・12:09までは排水がなく、12:09~12:10の間、毎分100Lの速度で排水された

の二つの例について考えてみますと、

(1) の例では、12:00から給水が毎分5L行われるので、12:10の時点では「足す量」が50Lになる
(2) の例では、12:09から給水が毎分5L行われるので、12:10の時点では「足す量」が5Lになる

と解釈するのでしょうか。

いづれにしても、Excelシート上にもう少し情報が無いと計算できない気がするのですが。
水量の初期値、計測開始時刻、排水開始時刻、単位時間当たりの排水量(あるいは排水量の関数)排水終了時刻あたりがあれば、計算できそうですが。

この回答への補足

言葉では伝わり辛いことを痛感しています。
(1)の場合
12:01時点で残量が90Lになるので、毎分5Lで足し始めます。
分単位で行を区切ると、12:00のB列は「0]、12:01、12:02、12:03・・・のB列は「5」が入るようにしたい。
(2)のような場面は想定していませんでしたが、12:09のC列に[0」、12:10のC列が「100」としましょう。
したがって、12:10のB列に「5」、D列の累計が「5」となればよい訳です。

また、初期値ですが、D1のセルは式の通りでなく、
自由に0や500、900といった数値を直接入力してもかまいません。
排水量は毎分1~20L位を適当な時刻に直接入力でよいです。

この辺までは、なんとか出来そうなのですが、900Lを超えたあと、100Lを下回るまでは給水を再開しな条件をどう組んだらいいのか、というところで固まってます。
フリップフロップでのset信号が「100Lを切る」、reset信号が、「900Lを上回る」に相当するのでは、と考えています。(逆かもしれませんが)
あと、E列以降は、条件を外だしする為に自由に使ってよいことにしています。
伝わりましたでしょうか?

補足日時:2004/06/30 20:54
    • good
    • 0

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