No.3ベストアンサー
- 回答日時:
階乗については、
Function Fact(n) as long
Fact = 1
for i = 1 to n
Fact = Fact * i
next i
End Function
で最低限のものは実現できます。 最低限という意味は、エラーが起きたときの対応ができていないということです。
例えば、負の数を引き渡したときは、1が返されます。
また、171以上の数を引き渡すと、オーバーフローしますし、
longの定義上正確に計算できるのは、17までだと思います。
組み合わせについても、
Function Combi(n,r) as long
Combi = Fact(n)/(Fact(r)*Fact(n-r))
End Function
で最低限のものは作れますが、やはりFactの制限に引っかかります。
factというファンクションを使わなければ、
ループを使い
n(n-1)(n-2)(n-3)・・・(n-r+1)/r!
を計算することによって、多少は上限が増えますが、どの時点で正確でなくなるのか、どの時点でオーバーフローするのかなどを検証しておく必要はあります。
それよりも完成度の高いものを目指す場合は、数自体の構造体を自分で作り、それらを演算させるプログラムを組まなくてはいけません。演算する速度は遅くなりますが、VBAで作れないわけではありません。
何にしても、計算の上限値はどこかに設定しておかなくてはいけませんし、上限を越した際のエラー処理の方法を考えておく必要があります。
No.2
- 回答日時:
順列。
組み合わせともに公式に、階乗が現れてきます。階乗は
Sub test01()
n = 1
For i = 1 To 17
n = n * i
Cells(i, "A") = n
Next i
End Sub
のようにすれば計算されますが、エクセルの画面のセルに表示は上記ぐらいが限度です。
ですから用途については、非常に限られています。エクセルは不向きでしょう。
これ以上を考えるなら、数学的アルゴリズムの考察が難しく、この質問振りからでは、そちらの知識のほうが追いつかないのでは。
ーー
質問が漠然としすぎ。
多桁、近似の計算のアルゴリズムなどに習熟しているか
まず後者の習得でしょう。
私は知らないが、理系の研究などでは、既成の専門ソフトを使うのでは。
素人が安易に作ると危ない。
No.1
- 回答日時:
まず大事なのは、階乗・順列・組合せの計算を具体的に記述することです。
それが出来れば、後はその考え方をコードにするだけです。
例:(あくまでも一例)
Public Sub kaijo()
Dim i As Integer
Dim j As Long
j = 1
For i = Cells(1, 1).Value To 1 Step -1
j = j * i
Next i
Cells(1, 2).Value = j
End Sub
これで、A1に入っている数字の階乗の計算結果をB1に表示できます。
見本にもなっていませんが、こういう感じで作っていけばいいかと…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
ちょっと先の未来クイズ第4問
11月ごろに発表される、2024年の「新語・流行語大賞」にノミネートされる言葉を書けるだけ書いてください。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
階乗のマクロ
Visual Basic(VBA)
-
0から12までの値nを入力し、nと階乗n!の値を表示しなさいという問題
Visual Basic(VBA)
-
VB.NETで階乗を求めるプログラムを作成する
Visual Basic(VBA)
-
-
4
2から100までの自然数について素数であるか判定したいです。シートのA列には自然数の値、B列には判定
Excel(エクセル)
-
5
東京都立大学に行かれると恥ずかしいと母親に言われて困ってます。せめて旧帝にでも、と。 放射線技師にな
大学受験
-
6
VBAでの素数の求め方
Visual Basic(VBA)
-
7
ExcelのVBAで再帰処理を使って、1〜10までの整数の和と10の階乗の計算をしたいです。どなたか
Excel(エクセル)
-
8
東京都立大学のレベルって国立、私立にすればどの大学ですか?
大学・短大
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
EXCELなどで「返す」という表現
-
傾いた四角形内の範囲の条件式
-
VBAの再計算が反映されない件に...
-
交通流シミュレータ
-
時間(ミリ秒を含む)の引き算
-
アドオン利率を実質年率に変換
-
パソコン
-
「評価」「評価値」という言葉...
-
VBAで関数をつくる
-
C言語の課題で、1年の秒数を計...
-
C言語について 下の画像は do-w...
-
c言語でsinx=0(0<x<5)をニュー...
-
排他的論理和 BCC(水平パリテ...
-
0xf0=256?
-
素数を自動的に作る
-
窓関数について質問です。
-
for文である数の倍数になるまで...
-
計算量の少ないn乗根の求め方
-
CRC8を教えてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
バッチファイルでウインドウを...
-
Visual C++でdebugとreleaseで...
-
モジュラス103の計算とは何でし...
-
ExcelのマクロVBA動作を軽くす...
-
VBAで関数をつくる
-
CとFORTRANの計算速度はどちら...
-
VBAでの勤務時間計算
-
PHPとJavaでSHA256の結果を同じ...
-
傾いた四角形内の範囲の条件式
-
エクセルで特定のセルのみを任...
-
モジュロ
-
継承元と継承先での変数
-
VBでReplace
-
計算量の少ないn乗根の求め方
-
C++ でファイルを消す関数(??)
おすすめ情報