我有一个逻辑,但不知道如何在 Excel 中执行/编码。逻辑如下:
在办公室,我需要根据它们的购买价值和年龄来找出许多旧物品的价值。我不想使用 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
”年数,@flat“ E1
”第一年的百分比和后续年份的 10%。
H1 = "=C1-G1" (Value of the article after depreciation)
I1 = "=IF(H1<=F1,F1,H1)"
请帮助我使用宏或公式循环并找出G1
.
另外,我想将此应用于“n”行,因为有“n”篇文章。
编辑
@assylias感谢您启发我了解SO 政策,让我自己努力寻找答案。
经过大约 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!