こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルで入力の数値を次々変えてシミュレートできますか

こんばんは
前回は質問の書き方が不明瞭でしたので、書き直します。

3つの数値 x,y,z を与えると、結果がシミュレーションできるエクセルシートがあります。結果も3つ出ますので f(x,y,z), g(x,y,z), h(x,y,z) とします。

x,y,z は B2, D2, F2 に入れるようになっており、f, g, h は、B8, C8, D8 に出るとします。

このとき、x,y,z の組み合わせをたとえば各10通り、合計1000通り代入して、f, g, h を計算させるには、B2, D2, F2に
400 40 1.5
400 50 1.5
420 40 1.5
420 50 1.5

というように次々数値を入力して、結果f, g, h(B8, C8, D8)を別の欄に記録していけば良い訳ですが、これを1000回繰り返すのは面倒です。

シナリオという機能があると伺い、これが希望のものに近いのですが、
http://www.rericca.com/qa/ex12.html
1000回もシナリオを作るのでは入力の手間が大変です。

そこで次のようにできないでしょうか。
x, y, z の数値の組合せ(400 40 1.5 等々)を次々変えて J,K,L 列の 1から1000行に書いておくと、それらを 順次 B2, D2, F2 に代入し、ある行の組み合わせに対する答え f, g, h が同じ行の M,N,O列に出る、それを 1 から 1000行まで繰り返す、というようなことが可能でしょうか。(出力形式は例として考えたので、この形にはこだわりません)。

f, g, h が 関数として簡単に書ければ、プログラム言語でループをさせればいいのですが、このエクセルは以前の人が作ったもので途中で大変面倒な計算をしており、とても移植できません。(上記の話は説明のために簡単化してあります)。

こういう手段があればとてもありがたいのです。よろしくお願いします。

投稿日時 - 2007-01-27 21:22:34

QNo.2701273

困ってます

質問者が選んだベストアンサー

別のシートに入力値を並べておく。

入力値0001を対象のシートの入力にコピー。
再計算を実施させる。
計算結果を別シートの出力にコピー。
入力値0001~1000まで繰り返す。

とかでしょうか。

VBAで自動化できると思います。
マクロの記録で2~3回の手順をマクロを記録すると、どう繰り返せば良いのか見えるかも。

投稿日時 - 2007-01-27 22:45:51

お礼

お答えを拝見して、3つのパラメータの左に1-1000までの数をつけ、VLOOKUP で表を引かせて3つのパラメータを与えれば、1-1000 を与えるだけで答えが出ることを思いつきました。

そこで、1,2,3,... を A2 に与えれば D2:F2 に答えが出るようにし、それを順次 M1:O1, M2:O2 へコピーしていくという手順を考え、マクロを記録してみました。

そしてこれをとりあえず 1-20 までの値でループさせるというのを次のようにやってみたら、成功しました!

どうもありがとうございました。

Sub Macro2()
'
' Macro2 Macro
' Keyboard Shortcut: Ctrl+g
'
For i = 1 To 20
Range("A2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = i
Range("D2:F2").Select
Selection.Copy
Range(Cells(i, 13), Cells(i, 15)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
End Sub

投稿日時 - 2007-01-28 00:05:49

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

f, g, h の式を直接M,N,O列に書けば出来ると思います。

投稿日時 - 2007-01-27 23:01:49

お礼

ありがとうございました。
ちょっと関数ではすぐにはかけないものなのです。
でも解決しました!

投稿日時 - 2007-01-28 00:06:32

あなたにオススメの質問