• ベストアンサー

エクセルの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のような数値表示もよく、パーセント表示でなくともかまいません。 どうかよろしくお願いいたします。  

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

  • ベストアンサー
回答No.3

たった一組の数値をもって相関も逆相関もないだろうというのが一 般的な反応ですが、まぁそれはおいといて。 C列は要するにA列とB列の符号が違ってれば○ってんでいいんでしょ うから、=if(sign(A1)<>sign(B1),"○","×")とか、=if(A1*B1<0," ○","×")でいいでしょう。 D列はちゃんと考えればB列の符号とA列の符号を逆転した符号をかけ ればいいことに気付くはずです。だから=B1*sign(-1*A1)。

aruchan2615
質問者

お礼

早速のご回答ありがとうございます! これだけ見たら全体像が見えないでしょうけど、データ数は数万ありますしこれはその処理内のごく一部にすぎないということで、突っ込みたい気持ちはわかりますがご容赦を。 符号の相違の判定には掛け算してプラスマイナスでやればよいという学生レベルの問題に気づかなかったとは。。。。

その他の回答 (3)

noname#79209
noname#79209
回答No.4

C列に +A1*B1 表示書式に「×;○;」 B6に =SUMPRODUCT(SIGN($C$1:$C$5)*ABS($B$1:$B$5)*(-1)) で如何でしょう。

noname#140971
noname#140971
回答No.2

_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) で、一応は目的を達成しているかも???

aruchan2615
質問者

お礼

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

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

一例です。 >C列6行には「○」の個数である「4」の表示もできたらしたいです。 C6=COUNTIF(C1:C5,"○") >例えばD列に「○」ならば絶対値プラス、「×」ならば絶対値マイナスというような表示の仕方もあるのでしょうか? =SUMPRODUCT(ABS(B1:B5),(C1:C5="○")*2-1)

aruchan2615
質問者

お礼

早速の回答ありがとうございます。 初めて知る関数ですが、即効性がありました。大変助かりました。

