• ベストアンサー

エクセルの関数について教えてください。

以前に質問してお答えいただきましてありがとうございました。 再度分からなくなってしまったので、質問です。 今、下記の関数で目標数字に対して、4つの平均の数字の差引をしたときに表示される記号を変える関数を出しています。 =IF(AVERAGE(AL5:AO5)=AJ5,"",IF(AVERAGE(AL5:AO5)<AJ5,IF(AVERAGE(AL5:AO5)>=AJ5-10,"△",IF(AVERAGE(AL5:AO5)<=AJ5-50,"◎","○")),IF(AVERAGE(AL5:AO5)<=AJ5+10,"▲","×"))) こちらはの関数の意味は下記のとおりです。 目標 - 4つの平均 = 同じ場合は● 0~10上回る時は、△ 10~50上回る時は◎ 0~10下回る時は▲ 10以上下回る時は× という形にしています。 今回お聞きしたいのは、さらにマイナスの場合 10~50下回る時は× 50~100下回る時は×× 100以上下回る時は××× と表示させたいです。 すみませんが、上記の関数を少しいじっていただきそのようになる関数を教えてください。 宜しくお願い致します。

  • higeo
  • お礼率12% (7/57)

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

>こちらでかまいません。 の意味が、回答番号:No.3に対する、質問者様が付けられた補足では、「上回る」と「下回る」が逆である事も含んでいるものと仮定して、回答させて頂きます。  この仮定が正しいのか否か、明確には確認出来ていない事、数式を回答文に入力する際に、私のキーの打ち間違いがないと断言までは出来ない事、等の要注意点がありますから、実用に供する前に、動作確認して頂くよう、御願い致します。 (一応、私の方でも投稿前にパソコン上で動作確認はしておりますが、パソコン⇔携帯間では、コピー&ペーストが出来ないのです)  本題に入りまして、以下の数式で良いと思います。 =IF(AVERAGE(AL5:AO5)<AJ5-50,"◎",IF(AVERAGE(AL5:AO5)<AJ5-10,"○",IF(AVERAGE(AL5:AO5)<AJ5,"△",IF(AVERAGE(AL5:AO5)=AJ5,"●",IF(AVERAGE(AL5:AO5)>AJ5+10,IF(AVERAGE(AL5:AO5)>AJ5+50,IF(AVERAGE(AL5:AO5)>AJ5+100,"×××","××"),"×"),"▲")))))  それから、mako_sea様の回答にあるVLOOKUP関数を使う方法の、一例も、併記しておきます。>  まず最初に、目的のセルがあるのと同じファイル内の、適当な場所(以下の例ではAM7:AO11)に、 AM7に-101,AM8に-100,AM9に-50,AM10に-10,AM11に0, AN7に"◎",AN8に"◎",AN9に"○",AN10に"△",AN11に"●", AO7に"×××",AO8に"××",AO9に"×",AO10に"▲",AO11に"●" と入力されている、一覧表を作っておきます。  次に、目的のセルに、以下の数式を入力して下さい。 =VLOOKUP(-IF(ABS(AVERAGE(AL5:AO5)-AJ5)>100,101,ABS(AVERAGE(AL5:AO5)-AJ5)),$AM$7:$AO$11,2+(AVERAGE(AL5:AO5)>AJ5))  尚、一覧表を作っておく場所は、印刷されない様にするために、設定した印刷範囲の外や、別のシートにする場合が、一般的です。

higeo
質問者

お礼

色々とご迷惑をおかけしてしまいすみませんでした。 大丈夫でした。 本当にありがとうございます。

その他の回答 (5)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 それから、100以上という範囲には、言葉の意味の上では、丁度100の場合も含んでいますから、御質問文中の >100以上下回る時は××× という箇所を読んで、丁度100の場合は「×××」だと思っておりましたが、本当は 『100を超えて下回る時は×××』 であり、丁度100の場合は「××」と表示させるのでしょうか。

higeo
質問者

補足

