わえなび ワード&エクセル問題集

当サイトはWordとExcelの実力を鍛える最高水準の特訓問題集です。リンクを張るのは自由です。みんなで勉強しましょう!

MOD関数で小数部分や下位の桁を取り出す、下の位の一致判定

大きい数を10、100、1000などの10の累乗で割ると上位の桁を取り出すことができます(参考:【Excel】INT関数で割り算の答えを整数値で求めることを利用した応用問題)。そして、そのときの余りは下位の桁となります。例えば、3456円の金額を支払うために必要な1000円札の枚数は、割り算をすることによって3枚であることが分かりますが、余りの456円は硬貨で支払うことになります。

  • 3456÷1000=3・・・456

100で割ると商が34で余りが56、10で割ると商が345で余りが6となりますが、いずれも「3456」という数が商と余りに分かれています。

  • 3456÷100=34・・・56
  • 3456÷10=345・・・6

そこで、今回は、MOD関数を用いて下の位や小数部分を取り出すことについて出題します。

目次

1.小数部分を取り出す

問題

A列に小数を入力した。整数部分と小数部分に分離しなさい。

f:id:waenavi:20201116123629j:plain

 

解説

プラスの小数の場合、小数点の左側を「整数部分」、右側を「小数部分」といいます。

f:id:waenavi:20201116124152j:plain

 

整数部分を取り出すというのは、プラスの小数の場合は小数点以下を切り捨てることと同じですから、INT関数を使います(参考:【Excel】INT関数の入力と修正、元の数を超えない最大の整数とは何か)。

  • =INT(A2)

f:id:waenavi:20201116124624j:plain

 

小数部分は元の数から整数部分を引いた残りです。

  • =A2-B2

f:id:waenavi:20201116124805j:plain

 

別解

ところで、余りのある割り算で、割り算の商は「割り算の結果を超えない最大の整数」であり、INT関数で求められます。3500を1000で割ったときの商が3になるのは、割り算の結果である「3.5」を超えない最大の整数が3だからです。INT関数を使うと、INT(3500/1000)=3です。

f:id:waenavi:20201116125053j:plain

 

余りは、元の数から割る数*商を引いて求めることができます。余りが500になるのは、3500 - 1000*3 = 500だからです。

f:id:waenavi:20201116125335j:plain

 

ここで、968.723を1で割ることを考えると、968.723 ÷ 1 = 968.723なので、商は968です。INT関数を使うと、INT(968.723/1)=968です。1で割ったときの商は、元の数の整数部分です。

f:id:waenavi:20201116125537j:plain

 

余りは、元の数から割る数*商を引いて求めますから、968.723 - 1*968 = 0.723となります。

f:id:waenavi:20201116125633j:plain

 

したがって、1で割ったときの商は整数部分、余りは小数部分になります。

f:id:waenavi:20201116125835j:plain

 

MOD関数を挿入します。

f:id:waenavi:20201116130003j:plain

 

元の数を1で割ったときの余りを求めます。小数部分になります。

  • =MOD(A2,1)

f:id:waenavi:20201116131143j:plain

 

このように、ある小数を整数部分と小数部分に分離するには、INT関数とMOD関数を使います。

f:id:waenavi:20201116131722j:plain

 

2.整数であることの判定方法

問題

A列の値が整数であれば○と表示しなさい。

f:id:waenavi:20201116132026j:plain

 

解説

入力されている値が整数である場合、INT関数で小数部分を切り捨てても変わりません。このことを利用して整数であることを判定することができます。

f:id:waenavi:20201116132330j:plain

 

元の数とINT関数によって切り捨てた値を比較します。整数の場合だけTRUEになります。

  • =A2=INT(A2)

f:id:waenavi:20201116132459j:plain

 

IF関数を挿入します(参考:【Excel】一致の判定はイコール「=」、等しくないことの判定は不等号2つ「<>」)。

f:id:waenavi:20201116144032j:plain

 

TRUEであれば○、FALSEであれば空白を返します。

  • =IF(A2=INT(A2),"○","")

f:id:waenavi:20201116144107j:plain

 

これで完成です。

f:id:waenavi:20201116144134j:plain

 

別解

整数には小数部分が無いので、MOD関数で小数部分を求めると0になります。

f:id:waenavi:20201116144334j:plain

 

