• ベストアンサー

エクセルの計算式について

エクセルの計算式で教えて下さい。以下の条件です。 ある変数が、O,H,L,Cとあります。データ数は250日間です。 質問は、あるA時点から直前の4日間でO<Cの場合にO-Lを計算し、O>Cの場合にはH-Oを計算してこれを繰り返し250日間分行います。 常に直近の4日間を計算して行きます。条件文が入ると思います。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! >常に直近の4日間を計算して行きます というコトですので、↓の画像で数式が入っている各列の4日前からその行の日付までの合計で判断しています。 Excel2007以降の場合ですが、 画像ではF2セルに =IF(COUNTIF(A:A,A2-3),IF(SUMIFS(B:B,A:A,">="&A2-3,A:A,"<="&A2)<SUMIFS(E:E,A:A,">="&A2-3,A:A,"<="&A2),SUMIFS(B:B,A:A,">="&A2-3,A:A,"<="&A2)-SUMIFS(D:D,A:A,">="&A2-3,A:A,"<="&A2),SUMIFS(C:C,A:A,">="&A2-3,A:A,"<="&A2)-SUMIFS(B:B,A:A,">="&A2-3,A:A,"<="&A2)),"") という数式を入れオートフィルで下へコピーしています。 ※ >あるA時点から直前の4日間 の「あるA時点」とは数式が入っている行のA列日付(その日を含む)4日前までとします。 こんな感じで良いのでしょうか?m(_ _)m

tokumaru2011
質問者

お礼

難しい式を丁寧に書いて頂きありがとうございました。勉強になりました。

その他の回答 (4)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

>質問は、あるA時点から直前の4日間でO<Cの場合にO-Lを計算し、O>Cの場合にはH-Oを計算してこれを繰り返し250日間分行います。 A列に日付が連続して入力されていることを条件とし、直前の4日間は其々がO<CのときO-L、O>CのときH-Oとした結果を合計するのであれば次の数式で良いと思います。 B6=SUMPRODUCT((O2:O5<C2:C5)*(O2:O5-L2:L5)+(O2:O5>C2:C5)*(H2:H5-O2:O5)) または B6=SUM(IF(C2:C5>O2:O5,O2:O5-L2:L5,H2:H5-O2:O5)) この数式ではIF関数の返り値を配列にするため、数式バーへ入力後Ctrl+Shift+Enterで確定してください。 B6セルを下へ必要数コピーすれば目的の日付を参照して結果をチェックできます。 A列の日付が飛んでいる場合は直前の4日間のデータが欠けるのでどのように補うかの指定が必要かと思います。

tokumaru2011
質問者

お礼

ありがとうございます。分かりやすいです。検証しています。参考になります。

回答No.4

No.3 さんが 4 行の合計値により判定する数式を回答されているので、こちらからは、行ごとに大小を比較し、合致した行数を数えることにより判定する数式を回答してみます。 とりあえず、お示しの不等式に該当した行数が 3 行以下の場合は、ゼロを算出するようにしています。 F2 =0+(b2<e2) G2 =0+(b2>e2) H6 =(sum(f2:f5)=4)*(b6-d6)+(sum(g2:g5)=4)*(c6-b6)

tokumaru2011
質問者

お礼

参考になります。違う角度から検証してみます。ありがとうございました。

  • shorun
  • ベストアンサー率42% (133/310)
回答No.2

添付図の答が全問正解であるなら ただし、答1から4=計算必要なし,答5=50-5=45,答7=600-60=540,答6考慮不要=ブランク 次の式を「計算が必要な最初の行」セルF6 に入力して、     「最後の行」F251 までオートフィルコピーする。 +IF(B6=E6,"",IF(B6<E6,B6-D6,C6-B6)) もし正解でない場合は 上記ただし書の答5=xx-xx=xx,答7=xx-xx=xxにおけるxxの数字を記入して補足してください

tokumaru2011
質問者

お礼

分かりやすく記入して頂きありがとうございました。 参考になりました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> ある変数が、O,H,L,Cとあります。データ数は250日間です。 以下で計算するからには数値が入るのでしょうが、どうやって識別するんですか? 列を4つ使用し、ソレを変数と呼称しているのですか? > 質問は、あるA時点から直前の4日間でO<Cの場合にO-Lを計算し、O>Cの場合にはH-Oを計算して O=Cは考慮しなくて良いのですか? > これを繰り返し250日間分行います。 データの始め4行は、過去日が4日間揃わないので計算する必要は無いとするんですか? どれが「あるA時点」ですか?250日の中から任意の1日を指定するのですか? どこかのセルに日付を指定して、その日から遡るのですか?

tokumaru2011
質問者

お礼

bin-chan様 ご指摘ありがとうございます。言葉足らずで分かり難くてすみませんでした。 > ある変数が、O,H,L,Cとあります。データ数は250日間です。 以下で計算するからには数値が入るのでしょうが、どうやって識別するんですか? 列を4つ使用し、ソレを変数と呼称しているのですか? →はい。それぞれ数値が入ります。日々その数値は変わりますが、必ず数値が出ます。それを変数と称していました。 > 質問は、あるA時点から直前の4日間でO<Cの場合にO-Lを計算し、O>Cの場合にはH-Oを計算して O=Cは考慮しなくて良いのですか? →はい、O=Cは考慮しなくても問題ありません。 > これを繰り返し250日間分行います。 データの始め4行は、過去日が4日間揃わないので計算する必要は無いとするんですか? どれが「あるA時点」ですか?250日の中から任意の1日を指定するのですか? どこかのセルに日付を指定して、その日から遡るのですか? →はい、前日の4日分が揃わないと5日目には計算できないので、揃わないと計算の必要はなくなります。250日の中から任意のA時点を指定します。任意のA時点を指定したら、その後は常に計算し続けるだけです。 すみません。よろしくお願いします。