丁度100の場合は「××」と表示させるのでしょうか。 こちらでかまいません。 宜しくお願い致します。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 何度もすみません。 >1~10上回る時は「△」 >ちょうど10の場合「△」 >10~50上回る時は「○」 >ちょうど50の場合「○」 >50以上上回る時は「◎」 >平均値が目標値を、 >1を超えて10未満、下回っている場合「▲」 >丁度10だけ下回っている場合「▲」 >10を超えて50未満、下回っている場合「×」 >丁度50だけ下回っている場合「×」 >50を超えて100未満、下回っている場合「××」 >丁度100だけ下回っている場合「××」 >それ以上下回っている場合「×××」 とのことですが、前々回の私の回答に対する、質問者様が付けられた補足では、 > 目標値に対して、平均値が上回ることは今回の目的上、マイナスになってしまいます。 >目標に対して平均値が少なければ少ないほど結果的には良くなります。 >丁度50だけ上回っている場合 ×× >50を超えて100未満上回っている場合も×× >100以上上回っている場合 ×××と一旦なるようにしたいです。 と書かれており、上回る場合と下回る場合が逆になっています。 > 目標値に対して、平均値が上回ることは今回の目的上、マイナスになってしまいます。 >目標に対して平均値が少なければ少ないほど結果的には良くなります。 と書かれている事からしますと、前々回の回答に対する補足の方が正しく、目標値が幾つであるかには関わらず、兎に角、平均値の数値が小さい方が良く、そのため平均値が最も大きい範囲の表示は、「×××」だと思ったのですが、私の勘違いでしょうか。  もし、平均値が最も大きい範囲の表示が「×××」だとしますと、前回の回答に対する補足に書かれている、「上回る」や「下回る」という言葉は、目標値を基準に平均値を評価するのではなく、平均値の方を固定した基準値として考えて、それに対して設定した目標値がどれだけ、上下しているのか、という視点から見た場合の話しになると思うのですが、前回の回答に対する補足では、「上回る」と「下回る」が逆ではないでしょうか。  それとも、前々回の回答に対する補足は無視して、平均値は大きい程良いとして、前回の回答に対する補足を、優先した方が良いのでしょうか。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 折角、補足して頂いたところを申し訳御座いませんが、未だに不明な点が、多々あります。  元の数式では、平均値が目標値を、丁度10だけ下回っている場合、平均値がより大きい場合と同じ表示であるのに対し、丁度50だけ下回っている場合には、平均値がより小さい場合と同じ表示となっていて、丁度10下回っている場合と、丁度50下回っている場合では、扱いが異なっていますが、それで宜しいのでしょうか。  同様に、数式の改良後は、平均値が目標値を、丁度50上回っている場合と、丁度100上回っている場合には、平均値がより大きい場合と同じ表示をさせる予定であるのに対し、元の数式の丁度10上回っている場合には、平均値がより小さい場合と同じ表示となっていて、やはり扱いが異なっていますが、こちらもそれで宜しいのでしょうか。  平均値と目標が等しい場合には、式の意味が説明されている文中では、「●」を表示する事になっているのに対し、数式では、何も表示しない事になっていますが、どちらが正しいのでしょうか。  式の意味が説明されている文中では、 >10以上下回る時は× と記されておりますが、数式では、10(10以上に含まれる)の場合の表示は、「▲」になっていますが、どちらが正しいのでしょうか。  式の意味が説明されている文中では、 >0~10上回る時は、△ >10~50上回る時は◎ と記されておりますが、数式では、丁度10の場合には「△」、10を超えて50未満の場合には、説明文には記述のない「○」、丁度50の場合には「◎」が、表示される様になっています。  又、説明文には50を超える場合には、何と表示させるのか、記述されていないのに対して、数式では「◎」が、表示される様になっていて、説明文と数式が食い違っています。  平均値が目標値を、 丁度10だけ下回っている場合、 10を超えて50未満、下回っている場合、 丁度50だけ下回っている場合 50を超えて下回っている場合 の各々の場合には、何と表示させれば良いのでしょうか。  再度、補足をして頂く様、御願い致します。

higeo
質問者

補足

