商と余り
基本的なことですが
しっかり調べてみるといろいろと知らないことがあるものです。
いままで紹介してきたプロシージャでも
商と余りは利用してきました。
最近の記事ではこのように使いました。
商: Int( i / j )
余り: i - Int( i / j ) * j
除数と被除数が共に0より大きいなら問題ないですが
どちらがマイナスのときInt関数では間違いであることがわかりました。
この式を使うなら、
Fix関数を使わないと
答えがマイナスのときに値が違ってきます。
その理由は
Int関数とFix関数は引数が正の値なら同じ値を返しますが
引数が負の値のとき
Int関数はその値を超えない最大の負の値を返して
Fix関数はその値以上の最小の負の値を返すからです。
VBAヘルプの例をそのまま使いますが具体的には
Int(-8.4) = -9
Fix(-8.4) = -8
-8.4 = -84 / 10 = -8 余り -4
ですから上の式でマイナスも扱うならFix関数が適切です。
まあこんな式を使わなくても
便利な演算子があります。
商: i \ j
余り: i Mod j
Mod演算子は余りを使用するとき使うので知っていましたが、
\の方は恥ずかしながら新発見でした。
使用例のコードはこちら
Sub macro101113a() Dim i As Integer, j As Integer |
商と余りを使って
ある数からある数までの繰り返す数を生成したいと思います。
実際のところ「余り」しか使ってませんが…
0と1の繰り返し、
1から10までの繰り返し、
1から任意の数までの繰り返し、
を生成する3つのプロシージャです。
コードはこちら
Sub macro101113b() Dim i As Integer Sub macro101113c() Dim i As Integer Sub macro101113d() Dim i As Integer, j As Integer |
割り算で忘れてはいけないことは
0で割らないことです。
0で割るともちろんエラーになります。
コピペ関係の原因不明のミスで
値が入っているはずのセルを参照したつもりが
空白のセルの値で割ってしまうことがたまにあります。
割り算を使った式でエラーになったときは
分母をウォッチウィンドウで調べてみてください。
0かもしれません。
| 固定リンク
この記事へのコメントは終了しました。

コメント