- ベストアンサー
エクセルの関数
こんにちは。 私は今実験のデータを整理しようとしているのですが、ひとつ質問です。 例えば あるセルに値を入力し、その値(:=x)が 0<x≦10ならば隣のセルにx+10の計算結果を表示 10<x≦20ならば、x^2+xの計算結果を表示 ・ ・ ・ という風に関数のxの領域によって関数を分けたいのですが、どうすればいいのでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.2・3です! >の領域がたくさんあるのですが・・・ とありますが、領域によって数式も変わってくるわけですかね? もしそうであれば表示セル限定になりますが、(オートフィルでコピーは考えていません) ↓の画像のように表を作成して、各領域ごとに数式を入れておく方法はどうでしょうか? 画像では勝手に「5」毎で領域を区切り、G列に表示している数式を入れています。 (表内にあらかじめ数式の値を表示しておく) そしてB1セルに =IF(A1="","",INDEX(F2:F7,MATCH(A1,E2:E7,-1))) という数式を入れています。 E2セルにはこれ以上ない!という数値を入れておきます。 実際はD列は必要ないのですが、判りやすくするために敢えて表示しています。 今はこの程度しか思いつきませんが、 B1セルのオートフィルが必要だったり、他に良い方法があればごめんなさいね。m(_ _)m
その他の回答 (5)
- matsu_jun
- ベストアンサー率55% (146/265)
toraemonsさん、こんにちは 分岐の条件が、10<x≦20 のように範囲であり、ある特定の場合でなく(例えばx=1のような)、かつその結果演算する式も複雑なものである場合、やはりIF文を利用するのが楽で、分かりやすいと思います。 しかしながら、soixanteさんがANo.4で答えられているように、IF文の入れ子(条件分岐)は限度があるため(ちなみにExcel2003以前は7段、つまり(条件1)~(条件7)、それ以外の8種しか分岐できません)、条件が増えてきた際に難しくなります。そこで、卑怯なやり方ではありますが、たくさんの列を利用して解決しましょう。 列Aに結果が書かれているものとします。セルA1にはタイトル、セルA2から下にデータが入っているものとします。 列Bはまずは空行にしておきまして、まずは列Cに最初の条件および計算式を入力します。セルC2に =IF(AND(0<A2,A2<=10),x+10,0) そして、これを下のほうへ、結果のある行までドラッグします。セルC1には、タイトルとして範囲を書いておけばよいでしょう。 条件に合致したら計算結果を、合致しなければ0を表示することになります。 次に、列Dに次の条件および計算式を入力します。 =IF(AND(10<A2,A2<=20),x^2+x,0) これも結果のある行までドラッグします。 これを、条件の数だけ右側へ展開します。 で、処理が全て終了しましたら、B列に、以下の処理をします。例えば条件式がz列まであったとすると、セルB2に =SUM(C2:Z2) としてやり、下へ展開してやればよいことになります。 データがたくさんになってしまいますが、それなりに分かりやすいかと思いますが、いかがでしょうか。
お礼
回答ありがとうございます。 こんなやり方があったんですね・・ エクセルは使い方次第で化けるという事を痛感しました><;
- soixante
- ベストアンサー率32% (401/1245)
IF分のネスト(入れ子)は、いまは64個になっているそうです。 頑張ればいけますが、読みにくくなります。 http://www.eurus.dti.ne.jp/yoneyama/Excel/waza/if01.html どのくらいの領域(パターン)があるのですか。 またそれらのアウトプットはどうしたいのですか その形によっても助言も変わってくるでしょう。
お礼
解答ありがとうございます。 全部で25つの領域です。まずは他のやり方で試してみて、もし無理だったらIF関数で頑張ります^^;
- tom04
- ベストアンサー率49% (2537/5117)
No.2です! 投稿後に気づきました。 前回の数式内で不必要な等号がありました。 =IF(OR(A1="",A1<=0,A1>20),"",IF(A1<=10,A1+10,A1^2+A1)) に訂正してください。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! xの値が 0以下か20を超えた場合は空白にするようにしています。 A1セルにxの値を入力するとします。 表示したいセルに =IF(OR(A1="",A1<=0,A1>=20),"",IF(A1<=10,A1+10,A1^2+A1)) ではどうでしょうか? ※ 余計なお世話かもしれませんが、数式内の >A1^2+A1 の部分は当然のことながら >=A1*(A1+1) としても同じ結果になります。m(_ _)m
お礼
解答ありがとうございます。 ちょっとやってみます! ところでxの領域がたくさんあるのですが、IF文以外でいい方法とかないですか・・?カッコがたくさん出てきてしまうので・・
IF関数を使えばできます。
お礼
解答ありがとうございます。 ちょっとやってみます! ところでxの領域がたくさんあるのですが、IF文以外でいい方法とかないですか・・?カッコがたくさん出てきてしまうので・・
お礼
解答ありがとうございます。 画像添付なので分かりやすかったです。まずはこの方法で試してみます。