IF関数の高度な扱い|簡略化と重さの解消
XHacksでは、向上心あるビジネスパーソンと一流のビジネスパーソンを志す学生に向けて、エクセルを中心としたビジネススキルを紹介しています。
XHacksでは「テーマ別スキル+アルファ」をコンセプトに「とりあえず動けばいい」から「華麗に動かす」へとシフトさせる解説を心がけています。
-------------------------------------------------------------------------------
サマリ
【テーマ】IF関数の使い方
【+アルファ】IF関数を使いすぎるとエクセルの挙動が重くなるほか、あとから編集しづらいものとなってしまいます。これらを解消して、読みやすく軽快なシートを作るためのTipsを紹介します。
【コンテンツ】
1. IF関数の基本的な使い方
2. 入れ子構造とAND, OR
3. IF関数の入れ子構造の解消方法
4. IF関数以外で条件分岐をさせて軽量化する
---------------
最も基本的なビジネススキルの1つとして挙げられるのがMicrosoft Officeです。
その中でも、Microsoft Excelは使用されることが多く、簡易的なデータベース構築から高度な金融のシミュレータまでさまざまな場面で利用されています。
このため、向上心あるあらゆるビジネスパーソンと、一流のビジネスパーソンを目指す学生にとって、エクセルを使用できるようにすることは必須ともいえるのです。
このページでは、エクセルの中でも最も基本となるIF関数を扱っています。
IF関数を適切に使えることは、エクセル初心者を脱却するための必要条件ですが、適切にIF関数を使用できるビジネスパーソンは多くありません。
IF関数の基本
IF関数そのものを全く知らないという方は少ないでしょう。IF関数は下記のように使います。
=IF(論理式, 真の場合, 偽の場合)
例を見てみましょう。
=IF(A1=100, "〇", "×")
この式では、論理式が「A1=100」で、真の場合が「"〇"」、偽の場合が「"×"」になっています。
日本語で書き下すと「A1セルが100だったときに〇を表示し、そうでないときに×を表示する」という意味になります。
論理式には不等号を使うこともできます。
=IF(A1>=80, "〇", "×")
これを書き下すと、「A1が80以上なら〇、そうでないなら×を表示する」という意味です。
「論理式」「真の場合」「偽の場合」の部分にIF関数を使うこともできます。
=IF(A1>=80, IF(A1=100, "◎", "〇"), "×")
この式では、論理式「A1>=80」の真の場合が「IF(A1=100, "◎", "〇")」になっています。
これを日本語で書き下すと、「A1が80以上の場合は『A1が100なら◎を表示し、そうでないなら〇を表示』し、A1が80未満の場合は×を表示する」という意味になります。
このようにIF関数の中にIF関数がある状態を「IF関数が入れ子になっている」と表現することがあります。エクセルではIF関数をいくつも入れ子にすることができます。
たとえば次の式を見てください。
=IF(A1=100, "S", IF(A1>=80, "A", IF(A1>=60, "B", "C")))
IFが3回出てきます。日本語に書き下すと、「A1セルが100なら"S"を表示する、そうでないなら次の判定へ。A1が80以上なら"A"を表示する、そうでないなら次の判定へ。A1が60以上なら"B"と表示し、そうでないなら"C"と表示する。」となります。
100ならS、80~99ならA、60~79ならB、~59ならCという式になります。
IF関数の「かつ」「または」
複数の条件で判定することもできます。AND()とOR()を用います。
=IF(AND(A1>=60, B1>=60, C1>=60), "合格", "不合格")
この式を書き下すと、「A1が60以上、かつ、B1が60以上、かつ、C1が60以上であれば合格と表示し、1つ以上が59以下であれば不合格と表示する」になります。
AND()とOR()を使えるようになると、少し複雑な真偽判定もできるようになります。
=IF(AND(A1>=60, B1>=60, C1>=60), "合格", IF(OR(A1>=60, B1>=60, C1>=60), "一部合格", "不合格")
この式を書き下すと、「『A1が60以上、かつ、B1が60以上、かつ、C1が60以上』なら合格と表示する。そうでない場合のうち、『A1が60以上、または、B1が60以上、または、C1が60以上』であれば一部合格と表示し、すべて59以下なら不合格と表示する。」になります。
また、エクセルの関数は途中で改行しても機能します。
式が長くなる場合はむしろ改行したほうが読みやすい傾向があります。
IF関数の特殊な論理式
論理式は必ずしも式の形をしている必要はありません。
いわゆる「Yes/No Question」の形式であれば何でも使えます。
たとえば、次の式のようなものもあり得ます。
=IF(ISBLANK(A1), "未入力", "入力済")
論理式のISBLANK()は、()内が空欄であれば真、空欄でなければ偽を表す関数です。
上の式は「A1が空欄であれば未入力と表示し、そうでなければ入力済と表示する」と書き下せます。
ISBLANKのほかによく使うものには次のようなものもあります。
=IF(ISNUMBER(A1), "数値", "文字列")
=IF(ISEVEN(A1), "偶数", "奇数")
=IF(ISERROR(A1), "エラー", "問題なし")
これらはそれぞれ、数値かどうか、偶数かどうか、エラーかどうかを示すものです。
IF関数の入れ子構造を解消する
IF関数の論理式や真偽の場合にIF関数が再び登場するような状態を「入れ子構造」と呼ぶのでした。
このような構造になって関数は条件式の意味が分かりづらいことが多く、わかりづらいことはミスにつながりやすくなります。
エクセルの初心者には意識されていないことが多いですが、エクセルは共同作業をしたり他人に報告するときに使うことも多くあります。
したがって、式を作成した人以外が見てもわかりやすい状態である必要があります。
これ以降では、わかりにくかったりミスを誘発しやすかったりする式を極力避けて作る方法を扱います。
まずは、IFの入れ子構造の解消方法についてです。
IF関数を入れ子にするのは原則としてNGで、基本的にはIFS関数を使います。
IFS関数は論理式と真の場合を交互に書く関数です。
=IFS(A1=100, "S", A1>=80, "A", A1>=60, "B", A1<60, "C")
上記の式を書き下すと、「A1が100ならS、そうでない場合のうちA1が80以上ならA、そうでない場合のうちA1が60以上ならB、そうでない場合のうちA1が60未満ならCを表示する。」になります。
左から順に判定して、最初に真になったときの値を表示する関数とみなすことができます。
また、IFS関数は「その他の場合」を設定することもできます。
その前に次の式を理解しておきましょう。
=IF(TRUE, 1, 0)
論理式の部分がTRUEになっています。
これをあえて書き下すと「TRUEがTRUEである場合、1を表示し、そうでない場合は0を表示する」になります。
IF関数の論理式はTRUEかFALSEか(真か偽か)を判定する式なので、論理式そのものがTRUEであれば、必ず真になります。
これを応用すると、IFS関数のその他の場合を設定できます。
=IFS(A1=100, "S", A1>=80, "A", A1>=60, "B", TRUE, "C")
日本語に書き下すと「A1が100ならSを表示し、そうでない場合は次の論理式へ。A1が80以上ならAを表示し、そうでない場合は次の論理式へ。A1が60以上であればBを表示し、そうでない場合は次の論理式へ。TRUEがTRUEである場合はCを表示する。」
最後の論理式は必ず真になるので、4つ目の論理式は「その他の場合はCを表示する」になります。
また、論理式や真偽の場合においては、TRUEや数値を書く場合はダブルクオテーション("...")は不要です。
文字列を書く場合はダブルクオテーションが必要になります。
IF関数の軽量化
IF関数が複数書かれているとエクセルシートの挙動が重くなることがあります。
このような挙動が重くなる関数には、IF、COUNTIF、VLOOKUPなどがありますが、こういった関数は可能なかぎり使わないほうが良いといえます。
しかし、挙動を軽くするために複雑な式になってしまうと、今度は見づらさとかミスのしやすさといった別のマイナス要素が生じます。
このあたりのバランスをしっかりと考えて式を組める人がエクセルの上級者だといえるでしょう。
ここでは、IF関数の代わりに使われることのある式の組み方を紹介します。
ここから先は
¥ 300
この記事が気に入ったらチップで応援してみませんか?