わたしの日常に価値はありますか?

17日目 約分しよう【30日間1日1本マクロ生活】

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

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

マクロを書く準備早速マクロを書こうと思ったんですが、マクロって何?食えんの?って人もいると思うんで、丁寧に行こうかな、と。マクロってのは、通常は人間の手でやるような作業を、プログラムを書くことで機械に自動的にやらせるってことです。Excelの場合はVBA(Visual Basic for Application)という言語を使ってマクロを書きます。まずはその準備を。Excelを起動すると、ワークシートが現れます。ここでキーボードの「ALT+」を押してください。はキーボードの上方にあるファンクションキーの11番です。すると、このウィンドウが開...
0日目 マクロを書く準備をしよう【30日間1日1本マクロ生活】 - わたしの日常に価値はありますか?

約分

分数の計算って、小学校で習う算数の結構大きな壁だったりしませんでしたか?

分数って、結構高度なんですよ。小学校の先生がみんな分数の仕組みを本当に理解して教えているとはとても思えないです。

今日はそんな分数の「約分」についてやっていきます。

約分って、要は昨日やった「最大公約数」で分母と分子を割るってことですよね。

ですから、昨日作ったgcd関数を使って、「gcd(分子,分母)」で約分できる数を求めてしまえば、あとは割るだけ。

今日は簡単に終わりそうですね。

さっそくコードを

まずは昨日のgcd関数を。


Function gcd(m, n)
    If m >= n Then
        a = m
        b = n
    Else
        a = n
        b = m
    End If
    
    Do Until b 

そして、約分をするマクロです。


Sub yakubun()
    shi = Cells(1, 1)
    bo = Cells(2, 1)
    
    yaku = gcd(shi, bo)
    
    Cells(1, 3) = shi / yaku
    Cells(2, 3) = bo / yaku
End Sub

解説します。

やっていることは単純です。

変数shiには、セルA1に入っている数を格納します。

変数boには、セルA2に入っている数を格納します。

それぞれ、分子、分母という設定です。

変数yakuに最大公約数を格納し、C1とC2に分子と分母をyakuで割った数をそれぞれ書き込みます。

約分って、これだけのことなんですよね。つまり、最大公約数が求められれば、割るだけなんです。

実行結果

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

はい、確かに約分されました。

Excelは便利

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

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

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

30日間、頑張ります。

モバイルバージョンを終了