【え?こんなに簡単?】知らないと損!エクセルMOD関数で在庫・曜日計算が劇的に楽になる裏技

エクセル

電卓でポチポチ…、時間かかっちゃうんだよなぁ…

エクセルで割り算の余りを出すのって、地味に手間じゃありませんか? 

それに、

在庫管理で特定の商品だけ抜き出したいけど、どうすれば…?

なんて頭を悩ませている方もいるかもしれませんね。

この記事を読めば、そんなあなたの悩みを解決する、エクセルのMOD関数という秘密兵器を手に入れることができます。

  • 手計算から解放され、ミスなくスマートに余りを計算する方法
  • 在庫管理やデータ分析で、特定の条件に合うものを瞬時に見つけるテクニック
  • 時間計算や条件分岐など、日々の業務を効率化する活用術

さあ、MOD関数をマスターして時間がかかっていた作業をあっという間に終わらせ、もっとクリエイティブな仕事に時間を使えるようにしましょう!

もう割り切れない悩みとは無縁!MOD関数でスマートに問題解決

もう割り切れない悩みとは無縁!MOD関数でスマートに問題解決

「MOD関数って何?」余りを求める超便利関数

エクセルで割り算をする時「電卓を叩いて余りを出す」なんてことしていませんか?それ、もうしなくていいんです!

エクセルには、割り算の「相棒」とも言える、MOD関数という便利な関数があるんですよね。

これはただ割り算の結果を出すだけでなく、その時にポロッと出てくる「余り」という、ちょっと奥ゆかしい答えも教えてくれるスゴいヤツなんです。

例えば、「10 ÷ 3」の答えは「3」ですよね。でも、MOD関数にかかれば、隠れていた「1」という余りの部分を教えてくれます。

一見するとシンプルな機能に見えるかもしれませんが、このMOD関数、実は色々な場面で驚くほど役に立つんです。

「どんな時に使うの?」MOD関数が活躍する場面とメリット

では、このMOD関数、どんな時に使うと便利なんでしょうか?

簡単に言うと、

規則性を見つけたい時
グループ分けをしたい時
ある条件で処理を分けたい時

などに、その力を発揮してくれます。

使用場面の例

在庫管理

たとえば、商品コードが特定の数でキレイに割り切れるものをピックアップして、定期的な棚卸の対象にする、なんてことができます。

商品コードが5で割り切れる商品を今週の棚卸対象にする、みたいなイメージですね。こうすることで、棚卸の作業を上手に分散させることができるんです。

詳細例
商品コードが「ABC-1001」から「ABC-1005」まであったとします。「ABC-1005」だけを棚卸したい場合、MOD関数を使って

PowerShell
=MOD(1005, 5) = 0

という条件で判定するとTRUEと表示されます。

=MOD(1005,5)=0

これは、「商品コードの最後の数字が5で割り切れるものが存在する」ということを確認できた状態ですね。

この結果を利用して、実際に「ABC-1005」を抽出することができるようになる、というわけです。便利ですよね。

時間計算

会議を例に挙げましょう。開始から15分ごとに休憩を入れるとします。

MOD関数を使えば、経過時間を15で割った余りが0になったタイミングで、「はい、休憩!」ってアナウンスができるわけですね。

詳細例: 10時スタートの会議で、今10時45分だとします。休憩は15分おき。これまでの休憩は10時15分と10時30分でした。

・セルA1に会議の開始時間(例: 10:00)が入力されているとします。
・セルB1に現在の時間(例: 10:45)が入力されているとします。
・セルC1に休憩間隔(分単位、例: 15)が入力されているとします。

休憩のアナウンスを表示するセル(例えばD1セル)に入力する関数式は以下のようになります。

PowerShell
=IF(MOD((HOUR(B1)*60+MINUTE(B1)) - (HOUR(A1)*60+MINUTE(A1)), C1) = 0, "はい、休憩!", "")
=IF(MOD((HOUR(B1)*60+MINUTE(B1)) - (HOUR(A1)*60+MINUTE(A1)), C1) = 0, "はい、休憩!", "")

