- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
3#
發表於 2011-5-11 16:21
| 只看該作者
回復 1# ko310kmo - Dim A, B, TheTime As Date, AR, 開盤價
- 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)
- Ex
- 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%
- For i = 2 To [B1].End(xlDown).Row
- If TheTime <> TimeSerial(Hour(Time), Minute(Time), 0) Then
- AR(i, 1) = TimeSerial(Hour(Time), Minute(Time), 0) '每分鐘時間
- If IsEmpty(B) Then
- If IsEmpty(開盤價) Then ReDim 開盤價(2 To UBound(AR))
- 開盤價(i) = Cells(i, "C") '開盤價
- End If
- AR(i, 2) = 開盤價(i)
- AR(i, 3) = Cells(i, "C") '每分鐘的最高價
- AR(i, 4) = Cells(i, "C") '每分鐘的最低價
- ' AR(i, 5) = Cells(i, "C") '請問收盤價是何時的價格
- AR(i, 6) = Cells(i, "D") '每分鐘的成交量
- Else
- 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
複製代碼 |
|