ITパスポート試験 / 平成28年度 春期 ITパスポート試験 / 問80
certification-simodake-work

平成28年度 春期 ITパスポート試験 問80 解説 表計算のIF関数

設問図

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

  1. ア IF(A2≧3000, 整数部(A2*3/100), IF(A2≧1000, 整数部(A2/100), 整数部(A2*2/100)))
  2. イ IF(A2>3000, 整数部(A2*3/100), IF(A2>1000, 整数部(A2/100), 整数部(A2*2/100)))
  3. ウ IF(A2≦1000, 整数部(A2/100), IF(A2≦3000, 整数部(A2*2/100), 整数部(A2*3/100))) ✓ 正答
  4. エ IF(A2<1000, 整数部(A2/100), IF(A2<3000, 整数部(A2*2/100), 整数部(A2*3/100)))

解説

条件分岐の数式を解くコツは、条件の「境界値」と「不等号」を問題文と照らし合わせることです。

今回の問題文には「1,000円以下」「1,000円を超え3,000円以下」「3,000円を超える」という3つの条件があります。これを上から順番にIF関数で判定していくには、まず最も小さい範囲である「1,000以下」を確認し、次に「3,000以下」を確認することで、残りの「3,000超」を自動的に導くという論理構成が適切です。

IF関数による条件分岐の基本

IF関数は、IF(条件,真の場合,偽の場合)IF(条件, 真の場合, 偽の場合) という形式をとります。条件が満たされれば真の処理を行い、そうでなければ偽の処理を行う仕組みです。複雑な条件を扱う場合、偽の場合の中にさらに別のIF関数を入れる「ネスト(入れ子)」構造を用います。

選択肢ウの式を見てみましょう。 IF(A21000,整数部(A2/100),IF(A23000,整数部(A22/100),整数部(A23/100)))IF(A2 \leqq 1000, 整数部(A2/100), IF(A2 \leqq 3000, 整数部(A2*2/100), 整数部(A2*3/100)))

  1. 最初のIFで「A2が1,000以下か?」を判定します。条件に当てはまれば1%(100分の1)を計算して終了です。
  2. もし1,000を超えていた場合、次のIFに移ります。ここでは「A2が3,000以下か?」を判定します。
  3. 1と2の条件に当てはまらないケース、すなわち「1,000超かつ3,000超」という矛盾する状態ではなく、消去法によって必然的に「3,000超」のケースだけが最後の処理(3%)へ進むことになります。

このように、条件を順序立てて整理することで、すべての金額帯を正しく網羅できます。

プログラミング的な思考とITパスポートの関連性

この問題は単なる表計算ソフトの操作方法を問うだけではありません。システム開発の現場で必須となる「ロジックの組み立て」を学んでいます。

実際の業務システムでは、料金プランの切り替え、送料計算、会員ランク別の割引率など、複数の条件に応じた複雑な計算処理が頻繁に発生します。例えば、オンラインショップの決済システムで、この条件設定を誤ると、正しいポイントが付与されず、顧客からの問い合わせやシステムの不具合に直結します。

プログラミングや表計算で「境界値(1,000や3,000)」をどこまで含めるべきか(以上・以下・超・未満の区別)を厳密に扱う能力は、システムエンジニアやITを活用するビジネスパーソンにとって最も基本的な素養の一つです。テスト対策としては、不等号の向き(\leqq<<)を丁寧に書き出し、具体的な数値を当てはめて正しい答えが出るかを確認する癖をつけておきましょう。

参考リンク

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう