- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 119
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-5-17
               
|
13#
發表於 2010-8-30 22:48
| 只看該作者
本帖最後由 Hsieh 於 2010-8-31 00:14 編輯
回復 13# olisun
累計區塊計算- Sub 累計()
- Dim d as Object,sh as WorkSheet,r as Long,a as Range,w As String,dt As Date,b As Range,at As String
- Set d = CreateObject("Scripting.Dictionary") '建立字典物件
- For Each sh In Sheets(Array("派夾報宣傳車", "NP、CF")) '在2個資料工作表循環
- With sh
- r = 3
- dt = .Cells(r, 1) '資料工作表A欄的日期
- Do Until dt > Sheets("日報表").[E2] '當日期超過就跳離迴圈
- For Each a In .Range(.[B2], .[B2].End(xlToRight)) '資料工作表第2列做循環
- w = a.Offset(-1, 0).MergeArea.Cells(1, 1) '第一列對應到的內容因為有合併儲存格所以取合併範圍第一格的值寫入變數
- d(w & a) = d(w & a) + .Cells(r, a.Column).Value '以種類跟區域字串做索引儲存對應到的值
- Next
- r = r + 1
- dt = .Cells(r, 1) '寫入下一個日期
- Loop
- End With
- Next
- With Sheets("日報表")
- For Each a In .[B15:B26]
- at = a
- For Each b In .[P14:U14]
- If b.Column > 18 Then at = "" '因為18欄以後沒有地區所以要讓地區變數變空
- .Cells(a.Row, b.Column) = d(b & at) '寫回日報表
- Next
- Next
- End With
- End Sub
複製代碼 |
|