IF関数を使い、値に応じたラベルをつける(承前)
データ値に応じて、あらかじめ決めてあるラベル付けを求めるために、IF関数を使う。 ラベル付けは、得点範囲に応じて成績をつけるなど、多くの事例で使われる。
ポイント
- 先に求めた人口密度の結果を使い、密度範囲ごとに定めたラベリングにしたがってランク記号として表す。
- 注目しているセル値がどの範囲に属するかでラベリングが異なる。つまり、範囲ごとに場合分けしてラベリングをきめる必要がある。
- この場合分けをIF関数で行う。
- 場合分けが2つしかない場合には簡単。
- 場合分けが3つ以上ある場合は、IF関数を入れ子(ネスト)にして使うために、表記は複雑になる。
- IF関数を使い複雑な式を直接入力しないで、式を入力できるように関数ボタンを押して現れる入力フォームを使う。
利用する関数
関数名 | 記述 | 意味 |
---|---|---|
IF | IF(論理式, 真の場合, 偽の場合) | 指定された条件が TRUE (真) のとき "真の場合" を返し、FALSE (偽) のとき "偽の場合" を返す。 |
COUNTIF | COUNTIF(範囲, 検索条件) | 指定された範囲に含まれるセルのうち、検索条件に一致するセルの個数を返す。 |
- 比較式
- xはaと等しい:
x = a
- xはaと等しくない:
x <> a
- xはaより小さい:
x < a
- xはaより小さいか等しい(以下):
x <= a
- xはaより大きい:
x > a
- xはaより大きいか等しい(以上):
x > = a
- 論理式
- 論理式 P の否定:
NOT(P)
- 論理式 P と Q,... のAND:
AND(P, Q, ...)
- 論理式 P と Q,... のOR:
OR(P, Q, ...)
例)
xが区間 [70, 80) に含まれる(70 <= x < 80
):
AND(70 <= x, x < 80)
または(70 <= x) AND (x < 80)
説明2)場合分けが2分される場合はIF 関数の使い方は簡単。
例)
xが50以上なら合格、50未満なら不合格:
IF(x >= 50, "合格", "不合格")
説明3)場合分けが3つ以上になると、IF関数の表記はどんどん複雑になる
例)
xが60未満なら不可、60以上70未満なら可、70以上80未満なら良、80以上なら優:
IF(x >= 80, "優", IF(AND(x >= 70, x < 80), "良" , IF(AND(x >= 60, x < 70), "可", "不可")))
上記のようにIF関数は本来は1行で書くが、次のように配置してみると少しはわかりやすくなる。
IF(x >= 80, "優", <---1番目のIF
IF(AND(x >= 70, x < 80), "良" , <---2番目のIF
IF(AND(x >= 60, x < 70), "可", "不可") <---3番目のIF
)
)
しかし、いまの場合、よく考えてみると
IF(x >= 80, "優", IF(x >= 70, "良" , IF(x >= 60, "可", "不可")))
でよいことがわかる(たとえば、2番目のIFの論理式が評価されるときはx < 80
のときであり、ここでこの条件を再度判定する必要はないから)。
ここで利用する表データ:ad_step01.xls
注意: Webブラウザ内で開かないで、一旦ダウンロードしてファイルとして保存してから、そのファイルをOpenしてください。
課題
- "人口"シートで求めた人口密度の値を、[密度範囲, 密度ランク, 密度]の表で定義したランク Aから F でラベルする。
- 関数 COUNTIF を使って、AからFでラベル付けした各ランク数を
K
列に求めなさい。
研究
ランクとランク数を使って、たとえば右図のようなグラフを描きなさい。 グラフには常にタイトルを入れること。
- グラフで使われる凡例で、ランク記号A,B,C,...などには意味がない。 Aの代わりに0〜500人、Bの代わりに501人〜100人などと書き換えてみなさい。
- 表データを条件に従って処理するという作業は、表計算では非常に機会が多い処理の一つである。 そのような分岐処理をここで使ったIF関数だけで行うことは、理論的には可能である。 しかし、その記述は以上の例からわかるように厄介であり、表式の可読性はきわめて悪く、表式のチェックは容易ではなく、その結果、誤った処理となりやすい。 表計算では、このようば場合に他の方法も与えられている。