凡人も語りたい

VBAに関すことや日々考えている事柄について投稿しようと思っています。

VBA 商の求め方 まとめ

どうも、こんぺです。

今回、割り算(除算)の「商」の求め方についてメモ程度ですがまとめます。

特にVBA上で日付を取り扱ううえで「商と余り」は頻繁に使う内容で、こちらで紹介したかったのですが、地味にボリュームができてしまい別記事にしました。

日付の扱いについては後日まとめたいと思っています。

割り算(除算)の計算結果取得の手法

VBAでロジックを構成するうえで

  • 割り返した時の整数部分を取得した
  • 割り返した時の少数部分を取得した
  • 余りを取得したい

ということはよくあると思います。

余りは

  • mod関数

を利用することが一般的だと思われますが、商を求める方法はいろいろバリエーションがあるようです。
ネットで調べると

  • INT関数
  • FIX関数

がよくヒットします。が、関数を使わなくても算術演算子「¥マーク(\記号)」で解決しなかったっけ?と思い比較しました。

テストコードと結果

Sub test()
    Dim num(6) As Double
    num(0) = 10 / 3
    num(1) = Int(10 / 3)
    num(2) = Int(-10 / 3)
    num(3) = Fix(10 / 3)
    num(4) = Fix(-10 / 3)
    num(5) = 10 \ 3
    num(6) = -10 \ 3
    
    Debug.Print num(0)
    Dim i As Long
    For i = 1 To 3
        Debug.Print num(i * 2 - 1), num(i * 2)
    Next
End Sub
VBA_割り算_整数値_商_INT_FIX
テスト結果

無事、Fix関数と\記号の計算結果が一致。
個人的には\記号で商を求めるのがスマートなのかな…と思っていますが、
Fix関数についてあまり詳しくなくため「\記号がふさわしくない場面」がもしかしたらあるかもしれません。
そのようなパターンがあれば、ぜひ教えて頂きたいですm(_ _)m