|
'入口
Sub test()
Dim i
If [m1] <> "" Then End '只执行1次
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
Sheets(i).Select
Call fzl
Call flhz
Call zl
Next i
Sheets(1).[m1] = Format(Now, "统计时间: yyyy/mm/dd hh:mm:ss") '指定M1存放标记
End Sub
'辅助列
Private Sub fzl()
Cells(1, "j") = "周数"
Range("j2:j" & Range("a65536").End(xlUp).Row) = "=WEEKNUM(A2)"
End Sub
'分类汇总
Private Sub flhz()
With Range("a1").CurrentRegion
.RemoveSubtotal
.Sort key1:=[a1], order1:=xlAscending, Header:=xlYes
.Subtotal GroupBy:=10, Function:=xlSum, TotalList:=Array(8, 9)
End With
End Sub
'整理
Private Sub zl()
Dim A, i, x, y, z
i = Range("i65536").End(xlUp).Row
Rows(i).EntireRow.Delete
Range("j:j") = ""
i = i - 1
Range("a2:c" & i).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
A = Range("d2:g" & i)
For i = 1 To UBound(A)
If A(i, 1) = "" Then
A(i, 1) = A(i - 1, 1) '收盘
A(i, 2) = x '最高
A(i, 3) = y '最低
A(i, 4) = z '开盘
x = 0: y = 0: z = 0
Else
If x = 0 Then x = A(i, 2) Else If x < A(i, 2) Then x = A(i, 2)
If y = 0 Then y = A(i, 3) Else If y > A(i, 3) Then y = A(i, 3)
If z = 0 Then z = A(i, 4)
End If
Next i
[d2].Resize(UBound(A), UBound(A, 2)) = A
ActiveSheet.Outline.ShowLevels RowLevels:=2
Range([a2], Cells(i, "i")).SpecialCells(xlCellTypeVisible).Copy Cells(i + 1, 1)
Rows("2:" & i).Delete
Columns("a:i").AutoFit
ActiveWindow.ScrollRow = 1
End Sub
如何将股票历史日数据转换为周数据4.rar
(22.83 KB, 下载次数: 22)
|
|