| 
    
     |  | 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で計算および表示が可能であれば、よろしくお願いします。
 
 |  |