2012-05-23 6 views
3

논리를 사용하고 있지만 Excel에서 코드를 실행/코딩하는 방법에 대해서는 알지 못합니다. 논리는 다음과 같습니다.Excel VBA의 루프

사무실에서는 많은 구매 가치와 나이를 기반으로 많은 오래된 제품의 가치를 찾아야합니다. VDB 또는 다른 inbuilt 함수를 사용하고 싶지 않습니다. 내 스프레드 시트에서

는 :

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에서 나는 "E1"평면 @, 구매 값 년의 "C1"에 대한 "D1"수를 기사 "A1"의 감가 상각 값을 계산하려면 첫해는 %, 그 다음 해에는 10 %입니다.

H1 = "=C1-G1" (Value of the article after depreciation) 
I1 = "=IF(H1<=F1,F1,H1)" 

루프 매크로 나 공식으로 저를 도와 G1의 값을 찾아주세요.

또한 "n"개의 기사가 있으므로 "n"개의 행에 적용하고 싶습니다.

편집 자신이 답을 찾기위한 작업을 나에게 퍼팅에 대한 SO policy 나를 계몽을위한

assylias @ 감사합니다.

약 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!

+1

당신이 잘 알고 있다면 그럼 당신은 놀라지 않을 것이다 질문 : 당신은 무엇을 시도 했습니까? – assylias

+0

매크로에 관해서는 아무 것도 모르므로 한번 사용해보십시오. 내 Excel 지식은 약 + - * /. Google에서 찾은 IF() 문구입니다. –

+1

누군가가 당신을 도울 수 있지만 [질문하기 전에 시도해야하며 누군가가 당신을 위해 코드를 작성한다고 기대할 수는 없습니다] (http://meta.stackexchange.com/a/128553/179508). – assylias

답변

1

매크로가 필요하지 않습니다. 간단한 수학입니다.

실제로 20는,이 공식이 작동 것이다 (E1에서) 당신의 비율이 (20 %) .2로 저장된다고 가정 :

=MAX(F1,C1*(1-E1)-(C1*0.1*(D1-1))) 
관련 문제