ITパスポート 2010年 秋期 問61
問題文
表計算ソフトを用いて社員コード中のチェックディジットを検算する。社員コードは3けたの整数値で、最下位の1けたをチェックディジットとして利用しており、上位2けたの各けたの数を加算した値の1の位と同じ値が設定されている。セルB2に社員コードからチェックディジットを算出する計算式を入力し、セルB2をセルB3〜B5に複写するとき、セルB2に入力する計算式のうち、適切なものはどれか。

選択肢
ア:10-整数部(A2/100)+剰余(整数部(A2/10),10)
イ:剰余(10-整数部(A2/100)+整数部(A2/10),10)
ウ:剰余(整数部(A2/100)+剰余(整数部(A2/10),10),10)(正解)
エ:整数部((整数部(A2/100)+整数部(A2/10))/10)
🔒 解説は解答すると表示されます
チェックディジットの検算(表計算)【ITパスポート 解説】
正解の理由
社員コードは3けたの整数で、最下位の1けた(1の位)がチェックディジットになっています。チェックディジットは「上位2けた(100の位と10の位)の各けたの数を加算した値の1の位」です。したがって、
- 100の位(百の位)を取り出す:整数部(A2/100)
- 10の位(十の位)を取り出す:整数部(A2/10) の1の位 → 剰余(整数部(A2/10),10)
- その和の1の位を求める:剰余((1)+(2),10)
これを表す式がウの
剰余(整数部(A2/100)+剰余(整数部(A2/10),10),10)
です。英語の関数名で書くと になります。
ここで使う関数の意味:
- 整数部(INT:integer 部分を返す関数)… 例:整数部(37.9)=37
- 剰余(MOD:余りを返す関数、いわゆる modulo)… 例:剰余(37,10)=7
解法ステップ
- A2 に入っている3けたの数を例に取る(例:370)。
- 100の位を求める:整数部(370/100) = 3。
- 10の位を求める:整数部(370/10) = 37、さらにその1の位 = 剰余(37,10) = 7。
- 3 + 7 = 10、その1の位 = 剰余(10,10) = 0。これがチェックディジット。
- 以上の処理を1つの式にまとめると、ウの式になります。B2にこの式を入力し、下へ複写すれば各行でA列に合わせて正しく計算されます(相対参照)。
計算例(A2=549):
- 整数部(549/100)=5、整数部(549/10)=54 → 剰余(54,10)=4
- 5+4=9 → 剰余(9,10)=9(チェックディジット = 9)
式(見やすく英語関数で書くと):
選択肢別の誤答解説
-
ア: 10-整数部(A2/100)+剰余(整数部(A2/10),10)
「10-整数部(A2/100)」のように100の位を10から引いています。意味が異なり、正しい桁の和の1の位を求められません(A2=370なら 10-3+7 = 14 → 14 をそのまま出す式であれば誤り)。また最後に10で剰余を取っていないため1の位にもなりません。 -
イ: 剰余(10-整数部(A2/100)+整数部(A2/10),10)
100の位を10から引く不自然な操作と、十の位として整数部(A2/10)(例:37)そのままを使っている点が誤りです。十の位は37ではなくその1の位(7)を使う必要があります。A2=370で試すと剰余(10-3+37,10)=剰余(44,10)=4 となり、本来のチェックディジット0と異なります。 -
エ: 整数部((整数部(A2/100)+整数部(A2/10))/10)
(百の位)+(A2/10の整数部分)を10で割った整数部を取っています。十の位を取り出す処理になっておらず、ほとんどの場合誤った値になります。A2=370だと整数部((3+37)/10)=整数部(4)=4 で、正しいチェックディジット0と違います。
よくある誤解
- 「整数部(A2/10) がそのまま十の位」と思い込むミス:整数部(A2/10) は下1けた(1の位)まで残るので、さらにその1の位を取り出す必要があります(剰余で10を取る)。
- 最後に剰余(…,10) を忘れるミス:和を取った後にその1の位(=剰余10)を取らないとチェックディジットになりません。
- 関数名の取り違え:INT(整数部)とMOD(剰余)を混同すると誤答になります。処理の順序(括弧)も重要です。
補足コラム
- 別の実装方法:文字列関数で桁を扱うこともできます。たとえば Excel なら RIGHT(TEXT(A2,"000"),1) で最下位を取り出せます。上位2けたの和の1の位を求めるには、LEFT と MID を組み合わせる方法もありますが、数値操作(INT と MOD)で処理するのが汎用的で分かりやすいです。
- 関数名の英語表記(Excel/スプレッドシートの一般名):
- 整数部 → INT(integer part)
- 剰余 → MOD(modulo / remainder)
- 入力が数値でない場合(文字列になっている等)は、VALUE 関数などで数値に変換してから扱ってください。
FAQ
Q1. A列の値が「037」のように先頭ゼロを付けた場合は?
A1. 表計算ソフトで数値として扱われていれば 37 として扱われます。先頭ゼロを保持したい場合は文字列扱いになりますが、今回の計算は数値前提なので VALUE 関数で数値に変換してから処理するか、文字列操作で桁を取り出してください。
A1. 表計算ソフトで数値として扱われていれば 37 として扱われます。先頭ゼロを保持したい場合は文字列扱いになりますが、今回の計算は数値前提なので VALUE 関数で数値に変換してから処理するか、文字列操作で桁を取り出してください。
Q2. マイナス値や4けた以上は?
A2. 問題は3けたの正の整数が前提です。異なる桁数や負数を扱う場合は、仕様に合わせて桁取り出しの方法を調整してください。
A2. 問題は3けたの正の整数が前提です。異なる桁数や負数を扱う場合は、仕様に合わせて桁取り出しの方法を調整してください。
Q3. コピーしたときに参照がズレない?
A3. この式は相対参照(A2)を使っているので、B2に入れて下へ複写するとB3では自動的に A3 を参照して正しく計算されます。
A3. この式は相対参照(A2)を使っているので、B2に入れて下へ複写するとB3では自動的に A3 を参照して正しく計算されます。
関連キーワード: 表計算, チェックディジット, MOD関数, INT関数, 桁取り出し, Excel, スプレッドシート

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