この関数式を使うことで、現在の時間が休憩のタイミングかどうかを自動的に判定し、必要に応じて「はい、休憩!」というメッセージを表示することができます。

データ分析

日付データから曜日を知りたい時にもMOD関数は活躍します。

特定の日付が週の何番目の日なのかをMOD関数で計算することで、例えば週末のデータだけを効率的に取り出すといった分析ができます。

詳細例:ある年の1月1日が日曜日だったとしましょう。1月10日はその年の10日目です。この10日目を7で割った余りを求めると「MOD(10, 7) = 3」となります。

ここで、日曜日を0、月曜日を1、火曜日を2、水曜日を3…と数えると、余りの「3」は水曜日に対応します。つまり、1月10日は水曜日だとわかるのです。

例えば、A1セルに「2024/1/10」と入力されている場合、

PowerShell
=CHOOSE(MOD(A1 - DATE(YEAR(A1),1,1) + WEEKDAY(DATE(YEAR(A1),1,1),1)-1, 7)+1, "日", "月", "火", "水", "木", "金", "土")

という関数を使用すると、対応する「水」が表示されます。

=CHOOSE(MOD(A1 - DATE(YEAR(A1),1,1) + WEEKDAY(DATE(YEAR(A1),1,1),1)-1, 7)+1, "日", "月", "火", "水", "木", "金", "土")

※注意※
今回は「MOD関数でできること」の一例として曜日を求める方法を提示しましたが、曜日を求めるだけなら、本来はTEXT関数を使うのが最も簡潔ですw

PowerShell
=TEXT(A1,"aaa")
=TEXT(A1,"aaa")

MOD関数を使うメリット

  • 処理の自動化
  • 条件分岐の簡略化
  • 規則性の発見

今まで手作業で計算していた余りの計算を、エクセルが自動でやってくれるんですから、これはもう効率アップ間違いなしですよね。

例えば、たくさんの顧客データがあって、顧客IDの末尾の数字でグループ分けしたいとします。手作業で一人ずつ確認するのは大変ですが、MOD関数を使えば、パパッと自動で振り分けられるんです。

「もし〇〇が3の倍数だったらA、5の倍数だったらB、それ以外はC」なんて複雑な条件分けも、MOD関数を使えばスッキリ書けるんです。

例えば、ある数字が偶数か奇数かを判断する場合。「もし〇〇を2で割った余りが0なら偶数、そうでなければ奇数」というように、MOD関数を使うとシンプルに表現できます。

データの中に隠れている規則性や周期性を見つけ出す手助けをしてくれるのも、MOD関数の良いところ。分析の精度がグンと上がりますよ。

例えば、ウェブサイトのアクセスログを見ていて、「特定の時間帯にアクセスが多いな」と感じたとします。MOD関数を使えば、時間ごとのアクセス数を24で割った余りを見ることで、1日のうちで特にアクセスが多い時間帯を特定できるんです。

MOD関数、3ステップで使いこなせる基本操作

MOD関数、3ステップで使いこなせる基本操作

「どう書くの?」具体的な構文(引数)を含む関数の書式

MOD関数の書き方はすごくシンプルです。

PowerShell
=MOD(割られる数, 割る数)

「省略しても大丈夫?」各引数の説明

割られる数

これは、余りを計算したい数字、つまり「主役」となる数字です。絶対に必要ですね。

割る数

こちらは、割る数、つまり「分割する数」です。こちらも絶対に必要です。

そして、0(ゼロ)を指定しないでください!

どちらの引数もMOD関数にとっては大切な要素なので、省略することはできません。必ず数字を指定しましょう!

「実際にやってみよう!」基本的な使い方を例で覚える

例1:10を3で割った余りを求める
PowerShell
=MOD(10, 3)

