2017-06-15 607 views
0

下表是一個示例敏感性分析,我希望能夠以更專業的方式進行更新(代碼方式)。我已經能夠錄製一個宏,並修改它有點想知道(我敢肯定),如果有更乾淨的方式來做到這一點。每個%都會影響電子表格中顯示新值的某個部分。我將這兩個新值粘貼到一個表格中(一次一個單元格塊)。敏感性分析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 To 0.1 Step 0.05'和另一個循環如'For y = -0.15 To 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 

這裏我已經擺脫了選擇,複製和粘貼......並且直接說目標範圍的值與您最初複製的值相同。

+0

是的,我不確定我是否解釋得那麼好。基本上,我附加的表格將從空白處開始,然後它需要填充每個變化,-10%和-15%,-10%和-10%等。這些百分比與電子表格中其他可以操縱定價,數量等的區域相關聯(增加10%的銷售額,減少10%等等)。然後,這些情景中的每一個重新計算NPV/IRR。 因此,範圍(c52,c57)在所有這些值之間循環以填充靈敏度表。這有幫助嗎?也許這太難解釋了。 –

+1

只需逐個處理每個部分 - 您可以使用絕對引用來填充範圍,基本上只需編寫一個要拖動以填充的excel公式即可。如果您的表格具有第1行和第A列的百分比,則表格範圍將爲B2:F8。爲了將兩者相乘,VBA代碼應該是:Range(「B2:F8」)。Formula =(「= $ A2 * B $ 1」)試試看看接下來需要做什麼。 – jamheadart