返回列表 上一主題 發帖

[發問] 請問日價格怎麼轉變成週價格呢?

回復 10# GBKEE
謝謝指導!
目前我對於 Set Rng 的應用尚未十分孰悉,可能是以往沒接觸過Excel
的緣故。 我會再加強這方面的應用, 謝謝您!

TOP

回復 11# c_c_lai
回復 10# GBKEE
沒有想到有新的版本出現,雖然我無法看到長什麼樣子也謝謝兩位的加強

TOP

工具→設定引用項目→Microsoft ActiveX Data Objects 2.8 Library

用 SQL來解決日轉週、轉月、轉季......轉檔問題
  1. Sub 日線轉週線()

  2.    '建立日期與年週對照字典檔
  3.     Dim d
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     Dim c As Range
  6.     For Each c In Sheets("日價格").Range("A2:A" & Sheets("日價格").[A2].End(xlDown).Row)
  7.    
  8.        '將日期轉為年週,例如201215表示2012年第15週
  9.         yyyyww = Year(c.Value) & Format(DatePart("ww", c.Value), "00")
  10.         
  11.        '檢查年週是否在字典檔中,若不存在則加入
  12.         If Not d.Exists(yyyyww) Then
  13.             d.Add yyyyww, c.Value
  14.         End If
  15.     Next

  16.    '刪除【周價格2】工作表暨存的資料
  17.     With Sheets("周價格2")
  18.         .[A1:E1].Value = Sheets("日價格").[A1:E1].Value
  19.         .Activate
  20.         .Rows("2:" & .[A2].End(xlDown).Row).ClearContents
  21.     End With
  22.    
  23.    '建立ADODB Connection物件變數
  24.     Dim cn As ADODB.Connection
  25.     Set cn = New ADODB.Connection
  26.    
  27.     With cn
  28.         .Provider = "MSDASQL"
  29.         .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
  30.          "DBQ=" & ThisWorkbook.FullName & ";"
  31.         .Open
  32.     End With
  33.    
  34.    'SQL字串
  35.     mySQL = "Select 年週,FIRST(開盤價), MAX(最高價), MIN(最低價), LAST(收盤價) From ((SELECT (YEAR(日期)& FORMAT(DATEPART('ww',日期),'00')) AS 年週, 開盤價, 最高價, 最低價, 收盤價 FROM [日價格$A:E] WHERE 日期 IS NOT NULL) tmpTable) GROUP BY 年週"
  36.    
  37.     Set rs = cn.Execute(mySQL)

  38.     With Sheets("周價格2")
  39.         .Activate
  40.         .Range("A2").CopyFromRecordset rs
  41.     End With
  42.    
  43.    '將年週轉為該週第一個交易日期
  44.     For Each c In Sheets("周價格2").Range("A2:A" & Sheets("周價格2").[A2].End(xlDown).Row)
  45.         c.Value = d.Item(c.Value)
  46.     Next
  47.    
  48.    '關閉連線清除記憶體
  49.     cn.Close
  50.     Set cn = Nothing
  51.    
  52.     MsgBox "轉檔完成!"

  53. End Sub
複製代碼
diabo

TOP

        靜思自在 : 滴水成河。粒米成蘿,勿輕己靈,勿以善小而不為。
返回列表 上一主題