3
我有一個邏輯,但不知道如何在Excel中執行/編碼。邏輯如下:在Excel VBA中循環
在辦公室,我需要根據他們的購買價值和年齡找出許多舊文章的價值。我不想使用VDB或其他內置功能。
在我的電子表格:現在
A1 = "Table" (Name of the article)
B1 = "01/01/2005" (Date of purchase in MM/DD/YYYY format)
C1 = "1000" (Purchase value)
D1 = "=DATEDIF(B1,TODAY(),"Y")" (Gives the age of article in years)
E1 = "20" (Percentage depreciation for first year, which varies based on article)
F1 = "=C1*10%" '(Depreciated value should not be less than 10% of purchase value)
,在G1
我想購買價值來計算的文章「A1
」折舊值「C1
」爲「D1
」的年數,@平「E1
」第一年爲百分之十,隨後幾年爲百分之十。
H1 = "=C1-G1" (Value of the article after depreciation)
I1 = "=IF(H1<=F1,F1,H1)"
請幫我一個宏或公式中循環,並找出G1
值。
此外,我想將此應用於「n」行數,因爲有「n」個文章。
編輯
@assylias感謝啓發我一下SO policy,把我的工作爲自己找到了答案。
經過大約30分鐘的谷歌搜索,然後進行反覆試驗,我成功地寫了一個宏來做我想做的事。這裏是:
Sub DepVal()
'
' DepVal Macro
' Macro by Prashanth JC
'
' Keyboard Shortcut: Ctrl+d
'
fYear = 0
dVal = 0
tYear = ActiveCell.Offset(0, -3)
purVal = ActiveCell.Offset(0, -4)
depFirst = ActiveCell.Offset(0, -2)
depOther = 10
If tYear >= 1 Then
Do
If fYear = 0 Then
dVal = purVal - (purVal * depFirst)/100
Else
dVal = dVal - (dVal * depOther)/100
End If
fYear = fYear + 1
Loop Until fYear = tYear
ActiveCell.Value = dVal
Else
ActiveCell.Value = purVal
End If
End Sub
最後,我格式化了G1單元格爲一個帶有小數點零位的數字。一切都完美了!
再次感謝,SO和assylias!
如果你很熟悉,那麼你會不會感到驚訝有人問:你有什麼嘗試? – assylias
因爲我對MACROS一無所知,所以還沒試試。我的Excel知識只是關於+ - * /。我在Google上發現的IF()聲明。 –
有人可能會幫助你,但是[你應該在詢問之前嘗試,並且你不能指望某人爲你寫代碼](http://meta.stackexchange.com/a/128553/179508)。 – assylias