Excel用、長桁数演算マクロ
ダウンロード
Ver 0.02ダウンロード Ver 0.03b
ダウンロード Ver 0.03
ダウンロード
Ver 0.03c
このプログラムは、以前 Nifty のフォーラムに登録していたのですが、最近になって問い合わせがあったので需要があるのかと思い一般公開することにしました。
●はじめに
このマクロは、桁数の多い計算を行うためのものです。
理論上、メモリーの許すかぎり計算できるはずですが、計算時間は相応に遅くなります。(非常に遅いです)
たんに、手計算のアルゴリズムをプログラム化しただけでなんの最適化もしていません。
●動作環境
Excel 2000で動作を確認しています。
Excel 2002(Office XP)でも動作報告がありました。
マクロを有効にして開いてください。
●拡張される関数
以下の、演算関数が拡張されます。
=ExAdd(a,b) ------>加算
=ExSub(a,b) ------>減算
=ExMul(a,b) ------>乗算
=ExDiv(a,b,c) ---->除算
=ExSqrt(a,c) ----->平方根(時間がかかるので桁数を増やしすぎないでください)
=ExPi(c) --------->円周率
a,bは、引数です。Excelでは桁数の多い数値は入力できない為、この関数では引数を文字列で入力します、返り値も文字列になります。
数値で入力した場合も文字変換されて計算されますが、有効桁数が大きい場合は丸め処理により誤差が生じます。cは、除算・平方根・円周率で小数点以下の桁を何桁まで計算するかの指定です。
割り切れる場合は、この指定にかかわらずその桁までの結果になります。
最後の桁は四捨五入ではなくて切り捨てです。円周率は、内部で1000桁の定数で持っているためそれ以上の桁は出力出来ません。
●おまけ関数
単純なループ等の組み合わせで作った関数です。
=ExFact(a) ------>階乗(時間がかかるので200迄の制限つき)
●注意点
このマクロは、プログラムのデバッグ用にVBで作成したものをマクロに移植ました。誠に無責任ながら計算結果は保証しかねます。
一応、確認できる範囲で正しく計算できることはチェックしていますが、このような計算ができるものが無いから作ったものでして検算のしようがありません。(^^);
計算ミスなどを発見した場合、連絡いただければ可能な限り修正します。
プログラムを見られると恥ずかしいので、パスワードを設定していますが、ソースが必要な方はメールで連絡いただければ開示いたします。ループに入って操作出来なくなった場合、[Ctrl]+[Break] ボタンで計算を中断出来ます。
これを使うと、こんな演算が出来ます。
(2002/5/24). 作成
(2002/5/27). Ver 0.02. 円周率追加、平方根の桁指定法変更、除算の計算桁数のバグ修正。
(2002/5/28). Ver 0.03. 平方根の演算ロジックを変更し高速化。(JUNKさんありがとうございます)
(2002/5/28). Ver 0.03b. 平方根の演算ルーチンの一部修正、除算ルーチンのバグ修正、その他のバグ修正。
(2002/6/8). Ver 0.03c. 減算関数の符号処理の修正。