- 帖子
- 12
- 主題
- 4
- 精華
- 0
- 積分
- 23
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- xp
- 閱讀權限
- 10
- 性別
- 男
- 註冊時間
- 2010-6-4
- 最後登錄
- 2017-9-19
|
本帖最後由 storylai 於 2011-12-16 13:05 編輯
回復 6# Hsieh
似乎看懂了 Hsieh 大的程式了。請大家指教。
Sub Ex2()
Set d = CreateObject("Scripting.Dictionary") '建立一個 d 字典(容器)
For Each a In Range([A2], [A2].End(xlDown)) '建立迴圈,順序讀入每一列 rows 資料
' [A2].End(xlDown) 是取得有資料的最後一欄
'
' 使用雙 Transpose ,可參閱:
' http://forum.twbts.com/redirect. ... 081&fromuid=459
'
' mystr 是數組 array ,目的是將第一列全寫全變數,格式為 "A2,B2,C2,C2,C2"
' a.Resize(, 5) 是定義好 由 A2 向右延展至第 5 個儲存格,即 C2
mystr = Join(Application.Transpose(Application.Transpose(a.Resize(, 5))), ",")
'
' d(mystr) 第一步,按迴圈將 mystr 數組入為「索引 index/keys」放入 d 字典中
' a.Offset(, 5) 第二步,同時用 a.Offset(, 5) ,將 6 欄的「銷售金額」作為 content/items 放入 d 字典中
'
' 重點是,當執行迴圈時, d 會自行檢索 「索引 index/keys」中是否已有 mystr 這個索引。
' 如沒有的,會自動新 mystr : a.Offset(, 5)
' 如已有的,會自動累計 a.Offset(, 5) 的值。
' 累計時,數字會相加,文字會串列,若不同類型會報錯。
'
d(mystr) = d(mystr) + a.Offset(, 5)
'
Next ' 迴圈結束後,有關的資料處理已完成。等待下一步的寫入
[A1:F1].Copy [I1] '將標題列複製至 I1欄。
'開始於 I1 欄寫回 d 字典的資料
For Each ky In d.keys ' 用 ky 變數逐步處理 d.keys(d 字典的索引)
ar = Split(ky, ",") ' 利用 Split 按 , 分割,並存入 ar 數組
ar(0) = CDate(ar(0)) ' 用 CDate 函數將 數字 變回日期格式
[I2].Offset(i, 0).Resize(, 5) = ar ' 寫入"日期 / 崗位 / 姓名 / 顧客 / 工作地點" 的值(d索引)
[I2].Offset(i, 5) = d(ky) ' 寫入"銷售金額" 的值(d值)
i = i + 1
Next
End Sub |
|