|
G-Luckさん
返信ありがとうございます。
VBAでスクリプトを作動させる必要はなく、仰る通りエクセル関数またはエクセルVBAで同じような計算結果が得られれば、それで問題ありません。
スクリプトの意味とVBAでしたい作業のぐ具体的な内容ですが、要するにスクリプトの内容は「連立合同式の解」の計算で、その計算結果をエクセルのシート上に表示させたいということです。
x≡a(mod m)
x≡b(mod n)
x=K
↑ これが連立合同式です。
式をエクセルのシートに書き込んでおいて、「a b m n」のセルに数字を入力すると「K」のセルに「解」の計算結果が表示されれば問題ありません。
連立合同式における計算結果は基本的にすべて「整数」です。
「解」を得るための計算式がスクリプトの内容なのですが、
「a b m n」の計算を「j」としてその解を「k」に表示させる形式をとっています。
計算式が
j=m1(nk+b-a)
の部分です。
表記しづらいのですが、1/m*(n*k+b-a) が計算式となります。
これを、整数の値がでるまでループして整数値がでたらループから抜ける、という内容です。なぜループするかというと、連立合同式の一般解は、
x≡a(mod m)
x≡b(mod n)
の場合、mとnの最小公倍数+k という形になり、この「k」を解として表示させます。
よって(n*k+b-a)がmで割って「1」余る「k」が得られるまで
(例えば1〜1000までを範囲として)
ループすることになります。
あまり巧くない説明ですみません。
具体的な計算例は以下のようになります。
x≡1(mod 4)
x≡7(mod 11)
x=77+15
77が4 11の最小公倍数でK=+15となります。
これをエクセルまたはエクセルVBAで計算および表示が可能であれば、よろしくお願いします。
|
|