たびたびすみません。 ご不明な点に関して再度記載いたします。 平均値と目標が等しい場合「●」 1~10上回る時は「△」 ちょうど10の場合「△」 10~50上回る時は「○」 ちょうど50の場合「○」 50以上上回る時は「◎」 平均値が目標値を、 1を超えて10未満、下回っている場合「▲」 丁度10だけ下回っている場合「▲」 10を超えて50未満、下回っている場合「×」 丁度50だけ下回っている場合「×」 50を超えて100未満、下回っている場合「××」 丁度100だけ下回っている場合「××」 それ以上下回っている場合「×××」 こちらで大丈夫でしょうか? 当初の数式が誤解を招くようでしたら無視してください。 宜しくお願い致します。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 すいません、質問者様のやりたい事が、良く理解出来なかったので、補足を要求したいのですが。  御質問にある元の関数は、確認させて頂いたところ、 平均値が目標値に等しい場合には、何も表示されず 平均値が目標値を、10未満下回っている場合には「△」 平均値が目標値を、丁度10だけ下回っている場合には「△」 平均値が目標値を、10を超えて50未満、下回っている場合には「○」 平均値が目標値を、丁度50だけ下回っている場合には「◎」 平均値が目標値を、50を超えて下回っている場合には「◎」 平均値が目標値を、10未満上回っている場合には「▲」 平均値が目標値を、丁度10だけ上回っている場合には「▲」 平均値が目標値を、10を超えて50未満、上回っている場合には「×」 平均値が目標値を、丁度50だけ上回っている場合には「×」 平均値が目標値を、50を超えて上回っている場合には「×」 という表示がされましたが、本当にそれで宜しいのでしょうか。  特に、平均値が目標値を、丁度10だけ下回っている場合の表示が、10未満下回っている場合と同じであるのに対し、丁度50だけ下回っている場合の表示が、50を超えて下回っている場合と同じになっていて、10未満下回っている場合とは異なっています。  又、平均値が目標値を、丁度10だけ上回っている場合の表示は、10未満下回っている場合と同じですが、こちらはそれで宜しいのでしょうか。  それから、式の意味を説明されている文中には、平均値が目標値を、50を超えて下回っている場合に関しては、何と表示するのかが、明記されてはおりませんが、本当に「◎」で宜しいのでしょうか。  これらを踏まえた上で、新しい式では、平均値が目標値を、丁度50だけ上回っている場合や、平均値が目標値を、丁度100だけ上回っている場合には、どの様な表示にすれば良いのかを、御教え願います。

higeo
質問者

補足

分かりづらい説明で申し訳ありません。 まず最初に補足ですが、目標値に対して、平均値が上回ることは今回の目的上、マイナスになってしまいます。 目標に対して平均値が少なければ少ないほど結果的には良くなります。 それを踏まえてですが… 丁度50だけ上回っている場合 ×× 50を超えて100未満上回っている場合も×× 100以上上回っている場合 ×××と一旦なるようにしたいです。 こちらで宜しいでしょうか? ご確認宜しくお願い致します。

  • mako_sea
  • ベストアンサー率47% (62/130)
回答No.1

質問者さんのやりたいことを見ると、 IFでネストするよりVLOOKUPでランクを表示するほうが イメージに合ってる気がします。 やたらに長い式はちょっとした修正が入ったとき、 難しくて変更しにくくなりがちですので 作業用の列またはシートを作るなどして 簡潔な関数にしてみてはどうでしょうか。 図では、平均値を一旦算出してから基準(目標)との差でランクをみつけるようにしています。

