MOD関数は使い方次第では非常にパワフルです。先週の『MOD関数を使って「曜日」を特定する超絶テクニック』では、エクセルの日付設計の特徴を利用し、「割り算の余り」を返す「MOD関数」を使って「曜日を数値的に特定する手法」を取り上げました。そして、このMOD関数、意外と強力な使い方がほかにもいくつかあります。本稿は『エク達』というウェブサイトからの転載コンテンツです。
エク達は、「エクセル評論家」でもある新宿会計士が、エクセルなどの「オフィス系の汎用ソフト」を使い、誰でも気軽に、かつ安価に、とても迅速かつ正確に仕事をこなす、ビジネスマンとしての基本テクニックを研究するサイトである。 |
MOD関数の威力
『MOD関数を使って「曜日」を特定する超絶テクニック』では、エクセルの日付設計の特徴を利用し、「割り算の余り」を返す「MOD関数」を使って「曜日を数値的に特定する手法」を取り上げた。
本稿は、著者自身がかつて運営していたウェブサイト『エクセルの達人(エク達)』に掲載された記事を転載するものです。ただし、記事冒頭で、現時点で当ウェブサイトへの転載が終わっていない記事を引用している記述があったため、転載にあたっては記事を一部修正しています。エク達は、「エクセル評論家」でもある新宿会計士が、エクセルなどの「オフィス系の汎用ソフト」を使い、誰でも気軽に、かつ安価に、とても迅速かつ正確に仕事をこなす、ビジネスマンとしての基本テクニックを研究するサイトである。日付をさまざまな書式に変... MOD関数を使って「曜日」を特定する超絶テクニック - 新宿会計士の政治経済評論 |
この「MOD関数」、エクセルの基本的な教科書でさほど多く出てくる関数ではないが、実務上は大変に「使える」関数でもある。というのも、「一定周期で現れる数列、文字列など」を出現させるのに、うまく活用できるからだ。
改めて説明すると、「MOD関数」の書式は、次のとおりである。
MOD(数値,除数)
これは、「数値」を「除数」で割った余りを返す関数であり、たとえば、「数値」に「9」、「除数」に「7」を指定してやると、答えは「2」である(図表1)。
図表1 MOD関数の実例
なお、この場合、「数値」が「9」以外であっても、たとえば「16」「23」「30」など、7つごとに「余り」が「2」になる数値が出現する。この特徴を使い、「エクセルのシリアル値を7で割った余り」で曜日を判定する、というのが、『MOD関数を使って「曜日」を特定する超絶テクニック』でいう「超絶テクニック」だった。
- 0…土曜日
- 1…日曜日
- 2…月曜日
- 3…火曜日
- 4…水曜日
- 5…木曜日
- 6…金曜日
※なお、似た関数に「WEEKDAY関数」なるものもあるが、こちらのMOD関数の方が、入力に際しての文字数も少なく、扱いやすいため、オススメである。
アルファベット文字列を繰り返す
このMOD関数、強力な使い方はこれだけではない。次に紹介したいのが、「アルファベット文字列を繰り返す」という使い方だ。
サンプルシートを準備しよう(図表2)。
図表2 サンプルシート
サンプルシートのA2セル、B2セルには、各々次のような数式が入力されている。
- 【A2セル】=ROW()-1
- 【B2セル】=MOD(A2-1,26)+65
これは、こういう意味だ。
「A2セルの値から1を引いたものを26で割った余りに65を足せ」。
いったい、これにどういう意味があるのか。
これは、同じシートに表示されている、実際の計算結果を見ていただく方が早いだろう。
図表2のB2セルの値は「65」と表示されているはずだ。そして、順次、「B3」セルが「66」、「B4」セルが「67」という具合に、ひとつずつ値が増えて行く。この数式を続けていくと、「B27」セルで数値が「90」にまで増え、次の「B28」セルで「65」に戻っていることが確認できるだろう。
では、この「65」、いったいどういう意味があるのか。
さきほどの図表2で作ったサンプルシートのC2セルに、さらにこんな計算式を入力し、それをC3以下のセルにコピーしてみよう。
=CHAR(B2)
これは「CHAR関数」と呼ばれ、使用しているマシンの文字セットのコード番号に対応する文字を返す関数だ。具体的には「C2」セルに「A」という文字が出現し、以下、順次「B」「C」「D」…、が表示されるのが確認できるだろう(図表3)。
図表3 CHAR関数の入力結果
ポイントは、27行目の「Z」の次は、28行目で再び「A」が出てくることだ。そのカギはもちろん、MOD関数でアルファベットの数である「26」を使用していることにある。
エクセルの列名称と列数の対応表も簡単!
さらに、「D28」「E28」「F28」セルに各々次の計算式を入れ、以下のセルにコピー&ペーストしてみよう。
- 【D28セル】=TRUNC((ROW()-2)/26)+64
- 【E28セル】=CHAR(E28)
- 【F28セル】=E28&C28
すると、今度はこんなシートが出来上がる(図表4)。
図表4 完成形
F列(図表5の赤枠で囲った部分)は、じつは、エクセルのシートの列番号でもある。
エクセルのシートは、列は「A列」、「B列」、…、という具合に、アルファベットで表示されている(※もちろん、変更する方法はある)。そして、列が「Z列」までいくと、その次は(なぜか)「AA列」になるのだ。
すなわち、このシートは、エクセルの列数と列名称の対応表になっていて、INDIRECT関数などと組み合わせて使ううえで、じつは、大変便利なシートでもあるのだ。
是非、ご活用いただきたい。
エク達は、「エクセル評論家」でもある新宿会計士が、エクセルなどの「オフィス系の汎用ソフト」を使い、誰でも気軽に、かつ安価に、とても迅速かつ正確に仕事をこなす、ビジネスマンとしての基本テクニックを研究するサイトである。 |