- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
10#
發表於 2011-5-12 09:34
| 只看該作者
本帖最後由 GBKEE 於 2011-5-12 10:52 編輯
回復 9# ko310kmo
If TheTime <> TimeSerial(Hour(Time), Minute(Time), 0) Then
檔案一執行時 TheTime <> TimeSerial(Hour(Time), Minute(Time), 0)
執行之後有設定 TheTime = TimeSerial(Hour(Time), Minute(Time), 0)
經時間到下一分鐘後 TheTime <> TimeSerial(Hour(Time), Minute(Time), 0)
ReDim AR(2 To Range("b2").End(xlDown).Row, 1 To 6)
將 AR陣列 重新初始化 (歸零)
.Offset(1, 3).Resize(1, 6) = Application.Index(AR, E.Row - 1) '讀取一分鐘內的資料
AR陣列是紀錄一分鐘內各履約價的 時間, 開, 高, 低, 收, 量
請問[B2]是什麼意思
http://forum.twbts.com/viewthread.php?tid=2811&from=favorites
*******************************************************
重新修改試試看 但與你的期望尚有距離- Private Sub Worksheet_Calculate()
- Dim E, i%
- On Error GoTo t '處理 即時成交價與成單量 範圍沒有錯誤值
- If Not Range("C2", Range("D2").End(xlDown)).SpecialCells(xlCellTypeFormulas, xlErrors) Is Nothing Then
- Exit Sub '此檔案初開始連結時即啟動重算 ->但是尚有未連結到的儲存格會傳回錯誤值
- End If
- t:
- A = Application.Transpose(Range("C2", Range("D2").End(xlDown)).Value) '即時成交價與成單量範圍陣列
- If TheTime <> TimeSerial(Hour(Time), Minute(Time), 0) Then '設定每分鐘整
- ReDim AR(2 To Range("b2").End(xlDown).Row, 1 To 6) '陣列 重新初始化 (歸零)
- 開盤價 = Empty '變數初始化 (歸零)
- Ex
- If Not IsEmpty(B) Then
- For Each E In Range("b2", Range("b2").End(xlDown))
- Sheets(E.Text).Cells(Rows.Count, "j").End(xlUp).Offset(, 6) = B(1, E.Row - 1) '一分鐘結束時的價格
- Next
- End If
- TheTime = TimeSerial(Hour(Time), Minute(Time), 0)
- Else
- Ex
- End If
- If IsEmpty(B) Then '比對陣列為資料
- For Each E In Range("b2", Range("b2").End(xlDown))
- With Sheets(E.Text).Cells(Rows.Count, "j").End(xlUp)
- .Offset(1) = E(1, 2) '記錄下 成交價
- .Offset(1, 1) = E(1, 3) '記錄下 單量
- .Offset(1, 2).Resize(1, 6) = Application.Index(AR, E.Row - 1) '讀取一分鐘內的資料
- End With
- Next
- Else
- For i = 1 To UBound(A, 2)
- If A(1, i) <> B(1, i) Or A(2, i) <> B(2, i) Then ' 履約價的(成交價或成單量)有變動
- With Sheets([B2].Cells(i, 1).Text).Cells(Rows.Count, "j").End(xlUp)
- .Offset(1) = [B2].Cells(i, 2) '記錄下 即時成交價
- .Offset(1, 1) = [B2].Cells(i, 3) '記錄下 單量
- .Offset(1, 2).Resize(1, 6) = Application.Index(AR, i) '讀取一分鐘內的資料
- End With
- End If
- Next
- End If
- B = A
- End Sub
- Sub Ex() 'Sheet1的程式碼 你發問的那篇 [dde tick資料轉換分鐘資料]
- Dim i%
- If IsEmpty(開盤價) Then
- ReDim 開盤價(2 To UBound(AR))
- For i = 2 To [B1].End(xlDown).Row
- 開盤價(i) = Cells(i, "C")
- Next
- End If
- For i = 2 To [B1].End(xlDown).Row
- If TheTime <> TimeSerial(Hour(Time), Minute(Time), 0) Then
- AR(i, 1) = Time 'TimeSerial(Hour(Time), Minute(Time), 0) '時間
- AR(i, 2) = 開盤價(i) '每分鐘開盤價
- AR(i, 3) = Cells(i, "C") '每分鐘的最高價
- AR(i, 4) = Cells(i, "C") '每分鐘的最低價
- AR(i, 6) = Cells(i, "D") '每分鐘的成交量
- Else
- AR(i, 1) = Time
- AR(i, 3) = IIf(Cells(i, "C") > AR(i, 3), Cells(i, "C"), AR(i, 3)) '每分鐘的最高價
- AR(i, 4) = IIf(Cells(i, "C") < AR(i, 4), Cells(i, "C"), AR(i, 4)) '每分鐘的最低價
- 'AR(i, 5) = Cells(i, "C") '每分鐘的收盤價
- AR(i, 6) = AR(i, 6) + Cells(i, "D") '每分鐘的成交量
- End If
- Next
- End Sub
複製代碼 |
|