関連するQ&A

  • エクセルのIF関数について

    エクセルのIF関数について質問をさせて頂きます。 現在、下記のような条件で抽出できる式を考えているのですが、 中々思うような式が思い浮かびません。 例えば、     A列  B列  C列  D列 1行目  111 2行目  222 3行目  333 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999 上記のようなシートがあったとして、     A列  B列  C列  D列 1行目  111       999 2行目  222       333 3行目  333   ○   123   × 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999   ○ 上記のように、例として C列の1行目に「999」と入力した場合、A列の9行目に「999」の数字があるので、その横のB列に「○」 C列の2行目に「333」と入力した場合、A列の3行目に「333」の数字があるので、その横のB列に「○」 C列の3行目に「123」と入力した場合、どこにも該当番号がないので、入力したC列の横、即ちD列の3行目に「×」を表示 要は、A列のどこかに該当数字があった場合にはその数字の横(B列)に「○」、どこにも該当数字が無い時には、入力した数字の横、D列に「×」を表示するような数式を考えています。 IF関数を使えばできるような気がするのですが、色々と試してみても中々うまくいきません。 下手な説明で分かり辛いかもしれませんが、どなたかご存知の方がいましたら、ご教授の程頂ければ幸いです。 どうぞ宜しくお願い致します。

  • エクセルの相関関数について

    ある地域の町名別(A列)の売上高(B列)と、女性人口割合(C列)、高齢者人口割合(D列)などなど・・・の相関を見るため、エクセルの相関関数(CORREL)を使用しました。 A列 B列 C列 D列・・・ あ町 100  43% 25% い町 500  49% 23% う町  30  44% 19% え町  80  48% 21% そうしたところ結果として「0.01811」「0.03617」「0.05229」「-0.0585」のような数値が導かれました。 相関関数は「1」に近づくほど相関がある、とされていますが、 (1)これらの数値の差「0.01」「0.02」の差をどのレベルとして受け止めればよいのでしょうか?「わずか差」なのか「大きな差」なのか? (2)また、マイナスの結果はどのような意味があるのでしょうか?反比例の相関なのでしょうか? どちらかというと統計学の範疇かもしれませんが、すみませんが、よろしくお願いします。

  • IF関数で

    AとB列に数値(空欄もあり)が入力してあります。 C列にAかBに数値が入力してあれば○を表示したいのですが CもBも空欄の場合は非表示です。 =IF(A1="","","○")に何を追加すればよいでしょう?

  • エクセル関数について

    エクセル関数について質問です。 簡単に説明すると特定のセルに特定の数値を入力するとその行の別のセルの数値を別のセルに表示させたい。 たとえば     A      B       C 1  100            2  200      1      100 3  300      1      300 4  400 5  合計            400 上記の様になっていた場合 A列は定数で固定です。B列のセルに1と入力(1でなくてもよい)した行のA列の数値を Cに表示したいのですが、 C列にどの様な関数を使ったらいいんでしょうか?宜しくお願い致します。

  • エクセルの関数で

    A列B列それぞれに100行ぐらいあり数値が入力しています。 C列にA列とB列のうち数値が小さい方の数値を100行分抽出したいのですが、エクセルの関数でできないでしょうか?

  • エクセルのif関数で

    エクセルのif関数でこれができるのかわかりませんが、 C1~C10の中の文字列の中にA1と同じ文字列があればB1に「1」を入れ、なければ「2」を入れるということをやりたくて B1のセルに IF(OR(C$1:C$10=A1),1,2) という計算式を入れました。 関数の引数の中の数式の結果では、正しい結果が表示されてるのですが、B1のセルには間違った結果が表示されます。 また、B2以下B20まで計算式をコピーするとB11以下は#VALUE!になってしまいます。 一つ一つを見てみると、どうやらセルに正しく表示されるのはAの行とCの行が=だった場合のみのようです。 #VALUE!が表示されているセルも含めて、数式の結果では正しい結果が出ているのにセルの表示が違っているのが納得できませんが、おそらく何かが間違っているのでしょう。 間違いを教えてください。 よろしくお願いします。

  • エクセルのIF関数について質問します。

    C列のセルに、もしA列のセルの数字がゼロならば-を表示し、ゼロ以外ならA列とB列の積を表示するようにしたいのですが、A列のセルが未入力のでもゼロと数えられるのかC列には-が並んでしまいます。Aに数値を入力し時だけ、Cを表示をする方法を教えて下さい。よろしくお願いします。

  • エクセル関数の自動表示について

    自動表示についてご質問いたします。 シート1 (3月入力時)       A列  B列  C列  D列  E列  F列  G列  H列 1行目  1月   2  10  11  12  30  31  33 2行目  2月   1   2   5   8   9  10  48 3行目  3月   3   5  10  11  30  31  32 4行目  4月   こういうシート1の表があったとします。 シート1で3月入力した時点で、シート2では以下の表があったとします。        A列  B列  C列  D列  E列  F列  G列   1行目    3   5  10  11  30  31  32 と、自動で表示され。 4月(シート1)に数値を入力すれば、シート2の数値が最新数値に自動で入れ替わる・・・と、いう関数を作りたいのですが、いい関数ありますでしょうか? この場合、シート1ではB列~H列の数字の個数は固定(今回は7個)であり、毎回ランダムで数字が入力されていきます。 これをシート2の1行目、A列~G列に最新数値を毎回反映させて、表示したいのです。 どなたか、ご存知の方よろしくお願いします^^;

  • if関数について

    if関数についてどなたか教えてください。 ある二つの名簿があって、二つの名簿を照合して名寄せをしたいのですが、たとえば、A列の1行目から10行目まで、同じくB列の1行目から10行目まで氏名が入っているとします。A列とB列に同じ名前が入っていれば、C列に○印をつけるように関数を設定したいのです。自分なりに考えて、次のようにif関数を設定しました。・・・がうまく表示されません。エラーは出ませんので、関数としては成り立っていると思うのですが、○印が表示されません。どなたか間違いを指摘いただけませんでしょうか? C1のセルに次の関数を設定して、C10までコピーをしました。 if(A1=$B$1:$B$10,”○”,””) よろしくお願いいたします。

  • Excelの関数について

    Excelの関数について 今表を作っていて 1日数回データを取って それを1ヶ月ぐらい続ける予定で その結果をExcelの表に入力したいと思っています。 A列に現在値 B列に増加分 C列にA+Bの値を入れたいと思っています。 なので、C列には、C1には=SUM(A1,B1)として セルの右下にポインタを合わせて十字で下まで引っ張って関数をコピーしています。 で、そうするとC列に0が表示されてしまい それはなんとか、ツール→オプション→表示→ゼロ値のチェックを外して解決したのですが C列の合計値は次の行のAのセルに表示したくて 例えば C3の数値はそのままA4に C7の数値はそのままA8にといった感じで で、A2のセルに=C1とかA5のセルに=C4とかしたのですが いちいち関数を埋め込むのは面倒くさいので 下のほうまで関数をコピーしたところ 関数が埋め込まれているので A列とB列にしたの方まで同じ数字が表示されています。 これって消すことはできないのでしょうか? 現在は 最初のA1セルだけに数値を入れたのですが関数を埋め込んだことにより A列とB列すべてにA1セルの数値が表示されています。 まだデータを取っていないのでB列は空白です。 ただ、できれば、下の方に数値が表示されないようにしたいんです。 言葉で説明すると A列とB列に数値が入力されない限り、C列の合計値は表示されない設定にできれば 私の言っているような状況になると思うのですが、そういう事はできないのでしょうか… 教えてください。

専門家に質問してみよう