У меня есть логика на месте, но я не знаю, как ее выполнять/кодировать в Excel. Логика ниже:Loop in 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
» % за первый год и 10% за последующие годы.
H1 = "=C1-G1" (Value of the article after depreciation)
I1 = "=IF(H1<=F1,F1,H1)"
Пожалуйста, помогите мне с помощью макроса или формулы в цикле и выяснить значение G1
.
Кроме того, я хочу применить это к «n» числу строк, так как существует «n» количество статей.
EDIT
@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!
Если вы знакомы с SO, то вы не будете удивлены, спросить: что вы пробовали? – assylias
Поскольку я ничего не знаю о MACROS, не пробовал. Знание моего Excel составляет всего около + - * /. Оператор IF(), который я нашел в Google. –
Кто-то может вам помочь, но [вы должны попробовать, прежде чем спрашивать, и вы не можете ожидать, что кто-то напишет код для вас] (http://meta.stackexchange.com/a/128553/179508). – assylias