18日目 分数の足し算【30日間1日1本マクロ生活】
30日間1日1本マクロ生活、18日目です。
マクロを書く準備は、0日目に記事を書きました。
分数の足し算
昨日に続いて分数です。
分数の足し算って、小学生にはハードルが高いと思うんです。マジで。
分母を揃える、いわゆる「通分」をして、分子を足し算して、最後に約分。
そりゃ、小学生では理解できない子もいますよ。だって、高度だもん。
通分
で、通分ですが、おそらく小学校では
って習ったんじゃないかと思うんです。
でもね。分数の定義、ルールの中には「最小公倍数で通分しなければならない」とは一言も書かれてないんですよ。
分母が揃いさえすれば、どんなに大きな数で通分しても全く問題ないんです。
分数の和の定義は
となっています。通分する分母は、分母同士の積です。
今日はこれでコードを書きます。
さっそくコードを
まずは昨日のgcd関数を。
Function gcd(m, n)
If m >= n Then
a = m
b = n
Else
a = n
b = m
End If
Do Until b < 1
r = a Mod b
a = b
b = r
Loop
gcd = a
End Function
そして、分数の足し算をするマクロです。
Sub bunwa()
shia = Cells(1, 1)
boa = Cells(2, 1)
shib = Cells(1, 3)
bob = Cells(2, 3)
shi = shia * bob + shib * boa
bo = boa * bob
yaku = gcd(shi, bo)
Cells(4, 1) = shi / yaku
Cells(5, 1) = bo / yaku
End Sub
解説します。
これも、やっていることは単純です。
変数shiaには、セルA1に入っている数を格納します。
変数boaには、セルA2に入っている数を格納します。
変数shibには、セルC1に入っている数を格納します。
変数bobには、セルC2に入っている数を格納します。
それぞれ、分子、分母という設定です。
上の約束通り、分度同士の積を変数boに、分母と分子のたすき掛けの和を変数shiに代入します。
あとは、昨日の約分のマクロと同じ仕組みで約分します。
実行結果
マクロを記述するウィンドウの「Sub」と「End Sub」の間にカーソルを置いて、画面上方の再生ボタン的なアイコン(右向きの三角形)をクリックするか、[F5]キーを押して実行します。
はい、確かに足し算がなされました。
分数の足し算は、小学生には複雑な計算です。
でも、機械に教えればできるんです。人間様ができないはずがない。
機械的な操作で分数の足し算はできるんです。
Excelは便利
悔しいですが、Excelは便利です。
Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。
マクロを書くようになると、Excelからは離れられないですね。
30日間、頑張ります。