アフィリエイト広告を利用しています
G-QVESCNWRVH

2021年06月18日

Excel : 便利な関数 IFs 関数 Part.2

Excel Tips IFs関数 part-2.jpg


IFs 関数の Part.2 です

ちなみに、Part.1 はこちら⇒⇒⇒便利な関数 IFs関数 Part.1

このシリーズの目次はこちら⇒⇒⇒Excel Tipsのまとめ・・・いわゆる目次( ´艸`)

●どんな時に使う?

このシリーズの最初で、 If関数についてお話ししました。
その時に使用した、ある〇バツ1中学校のあるクラスの成績一覧 というファイルで、もし次のような条件を追加したら IF関数ではどのように記述するかやってみましょう!

元々の条件は
IF関数の例.jpg

このような表があって、
・各生徒の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:この子が平均点以上、"〇"、"")))))
になります。

何がなんやらわからないですよね。僕はわかりません(笑)
とりあえず、頑張って入力したのが次の図です。
左側は元の条件、右側は追加条件込みです。
IF関数とIFs関数の例.jpg

分かりやすいように右側の表でマークがついている5位以内の子には背景色をクリームにしています

どうです? きちんと表示されているでしょー
苦労しました。

さて、これを IFs関数で入力するとどうなるでしょうか?
IF関数とIFs関数の例2.jpg
上の図の左は 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", ""))))))

もう、これは関数式というレベルではないですよね。 まるでプログラム




この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント: 必須項目

この記事へのトラックバックURL
https://fanblogs.jp/tb/10803697

この記事へのトラックバック
ファン
検索
<< 2024年11月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新記事
写真ギャラリー
最新コメント
タグクラウド
カテゴリーアーカイブ
プロフィール
Y.Taki@AS400さんの画像
Y.Taki@AS400
IBM AS/400で稼働するシステムの開発・追加を担当して30年以上になります。使えば使うほどこの AS/400 が好きになりました。 こんなSEがいろいろな視点から様々な業務などについて語ります。
プロフィール