2014-06-06 1 views
0

지난 한 달간 판매 종료 가격과 거래 수수료를 입력 할 수있는 기능을 설계하려고 한 다음 나에게 돌아갑니다. 거래가 우리 사무실의 커미션 차트와 어떻게 일치하는지에 따라 "낮음", "높음"또는 "확인"수수료 수준을 확인/수정하는 기능 (예 : If-Then-ElseIf 등)

예를 들어 거래가 2 만 5 천 달러이고 2 % 커미션이 기록되면 함수는 아래 차트에 따라 "높음"을 반환해야합니다.

Up to $49,999   1.50% 
$50,000- $99,999    1.25% 
$100,000-$199,999  0.85% 
$200,000-$399,999  0.75% 
$400,000-$699,999  0.50% 
$700,000-$999,999  0.30% 
$1,000,000-$1,499,999 0.20% 
$1,500,000 and above  0.10% 

코드는 다음과 같습니다. 그게 내가 테스트 해본 것이기 때문에 나는 첫 번째 행만 공유했습니다. 서로 다른 숫자를 가진 섹션이 중복되어 차트의 레벨을 반영합니다.

기능 FeeChecker (x, y)를

If 50000 > x > 0 Then 

    If y > 1.5 Then FeeChecker = "HIGH" 
    ElseIf y < 1.5 Then FeeChecker = "LOW" 
    ElseIf y = 1.5 Then FeeChecker = "OKAY" 
    End If 

End Function 

에 (전체 공개, 내가 전혀 VBA를 사용했습니다 이후 오랜만 그래서 명백한 실수를 만들고있어 경우에 저에 쉽게 갈 것) 이 시점에서 아무런 문제없이 "LOW"와 "OKAY"를 ​​반환 할 수 있지만 더 높은 수수료율을 사용하면 "HIGH"대신 숫자 0이 반환됩니다. 추가/변경하려면 무엇이 필요합니까? TIA

+1

첫 번째 경우를 다음과 같이 변경할 수 있습니다. if x> 50000 then then – kiks73

답변

0

FeeChecker = "HIGH" 코드 (LOW 및 OKAY에도 동일)를 별도의 줄에 입력해야 할 수 있습니다. Then 부분을 If 부분과 동일한 줄에 넣는 구문에는 해당 End If이 없습니다. 나는 변화를 시험하지 않았다, 그것은 첫 번째 일이 내가 할 줄 : 다음과 같이

If y > 1.5 
    Then FeeChecker = "HIGH" 
ElseIf y < 1.5 
    Then FeeChecker = "LOW" 
Else ' y = 1.5 
    Then FeeChecker = "OKAY" 
End If 
0

한 가지 방법은 Select Case 문을 사용하고 있습니다 :

Function FeeChecker(Deal As Double, Commission As Double) 

    Select Case Deal  

     Case Is <= 49999    
      FeeChecker = IIf(Commission < 1.5, "Low", IIf(Commission > 1.5, "High", "Okay")) 

     Case Is <= 99999    
      FeeChecker = IIf(Commission < 1.25, "Low", IIf(Commission > 1.25, "High", "Okay"))    

    End Select 

End Function 

당신은에 맞게 추가로 case 문을 추가 할 수 있습니다 커미션 테이블.

0

1) 그렇습니다. FeeChecker = "High"를 자신의 줄에 넣었 으면합니다. 2) End If가 누락되었습니다. 두 가지 경우. 하나만 End If. 3) 외부 루프와 하드 코드 50000 및 1.5를 사용해야하는 이유는 무엇입니까? 왜 Excel 스프레드 시트의 테이블에 데이터를 넣지 않습니까? 정확한 값을 찾지 않는 조회 함수 (마지막 매개 변수 1과의 일치)를 사용할 수 있도록 세금 테이블 형식으로 만드십시오. 그런 다음 내부 If 문만 필요합니다.

Function FeeChecker(x,y) 
    ' Lookup y value based on x from table and store as commPct 
    If y > commPct Then 
     FeeChecker = "HIGH" 
    ElseIf y < commPct Then 
     FeeChecker = "LOW" 
    ElseIf y = commPct Then 
     FeeChecker = "OKAY" 
    End If 
End Function