• ベストアンサー

Excel 「2列連続してマイナスの数値が入っている場所の、その直後のセルの数値がプラスである」確率

数学やExcelが苦手で困っています。 どなたかお力を貸して下さい。 Excel2002以降の環境下での場合です。 1行に100個程度の数値が入っている状況です。 その行の中で、「2列連続してマイナスの数値が入っている場所の、その直後のセルの数値がプラスである」確率を導き出したいのですが、可能でしょうか? 確率自体は、統計関数の何れかを使えば出来そうですが、肝心なところはさっぱり分かりません。 IFを使ってマイナスならば1行下に「1」とか何らかの値を入れて、COUNTIFで手前のセルに値があるか見るという方法も一旦は思いついたのですが、手前のセルとか直後のセルとかを数式でどう表現して良いかも分からず・・・・挫折してしまいそうです。宜しくお願いします。

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

  • ベストアンサー
  • sige1701
  • ベストアンサー率28% (74/260)
回答No.4

No3 さんの回答を利用して =SUMPRODUCT((SIGN($A1:$CT1)=-1)*(SIGN($B1:$CU1)=-1)*(SIGN($C1:$CV1)=1))/SUMPRODUCT((SIGN($A1:$CT1)=-1)*(SIGN($B1:$CU1)=-1)) =SUMPRODUCT(($A1:$CT1<0)*($B1:$CU1<0)*($C1:$CV1>0))/SUMPRODUCT(($A1:$CT1<0)*($B1:$CU1<0))

prussianblue
質問者

お礼

ご回答有難う御座います。大分求めるものの完成形に近い計算式なようで、とても嬉しいです。初めて見る関数の意味が正しく理解できないと、応用も利かないので、よく勉強してみます。前述の友人の要望を再度よく確認して、完成とできましたら、また改めて皆様に御礼を申し上げたいと思います。本当に有難う御座います。

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

確立というより出現率ですね。 初めの2列は対象外ということでいいのでしょうか? A1:CV1にデータがあるとして =SUMPRODUCT((SIGN($A1:$CT1)=-1)*(SIGN($B1:$CU1)=-1)*(SIGN($C1:$CV1)=1))/COLUMNS($C1:$CV1)

prussianblue
質問者

お礼

ご回答有難う御座います。SUMPRODUCT関数・SIGN関数は初めてしりました。自分の中では、かなり画期的なご回答でした。これならば、単独の数式で求める数字が出せるようですね。複数列・複数行を組み合わせて計算しなくて済むのは大分Sheet内が整理できて嬉しいです。

prussianblue
質問者

補足

追加で教えて頂けますでしょうか? このようにSIGN関数に単一のセルでなく、範囲選択されている場合の意味というか、どういう結果を返すのかがよく解りません。また、SUMPRODUCT中の値の間が、「,」でなく「*」の場合どういう働きをするのかがやはり理解できません。この場合、SUMPRODUCTにとっての配列はどこなのでしょうか?宜しければお教え下さい。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

確率を求めるだけならB3セルに  =IF(AND(A1<0,A2<0,A3>=0),1,0) を入力して下までコピーします。 条件に合致するセルは数字の1が入るので  =SUM(B1:B100)/COUNT(B1:B100) の式で出現頻度は求められなくはないです。 でもA列の値はどのようなルールで発生しているのですか? その関数?を無視して、確率を求めようとしても不正確な値しか得られませんよ。 数学には大数の法則がありますから、サンプル数が1万、5万、10万…と増えるに従って正確になって行きますが、100件のサンプル数で求めた確率は信用が置けない気がします。

prussianblue
質問者

お礼

済みません、ご心配をお掛けしています。 実は友人に相談されて一緒に悩んでいる状態です。 彼によれば、ファイナンス理論という勉強をしているらしく、1社の数年分の利益が1行に記録されており、2ヶ月連続して赤字であった直後の月(3ヶ月目)が黒字に戻っている確立を出し、そのサンプルが数百社から数千社分(つまり数千行のデータ)ある・・・ということらしいのですが、私も実際のところ、これがどの様に運用されるデータでどれ程の信頼性を求めているのか、さっぱり解りません。自分もExcelの勉強が出来る機会だと思い、挑戦し始めたがどうにも自力ではできなくてここの駆け込んだと、そういう状況です。力になって下さり、本当に有難う御座います。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.1

仮にA列に下記のデータが入っているとして B列に( 下式を B1に入力し、下方向にドラッグ) =AND(A1<0,A2<0,A3<0,A4<>"")*2+AND(A1<0,A2<0,A3>0,A4<>"")*1 式解説: 数式の入っているセル の 左データ(1段目)が 正数 なら 0          数式の入っているセル の 左データ(1段目)が 負数で、その下(2段目)も負数      でその下(3段目)が負数なら 2 、 正数なら 1 とする。  ただし(4段目)が空白なら 0         (-,-,-)なら2  (-,-,+)なら1  これ以外は 0 となる。 後は、 2、1、0の出現個数をカウントすれば確率を求められるかと・・・・   A    B 3   0 -2   2 -6   1 -5   0 9   0 7   0 -4   0 -1   0

prussianblue
質問者

お礼

有難う御座います。考え方が見えてきました。サンプルするデータはA行に入っているので、行列入れ替えて考えてみれば良いのでしょうね。別にIFと組み合わせる訳ではないのでしょうか?勉強不足なようで、×2、×1をする意味がまだ理解できていないので、勉強します。

関連するQ&A