iT邦幫忙

0

IF多條件

成績 Ach%
X>=97 120%
93<=X<97 100%
89<=X<93 80%
85<=X<89 60%
81<=X<85 40%
77<=X<81 20%
X<77 0%

依據上述條件,有高手可以幫忙簡化公式寫法嗎?拜託拜託感謝~~~

看更多先前的討論...收起先前的討論...
ckp6250 iT邦好手 1 級 ‧ 2019-12-29 17:04:56 檢舉
程式語言有很多種,
不同語言語法不同,
請先說明是要用那一種語言?
建議改用 SELECT CASE 吧,會比較簡潔
Select Case X
Case 77 To 96
Ach=ToString(((X-77)-(X-77)%4)+4*5,"0.##%")
Case >=97
Ach=ToString(1.2,"0.##%")
Case <77
Ach=ToString(0,"0.##%")
End Select
用 SELECT CASE 跟 IF 沒有一定,主要是看條件判斷誰比較快
一般認知,第一個條件只要能符合大多數輸入範圍,那就會比較快
按照樓主給的題目,因為 IF 沒有 X TO Y 這種條件判斷
所以,這種題目用 IF 基本上執行速度會比 SELECT 慢大概兩倍左右
這種邏輯判斷條件不管哪一種,越經常使用的放越前面就會增加執行速度
player iT邦大師 1 級 ‧ 2019-12-30 20:03:34 檢舉
你知道級距表(Rank Table) 的寫法嗎?
如果不是太在乎效能的話
用級距表跑回圈去判斷

2 個回答

1
賽門
iT邦超人 1 級 ‧ 2019-12-29 19:16:08
最佳解答

If X >= 97% then ach=120%
Else If X >=93% then ach=100%
Else if X >=89% then ach=80%
Else If X >=85% then ach =60%
Else if X >= 81% then ach=40%
Else If X>=77% then ach =20%
Else ach=0%

ckp6250 iT邦好手 1 級 ‧ 2019-12-29 19:38:07 檢舉

簡化一下:

If X >= 97% then ach=120%
Else If X <77% then ach=%
Else ach=(X-77)*5+20

(X-77)5+20 應該有錯
可以改如下ToString(((X-77)-(X-77)%4)+4*5,"0.##%")

ckp6250 iT邦好手 1 級 ‧ 2019-12-30 11:30:52 檢舉

嗯,上面這樣才完整。

0
paicheng0111
iT邦高手 1 級 ‧ 2019-12-30 14:17:50

用Excel的VLOOKUP函數,第三個參數要設為True

我要發表回答

立即登入回答