- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 4# hkyan - Option Explicit
- Sub Ex()
- Dim Rng As Range, i As Integer, ii As Integer, R As Range, d1 As Object, d2 As Object
- Set d1 = CreateObject("SCRIPTING.DICTIONARY") '字典物件
- Set d2 = CreateObject("SCRIPTING.DICTIONARY") '字典物件
- i = 2 '從B2欄數 開始
- With ActiveSheet '指定工作表
- Do While .Cells(1, i) <> "" '執行迴圈的條件: i欄的第一列 <>""
- If Weekday(.Cells(1, i), 2) = 6 Then '日期的星期="週六"
- If Not Rng Is Nothing Then '設定"週六"的位置
- Set Rng = Union(Rng, .Cells(1, i))
- Else
- Set Rng = .Cells(1, i)
- End If
- End If
- i = i + 1 '下一個欄數
- Loop
- i = 2 '從A2列數 開始
- Do While .Cells(i, "A") <> "" '執行迴圈的條件: A欄的i列 <>""
- '字典物件(KEY)對應一個 Item
- d1(.Cells(i, "A").Value) = "" '字典物件(KEY)的ITEM =""
- d2(.Cells(i, "A").Value) = ""
- For Each R In Rng '每一個 R 的星期都是"週六"
- If R.Cells(i) <> "" Then 'R.Cells(i): R下方第i個Cell
- d1(.Cells(i, "A").Value) = Val(d1(.Cells(i, "A").Value)) + 1
- '字典物件(KEY) =VAL(字典物件(KEY))+1 (對應的 Item)
- d2(.Cells(i, "A").Value) = Date - R
- '字典物件(KEY) =當日- R [天數](對應的 Item)
- End If
- Next
- i = i + 1
- Loop
- Range("R2").Resize(d1.Count).Value = Application.Transpose(d1.ITEMS)
- Range("S2").Resize(d1.Count).Value = Application.Transpose(d2.ITEMS)
-
- End With
- End Sub
複製代碼 |
|