これを実行すると「1」と表示されます。これが、10を3で割った余り、というわけですね。

=MOD(10, 3)
例2:25を5で割った余りを求める
PowerShell
=MOD(25, 5)

実行すると、今度は「0」と表示されます。これは、25が5でキレイに割り切れた、つまり余りがない、という意味ですね。

=MOD(25, 5)
例3:-10を3で割った余りを求める
PowerShell
=MOD(-10, 3)

Excel の MOD 関数は、除数の符号に合わせて余りの符号を決定するため、MOD(-10, 3) は 2 という結果になります。

=MOD(-10, 3)

これは、MOD(n, d) = n – d * FLOOR(n/d) という計算式に基づいているからです。

MOD関数で業務効率を格段にアップ!知っておくべき応用テクニック

MOD関数で業務効率を格段にアップ!知っておくべき応用テクニック

「もっと便利に!」最大効果を発揮する使い方を詳細解説

「MOD関数」単独で使ってももちろん便利なんですが、他の関数と組み合わせると、そのパワーがさらにアップするんです。

特に、条件によって何かを変えたい時とか、日付や時間を扱いたい時には、その組み合わせが威力を発揮しますよ。

条件分岐との連携

もし〇〇だったら、こうする、そうでなければ、ああする、という条件分岐をエクセルで表現するIF関数。

このIF関数とMOD関数を組み合わせると、余りの数によって違う処理をすることができるんです。

例えば、ある数字が偶数か奇数かで、表示する内容を変える、なんてことができます。

PowerShell
=IF(MOD(A1, 2) = 0, "偶数", "奇数")

この式は、もし「A1」を2で割った余りが0だったら(つまり偶数だったら)「偶数」と表示し、そうでなければ「奇数」と表示する、という意味ですね。

=IF(MOD(A1, 2) = 0, "偶数", "奇数")

周期的な処理の制御

エクセルで、行番号や列番号を取得できるROW関数やCOLUMN関数。

これらとMOD関数を組み合わせると、例えば「3行ごとに背景色を変える」といった、周期的な処理が簡単にできるようになるんです。

条件付き書式の設定例
  • ルール1 (背景色A)

    数式に

    PowerShell
    =MOD(ROW(), 3) = 1

    を入力し、背景色Aを設定します。

  • ルール2 (背景色B)

    数式に

    PowerShell
    =MOD(ROW(), 3) = 2

    を入力し、背景色Bを設定します。

  • ルール3 (必要に応じて別の背景色)

    数式に

    PowerShell
    =MOD(ROW(), 3) = 0

    を入力し、別の背景色を設定します。

    「3行ごとに背景色を変える」といった、周期的な処理

    例えば、この数式全部をA1セルに設定してからオートフィルすれば、画像のように行ごとに自動で着色されます!

ROUND関数との組み合わせ

割り算をした結果を、例えば「小数点以下を四捨五入して整数にしてから、その余りを求めたい」なんて時に便利です。

金額を千円単位で丸めて、その余りが知りたかったりする時に使えますね。

PowerShell
=MOD(ROUND(A1 / 1000, 0), 5)

この式は、まず「金額」を1000で割って、小数点以下を四捨五入します。その結果をさらに5で割った余りを求める、という意味になります。

例えば、12345円だったら、1000で割って四捨五入すると12になりますよね。それを5で割った余りは2。つまり、千円単位で丸めた金額が、5の倍数からどれだけズレているかがわかるんです。

=MOD(ROUND(A1 / 1000, 0), 5)

DATE関数やTIME関数との組み合わせ

日付や時間の計算で、特定の曜日だけ何かをしたい、とか、毎月月末に処理をしたい、といった場合に役立ちます。

PowerShell
=IF(MOD(DAY(A1), 7) = 2, "週初め", "")

この例では、A1セルから日だけを取り出して、それを7で割った余りが1かどうかを調べています。もし2だったら、「週初め」と表示する、という意味ですね。

