問題
問80
表計算ソフトを用いて、買い物金額に応じたポイント数を計算する。買い物金額が1,000円以下では買い物金額の1%,買い物金額が1,000円を超え3,000円以下では買い物金額の2%,買い物金額が3,000円を超える場合は買い物金額の3%のポイントを付与する。ワークシートのセルA2に買い物金額が入力されるとき、ポイント数が表示されるセルB2に入る数式はどれか。ここで、ポイント数の小数点以下は切捨てとする。

- IF(A2≥3000, 整数部(A2・3/100), IF(A2≥1000,整数部(A2/100),整数部(A2・2/100)))
- IF(A2>3000, 整数部(A2・3/100), IF(A2>1000,整数部(A2/100), 整数部(A2・2/100)))
- IF(A2≤1000, 整数部(A2/100), IF(A2≤3000,整数部(A2・2/100),整数部(A2・3/100)))
- IF(A2<1000, 整数部(A2/100), IF(A2<3000,整数部(A2・2/100),整数部(A2・3/100)))
[出典:ITパスポート試験 平成28年度春期 問80]
正解
正解は「ウ」です。
解説
正解はウです。この問題は、複数の条件に応じて計算式を切り替えるIF関数と、小数点以下を切り捨てる整数部関数を組み合わせる問題です。IF関数は「IF(条件式, 真の場合の処理, 偽の場合の処理)」という形式で、条件式が真なら真の場合の処理、偽なら偽の場合の処理を実行します。ネストされたIF関数では、外側の条件が偽だった場合に内側のIF関数が評価されます。
選択肢ウでは、まず「A2≤1000」(買い物金額が1,000円以下)という一番小さい条件を最初に判定しています。これが真であれば1%のポイントを計算します。もし偽(つまり1,000円より大きい)であれば、次に「A2≤3000」(買い物金額が3,000円以下)という条件を判定します。これは、すでに1,000円より大きいことが確定しているため、「1,000円を超え3,000円以下」という範囲を意味します。ここで真であれば2%のポイントを計算します。もしこれも偽(つまり3,000円より大きい)であれば、自動的に3%のポイントが計算されます。このように、条件を狭い範囲から順に判定していくことで、全ての条件を正しく網羅できます。
例えば、A2が1000円の場合、最初の条件で1%が適用されます。A2が2000円の場合、最初の条件は偽なので2番目の条件で2%が適用されます。A2が3350円の場合、最初の2つの条件が偽なので最後の3%が適用され、100ポイントとなり問題文の例と一致します。
ア(IF(A2≥3000, 整数部(A2・3/100), IF(A2≥1000,整数部(A2/100),整数部(A2・2/100)))):
この選択肢では、最初に「A2≥3000」(3,000円以上)という条件を判定しています。この順番でいくと、例えば買い物金額が2,000円の場合、「A2≥3000」は偽となり、次に「A2≥1000」が真となるため、1%のポイントが適用されてしまいます。しかし、問題の指示では2,000円は2%のポイントが付与されるべきなので、誤りです。
イ(IF(A2>3000, 整数部(A2・3/100), IF(A2>1000,整数部(A2/100), 整数部(A2・2/100)))):
この選択肢もアと同様に、最初に大きい条件から判定しているため、条件の適用順序が正しくありません。例えば、買い物金額が2,000円の場合、アと同様に1%のポイントが適用されてしまい、問題の指示に反します。また、「>」を使用しているため、境界値(3000円や1000円ぴったり)の場合の扱いも問題が生じる可能性があります。
エ(IF(A2<1000, 整数部(A2/100), IF(A2<3000,整数部(A2・2/100),整数部(A2・3/100)))):
この選択肢は、一見すると正しい順序で条件を評価しているように見えますが、境界値の扱いに誤りがあります。例えば、買い物金額が1,000円の場合、最初の条件「A2<1000」は偽となります。次に内側のIF関数「A2<3000」が真となり、2%のポイントが適用されてしまいます。しかし、問題の指示では1,000円以下は1%とされているため、この選択肢は正しくありません。
難易度
この問題は、表計算ソフトのIF関数の使い方、特に複数の条件をネスト(入れ子)にして使う場合の論理的な思考力を試すものです。条件の適用範囲と境界値の扱いを正確に理解する必要があります。初学者にとっては、どの条件から評価していくか、また「以下」「超える」といった表現を不等号でどう表すかが難しいかもしれません。しかし、一つ一つ条件を検証し、具体的な数値でシミュレーションすることで理解を深めることができます。
用語補足
表計算ソフト:
数値や文字列をマス目(セル)に入力し、計算やデータ分析を行うソフトウェアです。例えば、家計簿の作成や売上管理などに使われます。Excel(エクセル)が有名ですね。
IF関数:
指定した条件が「真」(正しい)か「偽」(間違い)かによって、異なる処理を実行する関数です。例えば、「もしテストの点数が80点以上なら『合格』、そうでなければ『不合格』と表示する」といった条件分岐に使います。
整数部:
数値の小数点以下の部分を切り捨てて、整数だけを取り出す処理のことです。例えば、計算結果が10.5になった場合、整数部関数を使うと10になります。今回の問題ではポイントの計算結果の小数点以下を切り捨てるために使われます。
論理式:
「真」か「偽」のどちらかの結果になる式のことです。例えば、「AがBより大きい」や「Cが100と等しい」といった比較をする式がこれに当たります。IF関数の条件部分に使われます。
対策
この問題のポイントは、IF関数をネスト(入れ子)で使う際の条件の評価順序と、問題文にある「〜以下」「〜を超える」といった境界値の扱いを正確に不等号で表すことです。複数の条件がある場合、範囲が狭い条件(例:〜1,000円以下)から順に評価していくと、論理の矛盾が起こりにくくなります。また、作成した数式を問題文にある具体的な数値(例:1,000円、2,000円、3,000円、3,001円など)でテストし、期待通りの結果になるかを確認することが重要です。

