Board logo

標題: tick資料轉換分鐘資料(已下載資料) [打印本頁]

作者: 學生~~    時間: 2015-3-10 07:16     標題: tick資料轉換分鐘資料(已下載資料)

我已經下載當天時間資料,
想將Tick各種頻率資料轉換成
1、5、10、30、60分鐘資料。
不知道怎麼寫程式嗎??
麻煩各位幫幫我~~
作者: GBKEE    時間: 2015-3-10 09:01

回復 1# 學生~~

可參考這裡
作者: 學生~~    時間: 2015-3-10 18:29

感謝大大指教~~
但有些附件還沒有權限可以參考實在很難有頭緒。
在有資料時很順,但在沒資料時...如何找上一筆資料。
With Worksheets("1分鐘")
Onerow = .Range("a1048576").End(xlUp).Row

.Range("C2") = Worksheets("TICK").Range("E2")
Findum = Worksheets("TICK").Range("D21048576").Find(.Range("B" & 2)).Row
End With
但不是每一分鐘都有資料,像是91200就找不到資料,那要怎麼找到上一筆資料。
作者: GBKEE    時間: 2015-3-11 10:52

回復 3# 學生~~
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar(), i As Integer, Rng As Range
  4.     Ar = Sheets("1分鐘").UsedRange.Columns("B:G").Value
  5.     For i = 2 To UBound(Ar)
  6.         With Sheets("Tick").Columns(4)
  7.             If Not .Find(Ar(i, 1), LookAt:=xlWhole) Is Nothing Then
  8.                 .Replace Ar(i, 1) & "", "=aa"           '同一分鐘的時間替換為錯誤值
  9.                 Set Rng = .SpecialCells(xlCellTypeFormulas, xlErrors) '錯誤值的範圍
  10.                 Rng.Value = Ar(i, 1)                    '回復時間
  11.                 With Rng.Offset(, 1)                    '成交價格欄
  12.                     Ar(i, 2) = .Cells(1)                '開盤價(第一個Cell)
  13.                     Ar(i, 3) = Application.Max(.Cells)  '最高價
  14.                     Ar(i, 4) = Application.Min(.Cells)  '最低價
  15.                     Ar(i, 5) = .Cells(.Count)           '收盤價(最後一個Cell)
  16.                     Ar(i, 6) = Application.Sum(Rng.Offset(, 2))  '成交量
  17.                 End With
  18.             End If
  19.         End With
  20.     Next
  21.     Sheets("1分鐘").UsedRange.Columns("B:G") = Ar
  22.     Ex_資料轉換統計 Sheets("5分鐘"), 5
  23.     Ex_資料轉換統計 Sheets("10分鐘"), 10
  24.     Ex_資料轉換統計 Sheets("30分鐘"), 30
  25.     Ex_資料轉換統計 Sheets("60分鐘"), 60
  26. End Sub
  27. Sub Ex_資料轉換統計(Sh As Worksheet, xTime As Integer)
  28.     Dim Ar(), Rng As Range, i As Integer
  29.     With Sh
  30.         .UsedRange.Columns("C:G").Offset(1) = ""
  31.         Ar = .UsedRange.Columns("B:G").Value
  32.         For i = 2 To UBound(Ar)
  33.             Set Rng = Sheets("1分鐘").Columns("B").Find(Ar(i, 1), LookAt:=xlWhole).Offset(-xTime).Resize(xTime)
  34.             With Rng.Offset(, 1)                   '成交價格欄
  35.                 Ar(i, 2) = .Cells(1)                '開盤價(第一個Cell)
  36.                 Ar(i, 3) = Application.Max(.Cells)  '最高價
  37.                 Ar(i, 4) = Application.Min(.Cells)  '最低價
  38.                 Ar(i, 5) = .Cells(.Count)           '收盤價(最後一個Cell)
  39.                 Ar(i, 6) = Application.Sum(Rng.Offset(, 5))  '成交量
  40.             End With
  41.         Next
  42.          .UsedRange.Columns("B:G") = Ar
  43.     End With
  44. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)