返回列表 上一主題 發帖

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

A1min.rar (135.22 KB)
再請教如何將指定時段內的指定數值取代上一個/下一個時段內相關數值?之後重新排列(如Sheet1中的右邊例子),再三謝謝!
指定時段:
9:14, 12:59, 16:59 這3個時段的"Open"數值取代下一個時段9:15, 13:00, 17:00的"Open"數值
16:15, 12:00, 23:00 這3個時段的"Close"數值取代上一個時段16:14, 11:59, 22:59的"Close"數值

TOP

回復 11# donod
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Rng(1 To 3) As Range, i  As Integer, Ar(), S
  4.     Set Rng(1) = Sheets("Sheet1").Range("b:b")
  5.     Ar = Array(#9:14:00 AM#, #12:59:00 PM#, #4:59:00 PM#, #4:15:00 PM#, #12:00:00 PM#, #11:00:00 PM#)
  6.     For i = 0 To UBound(Ar)
  7.         Set Rng(2) = Rng(1).Find(Ar(i), LookIn:=xlFormulas)
  8.         If Not Rng(2) Is Nothing Then
  9.             S = Rng(2).Address
  10.             Do
  11.                 If i <= Int(UBound(Ar) / 2) Then
  12.                     Rng(2).Offset(1, 1) = Rng(2).Offset(, 1)
  13.                 Else
  14.                     Rng(2).Offset(-1, 4) = Rng(2).Offset(, 4)
  15.                 End If
  16.                 If Not Rng(3) Is Nothing Then
  17.                     Set Rng(3) = Union(Rng(3), Rng(1).Parent.Range(Rng(1).Parent.Cells(Rng(2).Row, "a"), Rng(1).Parent.Cells(Rng(2).Row, "g")))
  18.                 Else
  19.                     Set Rng(3) = Rng(1).Parent.Range(Rng(1).Parent.Cells(Rng(2).Row, "a"), Rng(1).Parent.Cells(Rng(2).Row, "g"))
  20.                 End If
  21.                 Set Rng(2) = Rng(1).FindNext(Rng(2))
  22.             Loop Until S = Rng(2).Address
  23.         End If
  24.     Next
  25.      If Not Rng(3) Is Nothing Then Rng(3).Delete
  26. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 12# GBKEE
要感謝的太多了!感謝GEKEE版大教導!

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

回復 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

回復 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

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

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

回復 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

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

TOP

        靜思自在 : 【時間成就一切】時間可以造就人格,可以成就事業,也可以儲積功德。
返回列表 上一主題