返回列表 上一主題 發帖

[發問] 迴圈問題

  1. Sub Ex()
  2. Dim 手續費 As Integer, N As Integer, B As Single
  3. Sheets("Sheet1").Select
  4. Sheets("Sheet1").Names.Add "手續費率", 0.001425
  5. Sheets("Sheet1").Names.Add "打折", 0.28
  6. Sheets("Sheet1").Names.Add "證交稅率", 0.003
  7. '=========================='調整C區股價規則
  8. For Each A In Range("A:A").SpecialCells(xlCellTypeConstants, xlNumbers)
  9.     B = Application.Lookup(A, Array(0, 11, 51, 101, 501, 1001), Array(0.01, 0.05, 0.1, 0.5, 1, 5))
  10.     A(1, "C") = Round(A, 2) * 1000              '買進股金
  11.     手續費 = IIf(A(1, "C") * [手續費率] * [打折] > 20, A(1, "C") * [手續費率] * [打折], 20)
  12.     A(1, "D") = 手續費                          '手續費
  13.     A(1, "E") = A(1, "C") + 手續費
  14.     N = 1                                       '
  15.     A(1, "G") = Round(Round(A, 2) + (B * N), 2) 'C區股價
  16.     A(1, "H") = "=RC[-1]*1000"                  '賣出股金
  17.     A(1, "I") = "=Round(IF(RC[-1] *手續費率 * 打折 > 20, RC[-1] * 手續費率 * 打折, 20), 0)" '賣出手續費
  18.     A(1, "J") = "=Round(RC[-2] *證交稅率,0)"                                                '證交稅
  19.     A(1, "K") = "=RC[-3]-RC[-2]-RC[-1]"                                                     '賣出金額
  20.     A(1, "M") = "=RC[-2]-RC[-8]"                                                            '獲利金額
  21.     A(1, "N") = "=(RC[-3]-RC[-9])/RC[-9]"                                                   '獲利%數
  22.     '
  23.     A(1, "N").GoalSeek Goal:=0.01, ChangingCell:=A(1, "G") '***** 目標搜尋  獲利%數=0.01 會求得接近的[賣價]
  24.     '****  也可用迴圈求解   求解後的[賣價] 會是真實的[[ 檔價 ]]     ********
  25.     'Do Until A(1, "M") >= A(1, "E") * 0.01          '    獲利%數=0.01
  26.     'N = N + 1
  27.     'A(1, "G") = Round(A, 2) + (B * N)
  28.     'Loop
  29.     '*******************************
  30.     A(1, "G").Resize(, 8) = A(1, "G").Resize(, 8).Value     '消除公式顯示值
  31. Next
  32. End Sub
複製代碼
如圖 請修改 欄位名稱

TOP

本帖最後由 GBKEE 於 2012-3-25 16:40 編輯

回復 9# spermbank
   
我嘗試把A.Offset(, 0) = Application.Ceiling(A, B)塞入程式碼第9至10行中間
    可以解決買進股價符合數字規則,讓手續費、買進金額也符合
    可是我卻不知道要如何調整C區股價也符合數字規則的情況下

是要修改A區股價吧 附檔中第一個股價為   12.3333333
  1. Sub Ex()
  2. Dim 手續費 As Integer, N As Integer, B As Double
  3. Sheets("Sheet1").Select
  4. Sheets("Sheet1").Names.Add "手續費率", 0.001425
  5. Sheets("Sheet1").Names.Add "打折", 0.28
  6. Sheets("Sheet1").Names.Add "證交稅率", 0.003
  7. '=========================='調整C區股價規則
  8. For Each A In Range("A:A").SpecialCells(xlCellTypeConstants, xlNumbers)
  9.     B = Application.Lookup(A, Array(0, 11, 51, 101, 501, 1001), Array(0.01, 0.05, 0.1, 0.5, 1, 5))
  10.     A.Value = Application.Ceiling(A, B)             '在此修改 A區股價符合買賣股價規則的[[ 檔價 ]]
  11.     A(1, "C") = A * 1000                            '買進股金
  12.     手續費 = IIf(A(1, "C") * [手續費率] * [打折] > 20, A(1, "C") * [手續費率] * [打折], 20)
  13.     A(1, "D") = 手續費                              '手續費
  14.     A(1, "E") = A(1, "C") + 手續費
  15.     N = 1                                           ' 符合買賣股價數字規則 的次數
  16.     A(1, "G") = A + B * N                           'C區股價
  17.     A(1, "H") = "=RC[-1]*1000"                      '賣出股金
  18.     A(1, "I") = "=Round(IF(RC[-1] *手續費率 * 打折 > 20, RC[-1] * 手續費率 * 打折, 20), 0)" '賣出手續費
  19.     A(1, "J") = "=Round(RC[-2] *證交稅率,0)"                                                '證交稅
  20.     A(1, "K") = "=RC[-3]-RC[-2]-RC[-1]"                                                     '賣出金額
  21.     A(1, "M") = "=RC[-2]-RC[-8]"                                                            '獲利金額
  22.     A(1, "N") = "=Round(((RC[-3]-RC[-9])/RC[-9]),4)"                                        '獲利%數
  23.     '****  用迴圈求解   求解後的[賣價] 會是符合買賣股價規則的[[ 檔價 ]]
  24.     Do Until A(1, "M") >= A(1, "E") * 0.01              '獲利%數=1%
  25.         N = N + 1                                       '次數的累加
  26.         A(1, "G") = A + (B * N)                         'B -> 符合買賣股價規則的數字
  27.     Loop
  28.     A(1, "G").Resize(, 8) = A(1, "G").Resize(, 8).Value     '消除公式顯示值
  29. Next
  30. End Sub
複製代碼

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題