返回列表 上一主題 發帖

[發問] 如何使用巨集自動計算股價漲跌停價?

回復 3# shuasa
應用 jackyq  大大的函式稍加修改如下,
參考一下:
  1. Public Function UpDown(ud As Range, Optional UpDn As Boolean = True)
  2.     If ud.Value = 0 Then UpDown = 0: Exit Function
  3.       
  4.     Price_Sample = Array(0, 10, 50, 100, 500, 1000)
  5.     interval_Sample = Array(0.01, 0.05, 0.1, 0.5, 1, 5)
  6.          
  7.     interval = Application.WorksheetFunction.Lookup(ud.Value * IIf(UpDn, 1.1, 0.9), Price_Sample, interval_Sample)
  8.     UpDown = Application.WorksheetFunction.Floor(ud.Value * IIf(UpDn, 1.1, 0.9), interval)
  9. End Function
複製代碼
漲停價函式
=UpDown(F8)
等於
=UpDown(F8,1)
等於
=UpDown(F8,True)

跌停價函式
=UpDown(F8,0)
等於
=UpDown(F8,False)

TOP

回復 3# shuasa
亦可直接以 VBA 程式段來處理:
  1. Sub Ex()
  2.     Dim xVal As Double
  3.    
  4.     xVal = UpDown([F8])
  5.     MsgBox "UpDown([F8]) (漲停價) = " & xVal
  6.     xVal = UpDown([F8], 1)
  7.     MsgBox "UpDown([F8], 1) (漲停價) = " & xVal
  8.     xVal = UpDown([F8], True)
  9.     MsgBox "UpDown([F8], True) (漲停價) = " & xVal
  10.    
  11.     xVal = UpDown([F8], 0)
  12.     MsgBox "UpDown([F8], 0) (跌停價) = " & xVal
  13.     xVal = UpDown([F8], False)
  14.     MsgBox "UpDown([F8], False) (跌停價) = " & xVal
  15. End Sub
複製代碼

TOP

回復 3# shuasa
沒留意到 Ceiling 的公式:
修正如下
  1. Public Function UpDown(ud As Range, Optional UpDn As Boolean = True)
  2.     If ud.Value = 0 Then UpDown = 0: Exit Function
  3.       
  4.     Price_Sample = Array(0, 10, 50, 100, 500, 1000)
  5.     interval_Sample = Array(0.01, 0.05, 0.1, 0.5, 1, 5)
  6.          
  7.     interval = Application.WorksheetFunction.Lookup(ud.Value * IIf(UpDn, 1.1, 0.9), Price_Sample, interval_Sample)
  8.    
  9.     If UpDn Then
  10.         UpDown = Application.WorksheetFunction.Floor(ud.Value * 1.1, interval)
  11.     Else
  12.         UpDown = Application.WorksheetFunction.Ceiling(ud.Value * 0.9, interval)
  13.     End If
  14. End Function
複製代碼

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題