2017-06-15 8 views
0

以下の表は感度分析の例です。より専門的な方法で(コード通りに)更新できるようにしたいと考えています。私はマクロを記録することができましたし、これを行うためのよりクリーンな方法がある場合、ちょっと考えていました(私が確信しているように)。 %のそれぞれは、新しい値を示すスプレッドシートの特定の部分に影響します。私はこれら2つの新しい値をテーブルに貼り付けます(一度に1つのセルブロック)。感度分析Excelマクロ

以下の例では、2つの修正セルを-10%/ -15%に設定し、新しい値(NPV/IRR)をセルブロックにコピーします。続いて、%のリストに進み、ハードコードされた値を貼り付けます。設定された範囲内でループする方法があるかどうか疑問に思っていました(感度%の変更の場合)。

Range("C52").Value = "-10%" 
    Range("C57").Value = "-15%" 
     Range("E54:E55").Select 
      Selection.Copy 
      Range("L48").Select 
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False 

Sensitivity Analysis

+0

For x = -0.1〜0.1 Step 0.05のようなループと、For y = -0.15〜0.15 Step 0.05のようなループをしようとしていますか? – YowE3K

+0

ああ - はい!それでおしまい。私はこれを行うためにループを行う必要があります。 –

答えて

0

いくつかのループを使用することにより、あなたはテーブル全体を読み込むことができるようになりますが:

Sub test() 
    Dim x As Long 
    Dim y As Long 

    'Loop across each column 
    For x = 0 To 4 
     'Use a value which is 5% higher each time, starting from -10% 
     Range("C52").Value = x * 0.05 - 0.1 
     'or possibly 
     'Range("C52").Value = Cells(47, 12 + x).Value 

     'Within each column, loop across each row 
     For y = 0 To 6 
      'Use a value which is 5% higher each time, starting from -15% 
      Range("C57").Value = y * 0.05 - 0.15 
      'or possibly 
      'Range("C57").Value = Cells(49 + 2 * y, "K").Value 

      'Place the calculated values into the appropriate spots in the table 
      Cells(48 + 2 * y, 12 + 1 * x).Value = Range("E54").Value 
      Cells(49 + 2 * y, 12 + 1 * x).Value = Range("E55").Value 

     'Repeat for next row in this column 
     Next 

    'Repeat for next column 
    Next 

End Sub 

注:私は計算に基づいてテーブルを取り込む(Excelはこの種のものを行うには、組み込みの機能を持っていると思います他の場所で演奏されていた)が、私はそれを使ったことはないと思う。

0

私はあなたが何を意味するか、完全に明確ではないですか、あなたは何をしようとしてしかし、スタートとして、あなたは、多少自分のコードを最適化できます。

Range("C52").Value = "-10%" 
Range("C57").Value = "-15%" 
Range("L48:L49").Value = Range("E54:E55").Value 

ここでI」選択、コピー、貼り付けを取り除きました...そして、あなたが元々コピーしていたものと同じ目標範囲の値を直接言っただけです。

+0

さて、私はそれをうまく説明したかどうかはわかりませんでした。基本的に、私が付けたテーブルは空白で始まり、各バリエーションごとに-10%と-15%、-10%と-10%というように入力する必要があります。これらのパーセンテージは、価格表、量などを操作するスプレッドシート内の他の領域にリンクしています(売上を10%増やし、10%減るなど)。次に、これらのシナリオのそれぞれがNPV/IRRを再計算します。 したがって、範囲(c52、c57)はすべての値の間を循環して、機密性表に移入します。それは役に立ちますか?たぶんこれは説明するのが難しいかもしれません。 –

+1

ちょうど各部分に1つずつ取り組んでください - あなたは絶対参照を使用して範囲を埋めることができます。上記のテーブルの行1と列Aのパーセンテージがある場合、テーブル範囲はB2:F8になります。式(= "$ A2 * B $ 1")これを試して、次に何をする必要があるかを見てください。 – jamheadart