プロが教えるわが家の防犯対策術!

IF関数の応用?自動表示される数式を教えてください。

画像を見ていただくと、レベルが4段階あります。
%の部分は数字を手入力します。(0%~100%)

求めたいのは黄色のセルの部分で、
「レベル〇」と自動的に表示させたいです。

【レベルの条件】
レベル1のみ%が入力されている場合はレベル1。
レベル1が100%、かつ、レベル2が70%以上の場合はレベル2。

ただし、レベル1が80%でレベル2が70%以上でもレベル1です。
つまりレベル1が100%で、さらにレベル2が70%以上の場合のみ、
レベル2になります。

なのでレベル3の条件は、レベル1と2が100%、かつ、レベル3が70%以上、
レベル4の条件はレベル1と2と3が100%、かつ、レベル4が70%以上となります。

上記のような条件の中で、%枠を手入力していくと、
黄色のセルにレベルが自動的に表示されるようにしたいです。

IF関数とAND関数を混ぜて色々やってみましたが、
レベル3以上を表示させようとするとだめでした。

どうかお知恵を貸してください。

「IF関数の応用?自動表示される数式を教え」の質問画像

A 回答 (9件)

>IF関数とAND関数を混ぜて色々やってみましたが、



その色々やった途中の数式はありませんか?
それを元に考えた方が分かりやすいと思うので、あれば提示してください。
    • good
    • 0
この回答へのお礼

試行錯誤で

=IF(AND(B2=100%,B3=100%,B4=100%,B5>=70%),"レベル4",IF(AND(B2=100%,B3=100%,B4>=70%),"レベル3",IF(AND(B2=100%,B3>=70%),"レベル2","レベル1")))

に落ち着きました。
お騒がせしました、ありがとうございました。

また困った時は助けてくださいm( _ _ )m

お礼日時:2010/08/12 11:48

説明の通りなら


