- 帖子
- 2842
- 主題
- 10
- 精華
- 0
- 積分
- 2898
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2025-4-28
|
3#
發表於 2016-4-4 12:56
| 只看該作者
本帖最後由 准提部林 於 2016-4-4 12:59 編輯
Function MyOP(V As String, V1 As Double)
V是數值, 何以定義為[文字]型態, 若無法確定其型態, 可不定義, 其為單一元素, 影響應不大!
另用 MID 去取數, 就有點畫蛇添足, 化簡為繁, 直接用[常數]不是較好? 或者有其它理由?
=========================================
除了超版的方法, 一般用 IF 的方法:( 注意:判斷是由大而小, 與公式的 IF 規則相同)
Function MyOP_1(V)
If V >= 1000 Then
MyOP_1 = 10
ElseIf V >= 500 Then
MyOP_1 = 5
ElseIf V >= 50 Then
MyOP_1 = 1
ElseIf V >= 10 Then
MyOP_1 = 0.5
ElseIf V > 0 Then
MyOP_1 = 0.1
End If
End Function
IF公式:=IF(A1>=1000,10,IF(A1>=500,5,IF(A1>=50,1,IF(A1>=10,0.5,IF(A1>0,0.1,0)))))
==========================================
一般人少用的 SWITCH:
Function MyOP_2(V)
If V > 0 Then
MyOP_2 = Switch(V >= 1000, 10, V >= 500, 5, V >= 50, 1, V >= 10, 0.5, V > 0, 0.1)
End If
End Function
==========================================
這是工作表函數法:
Function MyOP_3(V)
If V > 0 Then
MyOP_3 = Application.Lookup(V, Array(0, 10, 50, 500, 1000), Array(0.1, 0.5, 1, 5, 10))
End If
End Function
==========================================
不用VBA,一般公式:
=IF(A1<=0,0,LOOKUP(A1,{0,10,50,500,1000},{0.1,0.5,1,5,10}))
=IF(A1<=0,0,MAX((A1>={0,10,50,500,1000})*{0.1,0.5,1,5,10})) |
|