- ベストアンサー
エクセルのif関数について
現在データ処理のためにエクセルを使っていますが、ある条件処理をうまくできなくて困っています。どうかお知恵をお貸しください。 <内容> A列 B列 1行 0.38% -1.74% 2行 3.16% 1.75% 3行 -0.34% 1.91% 4行 0.17% -3.55% 5行 -0.13% 2.65% 逆相関について調べているのですが、A列1行に対応する数値B列1行は逆相関ですからC列1行に「○」を表示し、2行は相関ですからC列2行に「×」を表示したいのです。 C列6行には「○」の個数である「4」の表示もできたらしたいです。 さらに「○」ならば絶対値を足していき、「×」ならば絶対値を引いていく、つまり上記の場合は|1.74|-|1.75|+|1.91|+|3.55|+|2.65|=8.10と表示したいのですがさっぱり見当がつきません。 例えばD列に「○」ならば絶対値プラス、「×」ならば絶対値マイナスというような表示の仕方もあるのでしょうか?それができるのならばあとはオートサムでやれば簡単に8.10の合計値はでるのですが。。 ちなみにややこしくなるのであれば単に1.74や-0.13のような数値表示もよく、パーセント表示でなくともかまいません。 どうかよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
たった一組の数値をもって相関も逆相関もないだろうというのが一 般的な反応ですが、まぁそれはおいといて。 C列は要するにA列とB列の符号が違ってれば○ってんでいいんでしょ うから、=if(sign(A1)<>sign(B1),"○","×")とか、=if(A1*B1<0," ○","×")でいいでしょう。 D列はちゃんと考えればB列の符号とA列の符号を逆転した符号をかけ ればいいことに気付くはずです。だから=B1*sign(-1*A1)。
その他の回答 (3)
C列に +A1*B1 表示書式に「×;○;」 B6に =SUMPRODUCT(SIGN($C$1:$C$5)*ABS($B$1:$B$5)*(-1)) で如何でしょう。
_0.38__-1.74__○___1.74 _3.16___1.75__×__-1.75 -0.34___1.91__○___1.91 _0.17__-3.55__○___3.55 -0.13___2.65__○___2.65 エクセルは操作したこともない門外漢です。 ですから難しいことは判りません。 C列の式=IF((A1-ABS(B1)*(A1>0)+B1)=A1, "×", "○") D列の式=IF((C1="○"),1,-1)*ABS(B1) で、一応は目的を達成しているかも???
お礼
ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
一例です。 >C列6行には「○」の個数である「4」の表示もできたらしたいです。 C6=COUNTIF(C1:C5,"○") >例えばD列に「○」ならば絶対値プラス、「×」ならば絶対値マイナスというような表示の仕方もあるのでしょうか? =SUMPRODUCT(ABS(B1:B5),(C1:C5="○")*2-1)
お礼
早速の回答ありがとうございます。 初めて知る関数ですが、即効性がありました。大変助かりました。
お礼
早速のご回答ありがとうございます! これだけ見たら全体像が見えないでしょうけど、データ数は数万ありますしこれはその処理内のごく一部にすぎないということで、突っ込みたい気持ちはわかりますがご容赦を。 符号の相違の判定には掛け算してプラスマイナスでやればよいという学生レベルの問題に気づかなかったとは。。。。