Board logo

標題: 請問日轉月的vba [打印本頁]

作者: vavashop    時間: 2016-7-25 22:57     標題: 請問日轉月的vba

請問這一段 日轉月的寫法哪邊有問題
資料怪怪的


Sub 日轉月K()
'  **************************************************
'  使用工作表函數 weeknum   '  判斷 是否為同一週的營業日資料
'  但2003版 使用 weeknum 須於增益集中 加入VBA分析箱
'  周轉月K , 可以依樣畫葫蘆
'  **************************************************
    Dim rowss As Integer
    '  Dim rowsc As Integer
    Dim Mday(1 To 2)  As Variant, Rng As Range, i As Integer
   
    If Sheets("工作表1").Range("d6") = "" Then Exit Sub '故意設定的判斷參數,避免無數值還計算
    '  股價資料起始row
    rowss = 6
    With 工作表1
        '  確認股價資料有無
        If .Range("A" & rowss) = "" Then Exit Sub
        '  周K表頭
        .Range("R" & rowss - 1 & ":W65536").Clear
        .Range("R" & rowss - 1).Resize(1, 7) = Array("月數", "日期", "開盤", "最高", "最低", "收盤", "成交量")
        '  .Range("L" & rowss - 1) = "開盤"
        '  .Range("M" & rowss - 1) = "最高"
        '   .Range("N" & rowss - 1) = "最低"
        '   .Range("O" & rowss - 1) = "收盤"
        '   .Range("P" & rowss - 1) = "成交量"
        '  第一筆周K判別用
        '   rowsc = rowss   '  周K起始row
        '   .Range("K" & rowss) = .Range("A" & rowss)
        '   .Cells(rowsc, 11) = .Cells(rowss, 1)
        '   .Cells(rowsc, 13) = .Cells(rowss, 3)
        '   .Cells(rowsc, 14) = .Cells(rowss, 4)
        i = 6
        Do
            Mday(1) = Evaluate("MONTH(""" & .Cells(i, 1) & """)")
            Mday(2) = Evaluate("MONTH(""" & .Cells(i, 1) & """)")   '  導入年度的月數
            Set Rng = .Cells(i, 1).Resize(, 8)  '  這日期的資料
            Do
                Set Rng = Union(.Cells(i, 1).Resize(, 8), Rng)               '  加入同週一日期的資料
                i = i + 1  '  下一個 日期
                Mday(2) = Evaluate("MONTH(""" & .Cells(i, 1) & """)")   '  導入年度的週數
                If IsError(Mday(2)) Then Exit Do   '  沒日期 傳回錯誤值
            Loop Until Mday(1) <> Mday(2)         '  換周
            '  Rng.Select   '  看看是否為同一週日期的資料
            '  日轉周K資料
            .Range("R" & rowss).Resize(1, 7) = Array(Mday(1), Rng(Rng.Rows.Count, 1).Text, Rng(1, 2), Application.Max(Rng.Columns(3)), Application.Min(Rng.Columns(3)), Rng(Rng.Rows.Count, 5), Format(Application.Sum(Rng.Columns(8)), "000,000"))
            rowss = rowss + 1  '  下一 日轉周K資料
        Loop Until IsError(Mday(2))
    End With
End Sub
作者: joey0415    時間: 2016-7-25 23:33

回復 1# vavashop

http://www.mobile01.com/topicdetail.php?f=514&t=3522285&p=1#45891769

我自己是這樣做!成功

EXCEL 也可以當資料庫用,
作者: vavashop    時間: 2016-7-26 12:08

[attach]24747[/attach]回復 1# vavashop
作者: vavashop    時間: 2016-7-26 12:23

回復 1# vavashop
作者: joey0415    時間: 2016-7-26 20:21

回復 4# vavashop

這樣做可以一檔一檔做,但用sql語法,一次可以把幾千檔的股票一起轉週或轉月,不用一分鐘

參考

高大




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