=IF(MOD(DAY(A1), 7) = 2, "週初め", "")

「裏技はないの?」その他、便利な使い方について

グループ分け

MOD関数で計算した余りの数を使って、データをいくつかのグループに分けることができます。

例えば、顧客IDを4で割った余りが0の人はグループA、1の人はグループB、というように分けて、それぞれに合った販促活動をする、なんて使い方ができます。

PowerShell
=CHOOSE(MOD(A1, 4)+1, "グループA", "グループB", "グループC", "グループD")

この関数式では、顧客IDが数値であることを前提としています。

もし顧客IDが数値でない場合は、エラーが発生する可能性があります。必要に応じて、顧客IDを数値に変換する処理を追加しましょう。

チェックデジットの検証

商品についているバーコードや、会員証の番号などについている、最後の1桁の数字。あれはチェックデジットと言って、入力ミスを防ぐためのものなんです。

このチェックデジットが正しいかどうかは、特定の計算方法に基づいて検証できます。例えば、JANコード(バーコード)の場合、以下の手順で計算された値と一致するかを確認します。

詳細手順(例:JANコード)

JANコード(バーコード)の下1桁を除く数字を使って計算
具体的には、偶数桁の数字を合計し、それを3倍する)

奇数桁の数字を合計する。

これら二つの合計を足し合わせ、その合計を10で割った余りを計算。

この余りを10から引いた数(余りが0の場合は0)がチェックデジットと一致すれば、そのJANコードは正しいと判断できる。

PowerShell
=IF(MOD(10-MOD(SUMPRODUCT(MID(A1,ROW(INDIRECT("1:"&LEN(A1)-1)),1)*(MOD(ROW(INDIRECT("1:"&LEN(A1)-1)),2)=0)*3) + SUMPRODUCT(MID(A1,ROW(INDIRECT("1:"&LEN(A1)-1)),1)*(MOD(ROW(INDIRECT("1:"&LEN(A1)-1)),2)=1)),10),10)=RIGHT(A1,1),"OK","NG")

この数式では、

・MID関数で各桁の数字を取り出し、ROW関数とMOD関数で偶数・奇数桁を判別

・SUMPRODUCT関数でそれぞれの合計を計算し、JANコードのチェックデジット計算ロジックを実装

・最後に、計算結果と実際のチェックデジットをRIGHT関数で比較し、一致すれば”OK”、そうでなければ”NG”と表示

します。

=IF(MOD(10-MOD(SUMPRODUCT(MID(A1,ROW(INDIRECT("1:"&LEN(A1)-1)),1)*(MOD(ROW(INDIRECT("1:"&LEN(A1)-1)),2)=0)*3) + SUMPRODUCT(MID(A1,ROW(INDIRECT("1:"&LEN(A1)-1)),1)*(MOD(ROW(INDIRECT("1:"&LEN(A1)-1)),2)=1)),10),10)=RIGHT(A1,1),"OK","NG")

ちなみに、この画像のNGは正解です。

JANコードのチェックデジット計算手順
  • 偶数桁の数字を合計し、3倍する

    2 + 0 + 8 + 6 + 4 + 2 = 22
    22 × 3 = 66

  • 奇数桁の数字を合計する

    3 + 1 + 9 + 7 + 5 + 3 + 1 = 29

  • 二つの合計を足し合わせる

    66 + 29 = 95

  • 合計を10で割った余りを計算する

    95 ÷ 10 の余りは 5

  • 余りを10から引く(余りが0の場合は0)

    10 – 5 = 5

    計算結果: このバーコード番号から計算されるべきチェックデジットは 5 です。

    実際のチェックデジット: 入力されているバーコード番号の最後の桁は 3 です。

    計算されたチェックデジット(5)と実際のチェックデジット(3)が一致しないため、数式は正しく “NG” と判定しています。

MOD関数でつまずいた?よくあるエラーと解決策