=IF(AND(SUM(B2:B4)=300%,B5>=70%,4,IF(AND(SUM(B2:B3)=200%,B4>=70%,3,IF(AND(B2=100%,B3>=70%,2,IF(B2>=70%,1,""))))

または
=(B2>=70%)+(B2=100%)*(B3>=70%)+(SUM(B2:B3)=200%)*(B4>=70%)+(SUM(B2:B4)=300%)*(B5>=70%)
    • good
    • 0
この回答へのお礼

ありがとうございます!!
質問の意味をちゃんと捉えていただき、ありがたいです!!
(わかりづらい説明なのに感動です)

教えていただいた1つ目の式はエラーが出てしまいましたが、
2つ目はバッチリです!!

回答も簡潔でわかりやすいです!ありがとうございます!!

お礼日時:2010/08/12 11:49

上手くできなかったと言う関数を示してもらえると、どう直せば良いのか、どう考えれば良いのかを示す事ができるんですけど…まあいいか。




まず成立する条件を書き出す
 条件1:下記以外すべて
 条件2:すべて AND 、Level1=100、Level2>=70
 条件3:すべて AND 、Level1=100、Level2=100、Level3>=70
 条件4:すべて AND 、Level1=100、Level2=100、Level3=100、Level4>=70

それぞれを数式にしてみる
 条件2:AND(Level1=100,Level2>=70)
 条件3:AND(Level1=100,Level2=100,Level3>=70)
 条件4:AND(Level1=100,Level2=100,Level3=100,Level4>=70)
Level○は該当するセルに書き直すこと
(この AND関数を複数使ったときの組み合わせができなか 演算子 >= が分からないのだろうと推測する)

あとは IF関数で組み合わせればOK
試行錯誤してがんばれ

 「IF関数を使った組み合わせが分からない(´;ω;`)」
なんて泣きごと言うんじゃないよ
 =IF(条件3,結果3,IF(条件2,結果2,結果1))
などとするだけだ


これはあくまでも一例です。
他にもやり方は多数ありますが、やはりどのようなアプローチをするかを示してくれないと方法を絞り込むことができません。
    • good
    • 0
この回答へのお礼

=IF(AND(B2=100%,B3=100%,B4=100%,B5>=70%),"レベル4",IF(AND(B2=100%,B3=100%,B4>=70%),"レベル3",IF(AND(B2=100%,B3>=70%),"レベル2","レベル1")))

として、やりたい事ができました。
Cupperさんのおっしゃってる事で、私が質問している内容は間違いありません。
すごく参考になりました。

が、数式もこれに限っているわけではないですし、
この数式を見て、これよりもっと簡単にできるのに、
と思われる方もいらっしゃると思うので、
色々なやり方を知りたかった、というところもあります。

どうもありがとうございます。
また何かあればよろしくお願いします(泣き言も聞いてください。笑)

お礼日時:2010/08/12 11:56

おっと…添付された図を見るのを忘れてた



手で入力するのは数値ですよね。
文字列として入力した場合 単位の%はそのまま文字になるので 演算子(=,>=など)は使えません。

%を表示させたいのでしたら、セルの書式設定で「パーセテージ」を選択しましょう。
100%を1とする小数を入力するだけで%記号が表示されます。
あるいはセルの書式設定の「ユーザー定義」で%を付加する書式を書くかですね。
 例:0"%"
    • good
    • 0

質問の内容が複雑で判りにくい。


下記横列(下記で第1行)もレベル1,2,3,4判定後(下記でA列)も質問ではレベル1,2,3,4となっているが、紛らわしいと思い、判定後はランク1,2,3,4としてみた。
ーー
質問をそのまま表にすると
ーレベル1レベル2レベル3レベル4
ランク1あり***
ランク210070以上**
ランク18070以上**
ランク310010070以上*
ランク410010010070以上
ーー
補足要求。
質問の言わんとする意味の疑問点。
(1)*の部分は入力されることはないのか。入力されても無いものとする?
(2)100の個所は100%に限ると言うことですね。
100%未満ではどのランクに行くのか?
(上例でランク3、4などの場合は?)
(3)80は80%以上の意味か(質問では以上が抜けたのか?)
レベル1の数値は100%か80%のどちらかしか入れないのか?
(4)「あり」のところは100%以外もありえるのですね?
(5)>ランク210070以上**
の例の場合70%未満ではランクはどうなるのですか?
(6)各レベルでの100%は、該当が良くあるケースなのか。他の場合では、100%は普通のイメージでは、パーフェクトで、そんなに該当がないケースを想像するが。
>数字を手入力します。(0%~100%)
ならレベル1も100%以外も入力される、80%未満もある、70%もそれ未満も在るようだな。
具体的なイメージがわかない。
レベル1-4
ーーー
一見したところ、VBAでも使わないと(場合分けが自由に出来ないと。ユーザー定義関数)関数では複雑になりすぎるように思うが。

この回答への補足

=IF(AND(B2=100%,B3=100%,B4=100%,B5>=70%),"レベル4",IF(AND(B2=100%,B3=100%,B4>=70%),"レベル3",IF(AND(B2=100%,B3>=70%),"レベル2","レベル1")))

が私のやりたい事の答えでした。

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

補足日時:2010/08/12 13:24
    • good
    • 0

#2のmshr1962さんの方法で少々訂正と独自解釈をいれて


=IF(AND(SUM(B2:B4)=300%,B5>=70%),4,
IF(AND(SUM(B2:B3)=200%,B4>=70%),3,
IF(AND(B2=100%,B3>=70%),2,IF(B2>0,1,""))))
早い話、ANDの終わりのカッコを忘れてるということです。
良い案だと思うので参考にさせていただきました


で当方は作業列案
C2セル =IF(B2>0,"合格","")
C3セル =IF(AND(B2=1,B3>=0.7,C2<>""),"合格","不合格")
下へオートフィル
B8セル =IF(C2="","","レベル"&COUNTIF(C2:C5,"合格"))


ちなみに 標準の表示形式で計算可能(数値と判断される)な値は右揃えになります。
日付や「$80」、「100%」など
「IF関数の応用?自動表示される数式を教え」の回答画像6
    • good
    • 0

#6です。

訂正です。人の訂正してないで、自分のをよく見ろって言われそう(>o<")

C3セルの =IF(AND(B2=1,B3>=0.7,C2<>""),"合格","不合格")
は良いのですが

C4セルは =IF(AND(B3=1,B4>=0.7,C3<>"不合格"),"合格","不合格")
下へオートフィルでした

あと=IF(C2="","","レベル"&COUNTIF(C2:C5,"合格"))
はC8セルへの入力ですね
    • good
    • 0
この回答へのお礼

私の質問の説明がわかりづらかったと思います。
ごめんなさい。

試行錯誤で下記の数式に落ち着きました。

=IF(AND(B2=100%,B3=100%,B4=100%,B5>=70%),"レベル4",IF(AND(B2=100%,B3=100%,B4>=70%),"レベル3",IF(AND(B2=100%,B3>=70%),"レベル2","レベル1")))

どうもありがとうございました。
また何かあったら是非よろしくお願いしますm( _ _ )m

お礼日時:2010/08/12 11:31

複雑な入れ子のIF関数が作成しにくい場合は、すべてのレベルに対して、それぞれの結果を表示する式を直列でつなげるのが簡単かもしれません。



レベル1(B2が空白でなく、B2が1未満またはB3が0.7未満)
=IF(AND(B2<>"",OR(B2<1,B3<0.7)),1,"")

レベル2
=IF(AND(B2=1,B3>=0.7,B3<1),2,"")

レベル3
=IF(AND(B2=1,B3=1,B4>=0.7,B4<1),3,"")

レベル4
=IF(AND(B2=1,B3=1,B4=1,B5>=0.7),4,"")

まとめると
=IF(IF(AND(B2<>"",OR(B2<1,B3<0.7)),1,"")&IF(AND(B2=1,B3>=0.7,B3<1),2,"")&IF(AND(B2=1,B3=1,B4>=0.7,B4<1),3,"")&IF(AND(B2=1,B3=1,B4=1,B5>=0.7),4,"")
    • good
    • 0
この回答へのお礼

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

しかし数式をコピペすると「数式中に対応するかっこがありません」
と表示されてしまいました(T△T)

自分でも試行錯誤で下記の数式に落ち着きました。

=IF(AND(B2=100%,B3=100%,B4=100%,B5>=70%),"レベル4",IF(AND(B2=100%,B3=100%,B4>=70%),"レベル3",IF(AND(B2=100%,B3>=70%),"レベル2","レベル1")))

考え方、勉強になりました!どうもありがとうございます!
また困ったときは助けてくださいm( _ _ )m

お礼日時:2010/08/12 11:29

=MIN(4,IF(B2=0,0,IF(B2=1,99,1)),IF(B3<0.7,1,IF(B3=1,99,2)),IF(B4<0.7,2,IF(B4=1,99,3)),IF(B5<0.7,3,IF(B5=1,99,4)))



これだと、5レベルが追加されても式の一部を変更するだけですみます。
・最高でも4レベル =MIN(4,
・レベル1の%が入力されていない場合はレベル0、レベル1が100%なら上位レベル、でなければレベル1。IF(B2=0,0,IF(B2=1,99,1)),
・レベル2の%が70%未満の場合はレベル1、レベル2が100%なら上位レベル、でなければレベル2。IF(B3<0.7,1,IF(B3=1,99,2)),

(以下同様)
    • good
    • 0
この回答へのお礼

回答いただき、ありがとうございます。

ほんとだ!!
できました!!
MINでもできるんですね!
思いつかなかったです。

説明も簡潔でわかりやすかったです。
助かりました。

ありがとうございます!!

お礼日時:2010/08/12 13:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!