當前位置:編程學習大全網 - 源碼下載 - 求EXCEL按天計算每增加壹天減少5%的公式 急用 謝謝

求EXCEL按天計算每增加壹天減少5%的公式 急用 謝謝

如果是在原數量上減少,公式 =A1*(1-DATEDIF(B1,TODAY(),"d")*0.05),或=A1*(1-DATEDIF(B1,"2014-8-2","d")*0.05),結果可能是負值,前壹公式每次打開工作表時都會自動重算,後壹公式不會。

如果是在前壹次的數量上減少,用自定義函數更為方便:

按Alt+F8打開宏對話框,輸入宏名後單擊”創建“按鈕

這時,會自動切換到Visual Basic編輯窗口。將Sub GetFreeNumber()中的Sub改成Function(End Sub中的Sub會自動變成Function),在"()"之中輸入“InitialValue, StartDate, EndDate”(不含引號,其中InitialValue表示初始數值, StartDate表示起始日期,EndDate表示截止日期)

在Function GetFreeNumber()和End Function之間輸入代碼,代碼如下:

‘--代碼頂部--------------------------------

on error goto errdo

dim ResultValue,date0,date1,dd,i

if isobject(initialvalue) then

ResultValue=initialvalue.value

elseif isnumeric(initialvalue) then

ResultValue=initialvalue

else

getfreenumber=cverr(xlErrValue)

exit function

end if

if isobject(startdate) then

date0=datevalue(startdate.text)

else

date0=datevalue(startdate)

end if

if isobject(enddate) then

date1=datevalue(enddate.text)

else

date1=datevalue(enddate)

end if

dd=datediff("d",date0,date1)

for i=1 to dd

ResultValue=ResultValue*0.95

next

getfreenumber=ResultValue

exit function

errdo:

getfreenumber=cverr(xlErrValue)

‘--代碼底部--------------------------------

如果減少的百分率不是定值,可以修改如下:

增加1個參數插入到InitialValue後面:DropPct,參數變成:InitialValue, DropPct, StartDate, EndDate

增加1個變量:dpct,變量聲明行變成:dim?ResultValue,date0,date1,dd,i,dpct

於DropPct配套的代碼(建議在end if和if isobject(startdate) then之間插入)如下:

if isobject(droppct) then

dpct=droppct.value

else

dpct=droppct

end if

if not isnumeric(dpct) then

getfreenumber=cverr(xlErrValue)

exit function

endif

ResultValue=ResultValue*0.95改成ResultValue=ResultValue*(1-dpct)

使用方法:

引用單元格:=GetFreeNumber(A1,B1,C1,D1),A1是初始值,B1是減少的百分率,C1是開始日期,D1是截止日期

指定參數值:=GetFreeNumber(A1,0.05,B1,#2014-8-2#),A1是初始值,B1是開始日期

等同公式=GetFreeNumber(A1,0.05,B1,"2014-8-2")

  • 上一篇:示例解釋了如何實現負載平衡。
  • 下一篇:怎麽往deb包中添加安裝文件
  • copyright 2024編程學習大全網