返回列表 上一主題 發帖

[發問] 如何將每個時段內的指定數值抽出

[發問] 如何將每個時段內的指定數值抽出

如何利用VBA,將每1分鐘的"OPEN""HIGH""LOW""CLOSE"數值(如Sheet1中的左邊例子),轉為每15分鐘(9:15-9:29, 9:30-9:44, 9:45-9:59, 10:00-10:14,...等等),其內(15分鐘)時段的第1個"OPEN"數值,最"HIGH"數值,最"LOW"數值及最後的1個"CLOSE"數值,將這些數值抽出來,重新排列(如Sheet1中的右邊例子),謝謝!
15min.rar (53.96 KB)

回復 21# handsometrowa
Dim AR(),  這裡宣告一組陣列變數我了解                -> 瞭解它是動態陣列,空的陣列??
ReDim AR(0)  為什麼這裡馬上就要重新定義陣列變數呢?   ->新增一元素 (作為表頭用的)  
重新把元素賦予給 AR(0)  這是什麼意思                  -> 請按F8 逐行執行程式,過了行 AR(0) = .[A1:F1] 到[檢視]-[區域變數視窗] 看AR(0)的內容
例如  .[B5:F9] => 二維陣列( 1 To  9 - 4 , 1 To  5 [B欄 - F欄的 欄數] ) =>二維陣列( 列數 , 欗數 )
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 7# GBKEE


    G大,想請問您關於這邊陣列邏輯問題

Option Explicit
Sub Ex()
    Dim AR(),  這裡宣告一組陣列變數我了解   Rng As Range, i As Integer, A(1 To 6), T As Integer   
    ReDim AR(0)  為什麼這裡馬上就要重新定義陣列變數呢?   
                                                        而且我有一個疑問  AR(0) 是這個陣列元素中的第一個變數?  還是 重新宣告整個陣列變數

    With Sheets("Sheet1")
        .[B:B].Replace "000", "00", xlPart         '修改為時間格式 **********
        AR(0) = .[A1:F1]   

這是我第二個疑惑的點@@"  重新把元素賦予給 AR(0)  這是什麼意思  
意思是   
AR(0) = A1  
AR(1)=B1
AR(2)=C1
AR(3)=D1
AR(4)=E1
AR(5)=F1   

OR  

AR(0) 裡面就含有  六個元素??    我覺得怪怪的 所以特此請教@@

以上謝謝~^^

TOP

回復 19# GBKEE
明白了,感謝GBKEE版大教導!

TOP

回復 18# donod
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Variant, E As Range, b As Date
  4.     With Workbooks("A.xls").Sheets("Sheet1")
  5.         For Each E In .Range("b2", .[b2].End(xlDown))
  6.             D = Split(E.Offset(, -1), "/")
  7.             b = E + #12:01:00 AM#
  8.             E.Value = E + #12:01:00 AM#
  9.             E.Offset(, 6) = D(0) & D(1) & Application.Text(b, "hhmm")
  10.         Next
  11.     End With
  12. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

這個不行
  1. Sub Ex()



  2.     Dim D As Variant, E As Range, b As Date
  3.   
  4.     Windows("A.xls").Activate
  5.     Sheets("Sheet1").Select
  6.       
  7.     With ActiveWorkbook.Sheets(1)
  8.    
  9.    
  10.         For Each E In Range("b1", [b1].End(xlDown))

  11.           D = Split(E.Offset(, -1), "/")
  12.         
  13.           b = E + #12:01:00 AM#

  14.           E.Value = E + #12:01:00 AM#

  15.           E.Offset(, 6) = D(0) & D(1) & Application.Text(b, "hhmm")

  16.         Next
  17.    
  18.    
  19.     End With

  20. End Sub
複製代碼
B.rar (11.78 KB)

TOP

請問如果要處理的檔案A.xls已經打開,以上的VBA檔案在B.xlsm,如何寫才能對A.xls作自動變動,謝謝!

TOP

回復 15# GBKEE
跟從GBKEE版大的指導,成功了!再三感謝!
  1. Option Explicit

  2. Sub Ex()

  3.     Dim D As Variant, E As Range, b As Date

  4.     For Each E In Range("b2", [b2].End(xlDown))

  5.         D = Split(E.Offset(, -1), "/")
  6.         
  7.         b = E + #12:01:00 AM#

  8.         E.Value = E + #12:01:00 AM#

  9.         'E.Offset(, 6) = D(0) & D(1) & Replace(E.Text, ":", "")
  10.          E.Offset(, 6) = D(0) & D(1) & Application.Text(b, "hhmm")

  11.     Next

  12. End Sub
複製代碼

TOP

回復 14# donod
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Variant, E As Range
  4.     For Each E In Range("b2", [b2].End(xlDown))
  5.         D = Split(E.Offset(, -1), "/")
  6.         E.Value = E + #12:01:00 AM#
  7.         E.Offset(, 6) = D(0) & D(1) & Replace(E.Text, ":", "")
  8.     Next
  9. End Sub
複製代碼
還是
  1. Sub Ex1()
  2.     Dim D As Variant, E As Range, b As Date
  3.     For Each E In Range("b2", [b2].End(xlDown))
  4.         b = E + #12:01:00 AM#
  5.         D = Split(E.Offset(, -1), "/")
  6.         E.Offset(, 6) = D(0) & D(1) & Application.Text(b, "hhmm")
  7.     Next
  8. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

再請教如何將B欄的時間自動增加1分鐘(e.g. 9:15轉為9:16)
之後在H欄顯示相關Date Code(e.g. 5130916 代表5月13日9:16)
謝謝!
A1min.rar (140.66 KB)

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題