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

このQ&Aのポイント
  • エクセルで入力の数値を変えてシミュレートする方法を教えてください。
  • エクセルを使用して、数値の組み合わせを変えてシミュレーションを行いたいです。
  • エクセルのシナリオ機能や関数を使用せずに、数値を変えてシミュレーションする方法を教えてください。
回答を見る
  • ベストアンサー

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

こんばんは 前回は質問の書き方が不明瞭でしたので、書き直します。 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 が 関数として簡単に書ければ、プログラム言語でループをさせればいいのですが、このエクセルは以前の人が作ったもので途中で大変面倒な計算をしており、とても移植できません。(上記の話は説明のために簡単化してあります)。 こういう手段があればとてもありがたいのです。よろしくお願いします。

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

  • ベストアンサー
  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

別のシートに入力値を並べておく。 入力値0001を対象のシートの入力にコピー。 再計算を実施させる。 計算結果を別シートの出力にコピー。 入力値0001~1000まで繰り返す。 とかでしょうか。 VBAで自動化できると思います。 マクロの記録で2~3回の手順をマクロを記録すると、どう繰り返せば良いのか見えるかも。

kankororin
質問者

お礼

お答えを拝見して、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

その他の回答 (1)

  • uro_tan
  • ベストアンサー率15% (6/40)
回答No.2

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

kankororin
質問者

お礼

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