関連するQ&A

  • エクセルでの関数

    SUM(COUNTIF(AJ11:AL11,"(7)"),   COUNTIF(AJ11:AL11,"(8)"),   COUNTIF(AJ11:AL11,"(9)"),   COUNTIF(AJ11:AL11,"(10)"),    COUNTIF(AJ11:AL11,"(11)")) SUMとCOUNTIFでの組み合わせ関数を使ったときに、カウントされた数字が0の場合にセル上が0表示でなく無表示にしたいのですが、良い方法が有りますでしょうか? お願いします。

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

    困ってます。 「AV7」というセルに「=IF(AO7="除外",0,AS7)」という関数が入っています。 =つまり「AO7」のセルに"除外"という文字が入っていた場合に「0」と表示され それ以外の文字の場合は「AS7」の文字がイコールで「AV7」に表示される、という関数です。 で、、その「AV7」の隣のセルに 「=IF(AV7>=1000000,1000000,AV7)」という関数を入れています。 =AV7の数字が1000000以上だった場合は1000000となるということです。 で、、、AV7のセルに特に何も入力がなければAV7隣のセルも何も表示をしないように したいのですが、AV7に入力がないときも、なぜか「1000000」と表示されてしまいます。 何が問題なのでしょうか?解決法を教えてください。

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

    AVERAGE関数を使って求めた平均が2桁の数字で表示されているのですがそのセルを別のセルにセル参照すると小数点つきでセル元と同じ数値が表示されません。参照先でROUND関数を使うのもおかしいと思うのですがこう言った場合はどうすればよいのでしょうか?基本的な事がわかっていないのかもしれません。

  • Excel IF関数とAVERAGE関数

    定期考査の成績をExcelで作ってみようと思うのですが、関数の打ち方を忘れてしまいました。 IF関数を使い、点数の所がどこも記入されていなかった場合空白にして、一つでも入っていたらその平均を出そうと思っているのですが、出来ますよね? 平均を出したいところは、下の写真の範囲指定してあるところなのですが、覚えている感じで関数を入力すると、「VALUE」と出てしまいます。 関数は =IF(B3:J3="","",AVERAGE(B3:J3)) にしていますが、関数のせいならば、正しい関数を教えて下さい。 お願いします。

  • エクセル関数の記述で教えてください。

    M2セルの内容(記述)が、”高額"である時は、P4の数字が15以上であれば”エラー”と表示をし、 又は、M2セルの内容に”低額”である時は、P4の数字が10以上であれば"エラー"と表示したいのです。 下記の関数ではうまくいかないのです。 =IF(M2="高額",IF(P4>15,"回路数エラー","")(M2="低額",IF(P4>10,"回路数エラー"<""))) どのようにしたら良いか教えてください。

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

    エクセルで、あるセルの所に平均値(または合計値など)を出そうとして関数を使うとします。 その時、関数セルの右脇の値も平均に入れようと思い、選択したいのですが、AVERAGEなどの表示が目的のセルと重なって表示されるため、選択することができません。 関数表示を消すなど、良い方法はあるのでしょうか? エクセル2003を使っています。

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

    エクセルIF関数について お世話になっております。エクセルのIF関数について教えてください。 例えばA1に任意で入力する数字があるとします。 このA1の数字が4以下なら○、10以上なら×、5-9の間なら何も表示しないというような関数を組みたいのですが、どなたか教えていただけないでしょうか? たぶん、IF関数だと思いますが、もし違うならその関数を教えてください。 よろしくお願いします。

  • EXCELの平均を出す関数について

    初歩的な質問となりますが、 どうぞよろしくお願いいたします。 sheet1に下記のようなデータがあります。   A    B    D 1 日付  売上  平均 2 7/1   200    3 7/2   100   =AVERAGE(B2:B3) 4 7/3   300   =AVERAGE(B2:B4) 5 7/4   200   =AVERAGE(B2:B5) 6 7/5         ・ 7 7/6         ・ ・  ・          ・ ・  ・          ・ ・  ・          ・ 32 7/31        =AVERAGE(B2:B5) 現在B6までデータが入力されています。 D列に今日までの平均を表示したいのですが、 上記のようなAVERAGE関数をD32まで先に埋めてしまった場合、 B6:B32のあす以降の計算結果も出てしまいます。 B列のセルに入力がない限り、 今日の日付以降を計算しない(空欄)ようにする方法はありますか? よろしくお願いいたします。

  • Excel 関数で出来ますか?

    指定範囲内に指定の数字が入力されている場合に1と表示して、 それ以外は何も表示しない関数ってありますか? 例えば A1~A1000の中に5という数字があった場合、 1と表示したいのですが。 =IF($A$1:$A$1000=5,"1","") これで大丈夫かなと思ったのですが、 D1に関数を入力している場合、A1に5が入力されている時にしか1と表示されません。 A2に5が入力されていても1と表示してくれないんです。 "="は"を含む"ではないからダメなのかと思いますが…。 どこをどのように直せばorどんな関数を使えば希望通りに表示されるでしょうか? 皆様の、知恵をお貸しください。 よろしくお願いいたします。

  • エクセル関数で困っています

    特定セルの数字を特定文字に変換したいのですが、希望表示にさせることが出来ません 現在は下記変更       希望    123⇒あかさ       123⇒あかさ    321⇒あかさ       321⇒さかあ    223⇒かさ         223⇒かかさ   希望通りに表示できる関数を教えてください よろしくお願いいたします。 現在の関数は下記を使用中  =IF(ISERROR(SEARCH("1",A20))=FALSE,"あ","")&IF(ISERROR(SEARCH("2",A20))=FALSE,"か","")&IF(ISERROR(SEARCH("3",A20))=FALSE,"さ","")