| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 oppear 于 2020-10-10 16:54 编辑  
 
用Excel做了一个收益率评估模型,想再写一个敏感性分析的表,但是表格第一行算的没问题,从第二行开始之后,只有变量显示对了,其他两个因变量都保持不变,请各位大佬帮我康康 
 
Sub plus() 
    a = Sheet1.Cells(5, 3)  '定义a=单位千瓦造价 
    b = Sheet1.Cells(23, 12) '定义b=自有资金收益率 
    c = Sheet1.Cells(7, 3) '定义c=小时数 
    d = Sheet1.Cells(5, 3) '记录原始单位千瓦造价 
     
    k = 2 
    n = 2 
    Z = 2 
     
    Sheet1.Cells(1, 24) = "小时数" 
    Sheet1.Cells(1, 25) = "千瓦造价(静态)" 
    Sheet1.Cells(1, 26) = "自有资金内部收益率(税后)" 
     
    inc_zaojia = Sheet1.Cells(1, 18) '定义inc=造价增加量 
    Max_zaojia = Sheet1.Cells(2, 18) '定义MAX=目标收益 
    inc_xiaoshishu = Sheet1.Cells(3, 18) '定义ina=小时数增加量 
    Max_xiaoshishu = Sheet1.Cells(4, 18) '定义小时数区间上限 
 
     
    ActiveWorkbook.RefreshAll '刷新表格 
    While (c <= Max_xiaoshishu) 
        If (b < Max_zaojia) Then   '如果当前收益率<目标收益率,那么小时数不变的时候,增加造价会使收益率变低,因此造价应使其自减 
            While (Abs(Max_zaojia - b) > 0.0005) '循环开始,判断(目标收益率和计算收益率之间的绝对差值)是否小于(目标收益率与计算收益率之间的最大差值) 
                    a = a - inc_zaojia '造价减少 
                    Sheet1.Cells(5, 3) = a '将新增造价赋予表格 
                    ActiveWorkbook.RefreshAll '刷新表格 
                    b = Sheet1.Cells(23, 12) '新的收益率计算值赋予b 
            Wend '结束循环 
        Else 
            While (Abs(Max_zaojia - b) > 0.0005) '循环开始,判断(目标收益率和计算收益率之间的绝对差值)是否小于(目标收益率与计算收益率之间的最大差值) 
                    a = a + inc_zaojia '造价增大 
                    Sheet1.Cells(5, 3) = a '将新增造价赋予表格 
                    ActiveWorkbook.RefreshAll '刷新表格 
                    b = Sheet1.Cells(23, 12) '新的收益率计算值赋予b 
            Wend '结束循环 
        End If 
         
        Sheet1.Cells(Z, 25) = a '将此时的单位千瓦造价赋予空表格 
        Sheet1.Cells(k, 26) = b '将接近目标收益率的计算收益率赋予空表格 
        Sheet1.Cells(n, 24) = c '将此时的小时数赋予空表格 
        ActiveWorkbook.RefreshAll  '刷新表格 
         
        c = c + inc_xiaoshishu  '小时数增加 
        Sheet1.Cells(7, 3) = c  '将新增小时数赋予表格 
        Sheet1.Cells(5, 3) = d  '将造价重置 
        ActiveWorkbook.RefreshAll  '刷新表格 
                 
            
        n = n + 1 
        Z = Z + 1 
        k = k + 1 
             
    Wend 
End Sub 
 |   
 
 
 
 |