今回も条件分岐が複数ある場合について話を進めていこう。前回の連載では、関数を途中で改行することにより、関数を見やすく記述する方法を紹介した。今回は複数の条件を一気に処理するのではなく、個別に処理して、その結果を統合する手法を紹介していこう。条件が複雑になるときは、今回の例のように「個別に処理」していくのも効果的だ。
関数IFで個別に「条件に応じた判定」を行う方法
前回や前々回の連載で紹介したように、関数IFSを使って「複数の条件分岐」をいちどに処理することも可能である。ただし、関数IFSの記述が長くなるため、頭が混乱してしまう恐れがある。
そこで今回は、それぞれの条件分岐を「個別に処理」して、その結果を統合する手法を紹介していこう。色々な条件が複雑に絡み合うときは、各条件を個別に処理していく手法も探ってみるとよい。
まずは、前回の連載と同じ「体脂肪率の判定」について、それぞれの条件を関数IFで個別に処理していく方法を紹介しよう。体脂肪率の判定基準は前回と同じで、それぞれ以下のようになっている。
【男性の体脂肪率】
低:15%未満
標準:15%以上、25%未満
高:25%以上
【女性の体脂肪率】
低:25%未満
標準:25%以上、35%未満
高:35%以上
このグループ分けを関数IFで個別に行うときは、「性別」と「体脂肪率」を基準に以下のような条件分岐を行えばよい。
・男、15未満 ・・・・・・・ 低
・男、15以上、25未満 ・・・ 標準
・男、25以上 ・・・・・・・ 高
・女、25未満 ・・・・・・・ 低
・女、25以上、35未満 ・・・ 標準
・女、35以上 ・・・・・・・ 高
まずは、処理用のセルを用意する。ここでは、以下の図のようなセル範囲を用意した。ここで、それぞれの条件分岐を関数IFで個別に処理していく。
最初の条件分岐は、性別が「男」で体脂肪率が「15未満」の場合に「低」と判定する、というものだ。これを関数IFで記述すると以下の図のようになる。なお、条件に合致しない場合(偽の場合)は「空文字」を出力するように指定してある。
次の条件分岐は、性別が「男」で体脂肪率が「15以上、25未満」の場合に「標準」と判定する、というものだ。こちらは以下の図のように関数IFを記述すればよい。
同様の手順で、以降の条件分岐についても関数IFを記述していく。たとえば、「男、25以上」の条件分岐は、以下に示した関数IFをJ3セルに入力すればよい。
■J3セルに入力した関数IF
=IF(AND(D3="男",E3>=25),"高","")
念のため、性別が「女」の場合の条件分岐についても関数IFの記述を紹介しておこう。これらを実現する関数IFの記述は、それぞれの以下のようになる。
■L3セルに入力した関数IF
=IF(AND(D3="女",E3>=25,E3<35),"標準","")
■M3セルに入力した関数IF
=IF(AND(D3="女",E3>=35),"高","")
これで6個の条件分岐をすべて処理できたことになる。以下の図に示した例の場合、「男、15以上、25未満」の条件に合致しているので「標準」の文字だけが表示されることになる。
これら6個の関数IFをオートフィルでコピーすると、以下の図のような結果が得られる。いずれのデータも「6個の条件分岐」のうち「1個だけに合致する」はずなので、各行に1カ所だけ文字が表示される、という結果になる。
あとは、これらの結果から「文字が表示されているセル」だけを抽出すればよい。この処理は、文字列を結合する関数CONCATで実現できる。
上図のように関数をCONCATを入力すると、「H3~M3セルの文字を結合したデータ」が出力される。今回の例では「文字が表示されているセル」は1カ所しかないので、結果として「文字が表示されているセル」だけを抽出するのと同じ処理になる。
あとは、この関数CONCATをオートフィルでコピーするだけ。このような手法でも前回の連載と同じ結果を得ることができる。
このように、条件に応じてデータを「グループ分け」するときは、関数IFと関数CONCATを組み合わせると、複数の条件分岐を「個別に処理」できるようになる。覚えておくとよい。