11日目 6で割って1余る数と5余る数をチェックしよう【30日間1日1本マクロ生活】

30日間1日1本マクロ生活、11日目です。

6で割って1余る数、5余る数

マクロを書く準備は、0日目に記事を書きました。

今日は、割り算の余りを考えます。

6で割って1余る数と5余る数をチェックします。

1列目に1から10000までの乱数を100個並べ、それらが6で割って1余る場合と5余る場合、2列目にその数の平方根以下の最大の整数を書きます。

さっそくコードを


Sub 六で割って余りが一か五()
    y = 1
    Do Until Cells(y, 1) = ""
        n = Cells(y, 1)
        If n Mod 6 = 1 Or n Mod 6 = 5 Then
            Cells(y, 2) = Int(n ^ 0.5)
        End If
        y = y + 1
    Loop
End Sub

では、解説します。

Or

5行目のIfの条件に「Or」というのがあります。

これは、「A Or B」で「AまたはBが正しい場合」という意味になります。どちらかが正しければ、Then以下を実行するということです。

似たようなものに「And」があります。

こちらは、「A And B」で「AとBが両方とも正しい場合」という意味です。

Int

6行目の「Int」はカッコ内の数の整数部分を返す関数です。

ついでに「^」はべき乗を表します。「^2」で2乗、「^5」で5乗です。

この場合は「^0.5」ですから2分の1乗。つまり平方根を計算します。

実行結果

マクロを記述するウィンドウの「Sub」と「End Sub」の間にカーソルを置いて、画面上方の再生ボタン的なアイコン(右向きの三角形)をクリックするか、[F5]キーを押します。

このように、5で割って1余る数、5余る数の隣に、その数の平方根以下の最大の整数が表示されました。

一番下はこんな感じですね。きちんと最後まで処理されています。

なんのために?

この処理、何のためにやったんでしょうね。

6で割って1余る数と5余る数?

平方根以下の最大の整数?

この時点では何の役にも立ちません。でも、このお話には続きがあります。

数学をかじっている方なら、この先に何があるのかお分かりですね。

Excelは便利

悔しいですが、Excelは便利です。

Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。

マクロを書くようになると、Excelからは離れられないですね。

30日間、頑張ります。