関連するQ&A

  • エクセルのマクロ記述について

    下記の処理をエクセルのマクロで行いたいのですが、どのように記述したよいか教えてください。 4行目から入力されている行まで下記の処理をマクロで行う。 1.J列のセル入力がCIRCLEの行で、B~E列の数値が同じセル間を結合する。 2.K列のセル入力がCIRCLEの行で、F~I列の数値が同じセル間を結合する。 3.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じ場合、B列をB列の数値XC列の数値とし、B~E列のセルを結合する。 4.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じ場合、F列をF列の数値XG列の数値とし、F~I列のセルを結合する。 5.J列のセル入力がOBLONG_XまたはOBLONG_Yの行で、B,D列及びC,E列の数値が同じでない場合、B列をB列の数値XC列の数値とし、B,C列のセルを結合する。又、D列をD列の数値XE列の数値とし、D,E列のセルを結合する。 6.K列のセル入力がOBLONG_XまたはOBLONG_Yの行で、F,G列及びH,I列の数値が同じでない場合、F列をF列の数値XG列の数値とし、F,G列のセルを結合する。又、H列をH列の数値XI列の数値とし、H,I列のセルを結合する。 7.J列のセル入力がSHAPEの行で、B~E列は何もしない 8.K列のセル入力がSHAPEの行で、F~I列は何もしない

  • 恒等式における数値代入法について

    高校数学IIの教科書には、 「f(x)、g(x)がxのn次以下の多項式であるとき、 等式f(x)=g(x)がn+1個の異なるxの値に対して成り立つならば、 この等式はxについての恒等式であることが知られている」 と書いてあります。 これについての証明は教科書に書いてありませんが、事実として は教科書に明記されているのでこのことを使っても構いません。 つまり、「f(x)、g(x)がxのn次以下の多項式であるとき、 数値代入法で、n+1個のxの値を代入して答えが出たときは 十分性の確認は不要」であり、 「f(x)、g(x)がxのn次の多項式であるとき、 数値代入法で、n個以下のxの値を代入して答えが出たときは 十分性の確認は必要」と言うことです。 では、f(x,y,z…)、g(x,y,z…)がx、y、z…のn次以下の多項式である とき、等式f(x,y,z…)=g(x,y,z…)が一体何個の異なるx、y、z…の値 に対して成り立つならば、この等式はx、y、z…についての恒等式 であることが知られているのでしょうか? たとえば、「2x^2+axy-3y^2+x+4y-1=(2x+y+b)(x-3y+c) がx,yの恒等式になるように,定数a,b,cの値を定めよ.」 という問題の場合、数値代入法で解くと、 2x^2+axy-3y^2+x+4y-1=(2x+y+b)(x-3y+c)………(1)とする.  (1)にx=0,y=0を代入すると,-1=bc………(2)  (1)にx=0,y=1を代入すると,0=(1+b)(-3+c)………(3)  (1)にx=1,y=1を代入すると,a+3=(3+b)(-2+c)………(4)  (3)から,b=-1またはc=3 i).b=-1のとき,(2)から,c=1   (4)に代入すると,a+3=-2   ∴a=-5   このとき,(1)は    2x^2+5xy-3y^2+x+4y-1=(2x+y-1)(x-3y+1) となり, 常に成立する. ii).c=3のとき,(2)から,b=-1/3   (4)に代入すると,a+3=3-(1/3)   ∴a=-1/3   このとき,(1)は    2x^2-xy/3-3y^2+x+4y-1=(2x+y-1/3)(x-3y+3)   =2x^2-5xy-3y^2+17x/3+4y-1  となり,これはx,yの恒等式ではない. i).,ii).から,答はa=-5,b=-1,c=1である. となります。この場合、f(x,y)、g(x,y)はx、yの「2」次の多項式 ですが、「2+1」個のx,yを代入しても十分性の確認は 必要でした。

  • エクセルの数値選択で

       A   B   C   D --------------------------- 1  100   500  1000  5000    … 2   3     4     5     6     … 3   5     3     5     7     … 4   2     3     4     5     … 5   4     5     2     7     … の表があったとします。 X1のセルに数値を入力すると、その数値が100未満ならX2に3~X5に4を代入、100<=X1<500ならX2に4~X5に5を代入するなど、複数の列に対し1行目の数値を判定し2行目以下の数値を指定のセルに代入したいと思います。 4以上の複数列に対しては、どのような式を使えばいいのでしょうか。IF式を使ったのですがうまくいきません。 どなたかご教示ください。

  • エクセルVBAの入力について

    "Sheet1"のA1、C1、F1、G1の値(計算結果のみ)すべてコピーして、 貼り付ける場所が"Sheet2"のA1:Z10の範囲内で、 A1はB列、C1はG列、F1はH列、G1はZ列の空白セルに上詰めで貼り付ける。 なおF、G、H、Z列以外の列には値が入力されていたり空白もあります。 また同時に、 "Sheet1"のA1、C1、F1、G1の値(計算結果のみ)の内でA1とF1のみコピーして、 貼り付ける場所が"Sheet3"のC1:Y10の範囲とC13:Y23範囲内で、 A1はC列、F1はY列の空白セルに上詰めで貼り付ける。 なおC、Y列以外の列には値が入力されていたり空白もあります。 またC11:Y12の範囲内にはすべて値が入力されています。 よろしくお願いします。

  • Excelについての質問です。

    エクセルについての質問なのですが、 A列の数値だけをB列から選び出して、そこから更に選び出したBと同じ行にあるCをDに代入したいのですが、どのようにすればよいでしょうか?    A   B   C   D 1  0.1  0.1  5 2  0.5  0.3  10 3  1.2  0.4  20 4  2.3  0.5  40 5  3.7  0.7  80 6  4.7  1.0  160 7  5.9  1.2  320 わかりにくい表ですが、この場合 A1の「0.1」、B列で「0.1」といえばB1になります。それをBと同じ行のC1の数値「5」をD1に代入。 A2の「0.5」、B列で「0.5」といえばB4になります。それをBと同じ行のC4の数値「40」をD2に代入。 A3の「1.2」、B列で「1.2」といえばB7になります。それをBと同じ行のC7の数値「320」をD3に代入。    D 1  5 2  40 3  320 4  ・ 5  ・ 6  ・ という結果にしたいのですが・・・。 これは可能なのでしょうか? わかりづらい質問ですが、宜しくお願いします。

  • Excelの2個の条件に合致した数値を入力

    B.xlsのA列とA.xlsのB列、B.xlsのC列とA.xlsのD列の行がマッチしたらA.xlsのF列、H列の数値をB.xlsのD,E列に添付の下図のように数値を入力したいのですがVBAコードが解る方宜しくお願いします。(同じく関数の方もわかればお願いします)

  • 《急》Excelで数値の抽出方法を教えてください

    ExcelでA B C D という数値列があり、A(不連続)で得た結果がC,B(不連続)で得た結果がDとした場合、AおよびBがグラフでいうx軸に当たり、CおよびDがy軸に当たります。A列とB列の数字が同じときの結果(CとD)を別の列に表示するというものです。すなわち、x軸を同じにして不連続な数値y軸(C、D)のグラフを書きたいと考えています。適当な関数があればご教授いただけると幸いです。ぜひよろしくお願いいたします。 画像添付します。このように数値を抽出したいと考えています。

  • excelの式を教えてください

    Aの列にXの座標数値があります Bの列にYの座標数値があります Cの列にZ(標高)の数値があります。 Zの数値の高さが0~100まであったとして Z値が(例えば)45以上の数値だけの行を残す場合 46以下の数値の行だけを残す場合の関数を教えてください 宜しくお願い致します。

  • エクセルで数値と文字が入ったセルからの数値の抽出

    皆さんこんにちは。 エクセルの使い方についての質問です。 添付画像の例のようにA列に 「XXYYYZZ(XとZは文字、Yは数値で3桁または4桁)」というフォーマットで 数値と文字が入っているセルがあります。 同様にB列には「WWZ(Wは数値)」というフォーマットで、 同様に数値と文字が入っているセルが並んでいます。 これらからDやE列にあるように数値のみを取り出すためには DやE列にどのような関数を入れてやればよいのでしょうか。 どなたか教えていただければ幸いです。 よろしくお願いします。

  • (エクセル)数値だけ合計したい

    複数のセルに入力されている数値だけを抽出し、合計したいと思います。   A     B    C    D    E    F    G 1 合計金額 金額1  金額1理由 金額2  金額2理由 金額3  金額3理由 2      1000円   菓子  3 1500円  1000円   菓子   500円   飲料 4 1520円  1000円   菓子   500円   飲料   20円   消費税 以上のようにA列に合計金額を計算させる数式を考えています。 (ルール) ・B列とC列、D列とE列、F列とG列はセットです。例えば、B列には入力されているが、C列は空白ということはない ・B列とC列→D列とE列→F列とG列の順に入力されていく ・2行目、3行目のように、常に金額が3つとも入力されているとは限らない ・金額が入力されているB列、D列、F列には、「○○円」と「円」も一緒に入力されている (やりたいこと) A列に合計金額を反映させないのですが、以下のように規制したいです (1)2行目のように、金額が1つだけの場合(B列とC列しか入力されていない場合)は、合計金額は空白セルにする (2)3行目、4行目のように、金額が2つ以上の場合(D列とE列や、F列とG列にも入力されている場合)は、合計金額を反映させる (3)合計金額は「○○円」と「円」も一緒に反映させる (考えたこと) B列の金額とB列+D列+F列の合計を比較し、同じならA列は空白、違う場合はB列+D列+F列の合計をA列に反映させるようIF関数を使えばいいのではないか、と考えました。 そこで、まずB列+D列+F列の合計を出す関数を作ってみたのですが、うまくいきませんでした。 =SUM(SUBSTITUTE(B2,"円","")*1,SUBSTITUTE(D2,"円","")*1,SUBSTITUTE(F2,"円","")*1) とすると、金額が3つとも入力されていればいいですが、一つでも空白セルがあると、#VALUE!とエラーになってしまいます。 SUMPRODUCTを使用してできるかと思いましたが、同じ結果でした。 どうすれば、思っているようになるのでしょうか。 ご存知の方がいましたら教えてください。 よろしくお願いします。

専門家に質問してみよう