MOD関数でつまずいた?よくあるエラーと解決策

「何が原因?」代表的なエラーの紹介

MOD関数のよくあるエラーとしては、以下があります。

割る数が0(ゼロ)の場合のエラー

MOD関数で、何かを0で割る、というのは数学的にNGなので、エクセルも「それは無理!」ってエラーを出します。

そういう時には「#DIV/0!」というエラーが表示されます。これは「0で割っちゃダメ!」っていうサインですね。

数値以外の値が引数に指定された場合のエラー

MOD関数は、数字を割るための関数なので、割る数とか割られる数に、文字とか日付とか、数字じゃないものを指定すると、「これは計算できないよ!」ってエラーになっちゃいます。

数字を入れるべきところに文字が入っていると「#VALUE!」というエラーが出ることがあります。

「どうすれば直る?」原因と解決方法について詳細に

  • 割る数が0(ゼロ)の場合のエラー
  • 数値以外の値が引数に指定された場合のエラー

MOD関数の「割る数」のところに、直接「0」って入力しちゃったり、計算した結果がたまたま0になっちゃったりすると、このエラーが出ます。

解決方法

まず、「割る数」のところに本当に0が入ってないか、確認してみてください。もしセルの参照を使っているなら、そのセルにちゃんと数字が入っているかチェックしましょう。

もし「割る数」が何か計算式になっているんだったら、その計算結果が0にならないか確認して、必要なら式を修正しましょう。

例えば、「A1-B1」が割る数になっているなら、A1とB1の値を見直して、差が0にならないように調整する、といった具合です。

それから、IF関数なんかを使って、割る数が0になりそうな場合に、あらかじめ別の値を返すようにしておくのも手ですね。例えば、

PowerShell
=IF(割る数 = 0, 0, MOD(割られる数, 割る数))

という式にすれば、割る数が0の時はエラーにならずに0を返すようにできます。

具体的に書くと、

PowerShell
=IF(C1=0, 0, MOD(A1, C1))

みたいになりますね。

MOD関数の「割られる数」とか「割る数」のところに、文字や日付など、数字として認識できないデータが入ってきちゃった時に起こります。

解決方法

まず、引数に指定しているものがちゃんと数字かどうか、確認しましょう。もしセルの参照を使っているなら、参照先のセルに数字が入力されているかを見てみてください。

もし、見た目は数字なんだけど、エクセルが文字として認識している場合は、VALUE関数を使って数字に変換してからMOD関数に渡してあげましょう。

例えば、

PowerShell
=MOD(VALUE("10"), 3)

のようにします。

エクセルのセルに「10」っていう文字が入っているなら、

PowerShell
=MOD(VALUE(A1), 3)

って書けばOKですね。

外部のデータを取り込んでいる場合など、どうしても数字以外のデータが混ざってしまう可能性がある場合は、事前にデータの形式をチェックする仕組みを入れておくと安心です

例えば、エクセルのVBAでデータの型を確認してからMOD関数を実行する、といった対策が考えられますね。

「他に気をつけることは?」その他の注意点

余りの符号

MOD関数で出てくる余りの符号(プラスとかマイナス)は、割る数の符号と同じになることが多いんです。

でも、使うソフトやプログラミング言語によっては、ちょっと違う場合もあるので注意が必要。マイナスで割った時の余りがどうなるかは、使っているものの説明書を見て確認するのが確実ですね。

例えば、エクセルでMOD(-10, 3)と計算すると2になりますが、Pythonだと-1になることがあります。

これは、数学的な「剰余」の考え方と、プログラミングで余りを計算する時のルールが少し違うことが原因。

エクセルのMOD関数は、割る数と余りの符号を合わせるように決められています。

一方、Pythonの%という記号を使った計算では、割られる数と余りの符号が一致するように決められています。

この違いを知っておくと、色々な場面でMOD関数を使う時に混乱せずに済みますよ。

