IFs 関数の Part.2 です
ちなみに、Part.1 はこちら⇒⇒⇒便利な関数 IFs関数 Part.1
このシリーズの目次はこちら⇒⇒⇒Excel Tipsのまとめ・・・いわゆる目次( ´艸`)
●どんな時に使う?
このシリーズの最初で、 If関数についてお話ししました。
その時に使用した、ある〇中学校のあるクラスの成績一覧 というファイルで、もし次のような条件を追加したら IF関数ではどのように記述するかやってみましょう!
元々の条件は
このような表があって、
・各生徒の5教科のテストの点数が入力されています。
・その右側に記号欄があります。この記号欄に
⇒各教科でトップの点数には★印
⇒男子、女子ごとに、平均点を超えた点数には〇印
を入力します。
・各生徒の5教科のテストの点数が入力されています。
・その右側に記号欄があります。この記号欄に
⇒各教科でトップの点数には★印
⇒男子、女子ごとに、平均点を超えた点数には〇印
を入力します。
でした。
そして、今回、追加する条件は、
・記号欄に、2位の子はA、3位の子はB、5位以内は◎印を入力します。
それでは、考えてみましょう。
IF関数は、
=IF(<条件>, <真の時の値>, <偽の時の値>)
って格好になることは以前お話ししました。
この<条件>は、真として解釈されるか、偽として解釈される形式にしなければなりませんね。
例えば、セルA1に100以上の値が入力されている ( A1>=100 )
例えば、セルA1に男性と入力されている ( A1 = ゛男性゛ )
こんな感じです。
そして、この条件式を評価した結果が 真 ならば IF関数の2つ目に指定された値、 偽 ならば IF関数の3つめに指定された値が、このIF関数の値となります。
さて、おさらいはこのぐらいで、
実際に、追加の条件を加えて、IF関数式を完成させましょう。
IF( 条件1:この子がトップ? 、"★"、
IF( 条件2:この子が2番?、"A"、
IF( 条件3:この子が3番?、"B"、
IF( 条件4:この子が5番以内?、"◎"、
IF( 条件5:この子が平均点以上、"〇"、"")
)
)
)
)
になりますね。
分かりやすくインデント(段)を付けましたが、普通は、
IF( 条件1:この子がトップ? 、"★"、IF( 条件2:この子が2番?、"A"、IF( 条件3:この子が3?、"B"、IF( 条件4:この子が5番以内?、"◎"、IF( 条件5:この子が平均点以上、"〇"、"")))))
になります。
何がなんやらわからないですよね。僕はわかりません(笑)
とりあえず、頑張って入力したのが次の図です。
左側は元の条件、右側は追加条件込みです。
分かりやすいように右側の表でマークがついている5位以内の子には背景色をクリームにしています
どうです? きちんと表示されているでしょー
苦労しました。
さて、これを IFs関数で入力するとどうなるでしょうか?
上の図の左は IF関数、真ん中は、複雑な IF関数、右側は IFs関数を入力しています。
真ん中と右側は結果は同じですよね。 当たり前ですが・・・
入力している式が異なるのです。
真ん中の式は、
=IF(RANK(C2,C$2:C$27)=1,"★",IF(RANK(C2,C$2:C$27)=2,"A",IF(RANK(C2,C$2:C$27)=3,"B",IF(RANK(C2,C$2:C$27)<=5,"◎",IF($B2="男子",IF(C2>C$28,"〇",""),IF(C2>C$29,"〇",""))))))
です。
右側の式は、
=IFS(RANK(P2,P$2:P$27)=1,"★",RANK(P2,P$2:P$27)=2,"A",RANK(P2,P$2:P$27)=3,"B",RANK(P2,P$2:P$27)<=5,"◎",AND($B2="男子",P2>P$28),"〇",AND($B2="女子",P2>P$29),"〇",TRUE,"")
です。
あれれ? IFs関数の方が若干長くなってますね
でも、IF関数と、IFs関数を分解すると・・・
=IF(RANK(C2,C$2:C$27)=1,"★",
IF(RANK(C2,C$2:C$27)=2,"A",
IF(RANK(C2,C$2:C$27)=3,"B",
IF(RANK(C2,C$2:C$27)<=5,"◎",
IF($B2="男子",
IF(C2>C$28,"〇",""
),
IF(C2>C$29,"〇",""
)
)
)
)
)
)
ですかね? なんとなく自信がありません(笑)
しかし、IFS関数では
=IFS( RANK(P2,P$2:P$27)=1,"★",
RANK(P2,P$2:P$27)=2,"A",
RANK(P2,P$2:P$27)=3,"B",
RANK(P2,P$2:P$27)<=5,"◎",
AND($B2="男子",P2>P$28),"〇",
AND($B2="女子",P2>P$29),"〇",
TRUE,""
)
ですよね。
どっちが理解しやすいですか?
断然、IFs関数の方ですよね。
なんとなく、人間の思考方法にマッチしてるようなロジックですよね。
IF関数の、もし条件が真ならこれ、偽ならあれってのもいいんですが、何段にもネスト(多重化)してしまうと、ここはどの条件の偽なんだろうとか、とってもわかりにくくなります。
そして、わかりにくければ、間違った結果を生み出していることが分かった時でも、IF関数式のどこで失敗しているかを見つけるのが困難になります。
比べて、IFS関数の場合は、一目瞭然ですよね。
さて、皆さんは、どっちをお使いになりますか?
あっ!そうそう! 私がIFs関数を使いたくて、Excel 2019に変えたことはお話ししました。
その時に使用した生の IFs関数を示しましょうね。
=IFS(
AND(F2=F3,H2=H3,I2=I3,J2<>J3,K2="3",K3="7"),"単純修正 Start",
AND(F2=F1,H2=H1,I2=I1,K2="7",K1="3"),IF(C1="単純修正 Start","単純修正 ↓",
IF(C1="単純修正 EndType2","厄介",C1)
),
AND(F2=F1,H2=H1,I2=I1,K2="7",K1="7"),IF(C1="単純修正 Start","単純修正 ↓",C1),
AND(F2=F1,H2=H1,J2=J1,K2="3",K1="7"),IF(C1="単純修正 ↓","単純修正 End",C1),
AND(F2=F3,H2=H3,I2<>I3,J2<>J3,K2="3",K3="3"),"単純修正 ↓Type2",
AND(F2=F1,OR(F2<>F3,G3<>"000",H2<>H3),H2=H1,I2<>I1,J2<>J1,K2="3"),"単純修正 EndType2",
TRUE,"厄介"
)
IF関数も取り混ぜていました。
分かりにくいように思えますが、この関数式を全部 IF関数で表すとしたら・・・
=IF( AND(F2=F3,H2=H3,I2=I3,J2<>J3,K2="3",K3="7"), "単純修正 Start", IF( AND(F2=F1,H2=H1,I2=I1,K2="7",K1="3"), IF(C1="単純修正 Start","単純修正 ↓",IF(C1="単純修正 EndType2","厄介",C1)), IF( AND(F2=F1,H2=H1,I2=I1,K2="7",K1="7"), IF(C1="単純修正 Start","単純修正 ↓",C1), IF( AND(F2=F1,H2=H1,J2=J1,K2="3",K1="7"), IF(C1="単純修正 ↓","単純修正 End",C1), IF( AND(F2=F3,H2=H3,I2<>I3,J2<>J3,K2="3",K3="3"), "単純修正 ↓Type2", IF( AND(F2=F1,OR(F2<>F3,G3<>"000",H2<>H3),H2=H1,I2<>I1,J2<>J1,K2="3"), "単純修正 EndType2", ""))))))
もう、これは関数式というレベルではないですよね。 まるでプログラム
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image