- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
4#
發表於 2015-3-11 10:52
| 只看該作者
回復 3# 學生~~
試試看- Option Explicit
- Sub Ex()
- Dim Ar(), i As Integer, Rng As Range
- Ar = Sheets("1分鐘").UsedRange.Columns("B:G").Value
- For i = 2 To UBound(Ar)
- With Sheets("Tick").Columns(4)
- If Not .Find(Ar(i, 1), LookAt:=xlWhole) Is Nothing Then
- .Replace Ar(i, 1) & "", "=aa" '同一分鐘的時間替換為錯誤值
- Set Rng = .SpecialCells(xlCellTypeFormulas, xlErrors) '錯誤值的範圍
- Rng.Value = Ar(i, 1) '回復時間
- With Rng.Offset(, 1) '成交價格欄
- Ar(i, 2) = .Cells(1) '開盤價(第一個Cell)
- Ar(i, 3) = Application.Max(.Cells) '最高價
- Ar(i, 4) = Application.Min(.Cells) '最低價
- Ar(i, 5) = .Cells(.Count) '收盤價(最後一個Cell)
- Ar(i, 6) = Application.Sum(Rng.Offset(, 2)) '成交量
- End With
- End If
- End With
- Next
- Sheets("1分鐘").UsedRange.Columns("B:G") = Ar
- Ex_資料轉換統計 Sheets("5分鐘"), 5
- Ex_資料轉換統計 Sheets("10分鐘"), 10
- Ex_資料轉換統計 Sheets("30分鐘"), 30
- Ex_資料轉換統計 Sheets("60分鐘"), 60
- End Sub
- Sub Ex_資料轉換統計(Sh As Worksheet, xTime As Integer)
- Dim Ar(), Rng As Range, i As Integer
- With Sh
- .UsedRange.Columns("C:G").Offset(1) = ""
- Ar = .UsedRange.Columns("B:G").Value
- For i = 2 To UBound(Ar)
- Set Rng = Sheets("1分鐘").Columns("B").Find(Ar(i, 1), LookAt:=xlWhole).Offset(-xTime).Resize(xTime)
- With Rng.Offset(, 1) '成交價格欄
- Ar(i, 2) = .Cells(1) '開盤價(第一個Cell)
- Ar(i, 3) = Application.Max(.Cells) '最高價
- Ar(i, 4) = Application.Min(.Cells) '最低價
- Ar(i, 5) = .Cells(.Count) '收盤價(最後一個Cell)
- Ar(i, 6) = Application.Sum(Rng.Offset(, 5)) '成交量
- End With
- Next
- .UsedRange.Columns("B:G") = Ar
- End With
- End Sub
複製代碼 |
|