データ型

MOD関数は、整数だけじゃなくて、小数点がついた数字(実数)でも計算できます。でも、実数で割った時の余りの計算は、ちょっとイメージと違う結果になることもあるので、注意してくださいね。

例えば、MOD(10.5, 3) の計算結果は、環境によっては「1.5」になることがあります。

これは、10.5を3で割ると3.5で、このうち整数の3を除いた0.5に、割る数の3を掛けたものが余りとなるためです。

実数でMOD関数を使う時は、計算結果が思った通りになっているか、確認するようにしましょう。

計算精度

すごく大きな数字とか、すごく小さな数字でMOD関数を使うと、計算の結果が微妙にズレることがあります。特に、小数点を含む数字を扱う場合は、わずかな誤差が出ることがあるんです。

これは、コンピュータで小数点を扱う場合、どうしても表現できる桁数に限界があるため、ごくわずかな誤差が生じることがあるからです。

そのため、非常に大きな数や小さな数でMOD関数を使うと、期待した通りの結果にならないことがあります。

もし正確な計算が必要な場合は、もっと精密な計算ができるツールを使うことを検討してみてください。

ゆうま
ゆうま

MOD関数を安全に、そして正確に使うためには、これらのエラーや注意点を頭に入れておくことが大切です!

もしエラーが出てしまったら、エラーメッセージをよく読んで、ここで説明した解決方法を参考に、原因を見つけて対処してくださいね!

まとめ

まとめ

この記事では、エクセルのMOD関数を使って、割り算の余りを簡単に求め、日々の業務を効率化する方法を解説しました。

手計算によるミスや、複雑な条件分けに頭を悩ませていた方も、MOD関数の活用で、よりスマートに問題を解決できるイメージを持てたのではないでしょうか。

  • 余りを求める基本操作
  • 在庫管理への応用
  • 時間計算での活用
  • データ分析での可能性
  • エラー時の対処法

MOD関数は、一度使い方を覚えれば、日々のデータ処理や分析において、頼もしい味方となってくれるはずです。

ぜひ、この記事で学んだMOD関数の使い方を、今日からあなたの業務に取り入れてみてください。最初は簡単な計算から始め、徐々に応用的な使い方に挑戦していくのがおすすめです。

最後までお読みいただき、ありがとうございました!MOD関数を使いこなして、あなたのエクセルスキルをさらに向上させてください。

「帰宅したら23:00か…」

毎日の残業、本当に仕方ないことなのでしょうか?

「帰宅すると家族は寝てる…」
「冷たくなったご飯を1人で食べて寝るだけ…」
「自分の時間なんて一切ない…」

ガマンし続けたその先に、あなたの望む未来はホントにありますか?

私が経験した驚きの変化

  • 2時間の残業が【完全消滅】
  • 手作業の99%が自動化
  • 出社1時間で仕事がほぼ完了

すべては、ある”気づき”から始まりました

大手企業の管理職として10年。
最初はエクセルの知識ゼロから始めた私。

  • パソコン苦手
  • 機能が多すぎてパニック。
  • 「電源どうやってつけるの?」状態
  • ブラインドタッチどころか指一本で入力
  • 悩んでる時間がムダすぎて残業が月70時間
  • 20時間かけて作った資料が間違いだらけでやり直し

そんな私でも、ある方法に出会い、驚くほどの「ヒマ」を手に入れることができました。

※このページは近日中に非公開となります

著者プロフィール
この記事を書いた人

2024年10月から個人ブログを運営。本業で管理職をやる傍ら、趣味として会社に頼らずに生きるためのスキル磨きをしています。将来の夢は、家族と田舎で半自給自足しながらのんびり生きること。出社後1時間で仕事が終わるエクセルの使い方や、その他個人的なおススメなどを紹介していきます!

ゆうまをフォローする
エクセル関数
シェアする
ゆうまをフォローする
タイトルとURLをコピーしました