0であることを判定するのに比較演算は不要なので、MOD関数をそのまま論理式として判定に使用することができます(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。TRUEであれば0ではないので小数、FALSEであれば0ということなので整数となります。

f:id:waenavi:20201116150842j:plain

 

IF関数を挿入します。さらに、MOD関数を挿入します。

f:id:waenavi:20201116145014j:plain

 

小数部分を求めるため1で割ります。

f:id:waenavi:20201116145046j:plain

 

TRUEであれば空白を返し、FALSEであれば○とします。これで完成です。

  • =IF(MOD(A2,1),"","○")

f:id:waenavi:20201116145112j:plain

 

3.小数第2位以降の取得

問題

A列に小数を入力した。小数第1位までと、小数第2位以降を分離しなさい。ただし、小数第2位以降が無い場合は0とする。

f:id:waenavi:20201116145713j:plain

 

解説

小数第1位までを求めるには、ROUNDDOWN関数を使います(参考:【Excel関数】ROUNDUPとROUNDDOWN、切り上げ、切り捨て、四捨五入の練習問題)。桁数は1です。

  • =ROUNDDOWN(A2,1)

f:id:waenavi:20201116145934j:plain

 

<補足>ちなみに、これを10倍すれば小数第1位だけを取り出すことができます。

f:id:waenavi:20201116150131j:plain

 

元の数から小数第1位までを引けば小数第2位以降になります。

f:id:waenavi:20201116150045j:plain

 

別解

1で割ったときの余りは小数部分です。小数部分は1未満の部分を取り出したものです。

f:id:waenavi:20201116150532j:plain

 

これと同じように0.1で割ったときの余りを求めると、0.1未満の部分を求めることができます。

f:id:waenavi:20201116150744j:plain

 

いっぱんにXで割ったときの余りは、X未満の部分を求めるのと同じであり、その答えは0以上X未満になります。

f:id:waenavi:20201116151017j:plain

 

MOD関数を挿入します。

f:id:waenavi:20201116151104j:plain

 

0.1で割ります。これで完成です。

  • =MOD(A2,0.1)

f:id:waenavi:20201116152507j:plain

 

4.下位の桁を取り出す

問題

A列に年月日を表す8桁の数値を入力した。INT関数またはMOD関数を用いて上4桁と下4桁に分離しなさい。

f:id:waenavi:20201116153516j:plain

 

解説

長い数値のうち、上の桁を取り出すにはINT関数を使います。万の位以上を取り出すので10000で割ります。

f:id:waenavi:20201116153607j:plain

 

10000で割ると10000以上の部分を取り出すことができますが、このときの余りは10000未満の部分です。つまり、下4桁の部分となります。上の位を取り出すのはINT関数、下の位を取り出すのはMOD関数です。

f:id:waenavi:20201116154212j:plain

 

MOD関数を挿入します。元の数を10000で割った余りを求めます。これで下4桁の部分を数値として取り出すことができます。

f:id:waenavi:20201116153901j:plain

 

いっぱんに、長い数値が入力されていて、X以上の部分とX以下の部分を分離するには、INTとMODを用いて、Xで割ったときの商と余りを求めます。

f:id:waenavi:20201116154619j:plain

 

別解

10000は10の4乗です。下4桁を取り出すには、10の4乗で割った余りを求めます。

  • =MOD(A2,10^4)

f:id:waenavi:20201116154707j:plain

 

長い数値が入力されていて、下のX桁の部分を取り出すには10のX乗で割ったときの余りを求めます。

f:id:waenavi:20201116154941j:plain

 

5.くじの当たり判定

(1)下位の桁が一致することの判定

問題

お年玉付年賀はがきが届いたので、A列にくじの番号を6桁で入力した。しかし、数値として入力しているため、先頭が0の場合は表示されなかった。

f:id:waenavi:20201116155231j:plain

 

その後、抽選会が行われたので、3行目に当せん番号を入力した。1等は下6桁、2等は下4桁、3等は下2桁が一致すれば当たりである。くじの番号と照合して、当たりの場合は「当たり」と表示しなさい。

f:id:waenavi:20201116155253j:plain

 

解説

下6桁を取り出すには10の6乗で割ったときの余りを求めます。

f:id:waenavi:20201116161900j:plain

 

IF関数を挿入します。さらに、MOD関数を挿入します。

f:id:waenavi:20201116155624j:plain

 

列固定の複合参照にします。10の6乗で割ります。桁数は行固定です(参考:【Excel複合参照】行固定や列固定のドルマークの意味と練習問題)。

f:id:waenavi:20201116155754j:plain

 

当せん番号と比較します。当せん番号は行固定です。一致すれば当たり、一致しなければ空白を返します。

  • =IF(MOD($A4,10^B$2)=B$3,"当たり","")

f:id:waenavi:20201116155946j:plain

 

これで完成です。

f:id:waenavi:20201116160004j:plain

 

(2)先頭の0があってもよいか

問題

A列と3行目の表示形式を文字列として先頭の0も入力した。この場合も、さきほどの設問(1)の数式で正しく判定できるか。

f:id:waenavi:20201116161139j:plain

 

解説

Excelは表示形式が標準の場合、先頭に0を入力しても消えてしまいます。そこで、A列を表示形式を文字列にします。これで先頭に0を入力することができます。

f:id:waenavi:20201120184128j:plain

 

さきほど入力した数式はエラーにならず、正しく判定できます。

f:id:waenavi:20201116161316j:plain

 

表示形式を文字列として入力したとしても、それが数値に変換できる場合は、自動的に数値に変換して余りを求めます。

f:id:waenavi:20201116161651j:plain

 

今度は、3行目の当せん番号を文字列にして入力します。「当たり」が消えてしまいました。

f:id:waenavi:20201120184225j:plain

 

MOD関数が数値を返すのに対して、当せん番号B$3が文字列なので不一致となるのです。

f:id:waenavi:20201120184524j:plain

 

この場合は、1をかけて文字列を数値に変換すればうまくいきます(参考:【Excel】数値と文字列の違い、数値と文字列の変換方法の総まとめ)。

  • =IF(MOD($A4,10^B$2)=B$3*1,"当たり","")

f:id:waenavi:20201120184723j:plain

 


解説は以上です。


 


Copyright(C)2018-2020 waenavi, All rights reserved. [www.waenavi.com 定礎 平成三十年八月]
Youtube | 公式サイト | twitter | 著作権 | 運営者情報 | お問い合わせ