- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 1# b9208
試試看- Option Explicit
- Sub Ex()
- Dim D(1 To 2) As Object, i As Integer, M As String
- Dim R As Integer, C As Integer, A As Range
- Set D(1) = CreateObject("scripting.dictionary") '字典物件
- Set D(2) = CreateObject("scripting.dictionary")
- With Sheets("明細")
- i = 6
- Do While .Cells(i, "d") <> ""
- M = .Cells(i, "D") & Mid(.Cells(i, "E"), 1, 4) & .Cells(i, "F")
- D(1)(M) = D(1)(M) + 1 '全部
- M = .Cells(i, "D") & Mid(.Cells(i, "E"), 1, 4) & .Cells(i, "F") & .Cells(i, "L")
- D(2)(M) = D(2)(M) + 1 '區域
- i = i + 1
- Loop
- End With
- With Sheets("統計")
- For Each A In .Range("F3:J12,F18:J27,F33:J42,F48:J57").Areas '修正為你的全部 及 區域 的範圍
- With A
- For R = 3 To .Rows.Count - 1
- For C = 2 To .Columns.Count
- If .Cells(1) = "全部" Then '全部
- .Cells(R, C) = D(1)(.Cells(R, 1) & Mid(.Cells(1, C), 1, 4) & .Cells(2, C))
- Else '區域
- .Cells(R, C) = D(2)(.Cells(R, 1) & Mid(.Cells(1, C), 1, 4) & .Cells(2, C) & .Cells(1))
- End If
- Next
- Next
- For C = 2 To .Columns.Count
- .Cells(.Rows.Count, C).FormulaR1C1 = "=SUM(R[-" & .Rows.Count - 3 & "]C:R[-1]C)" '公式
- .Cells(.Rows.Count, C) = .Cells(.Rows.Count, C).Value
- Next
-
- End With
- Next
- End With
- End Sub
複製代碼 |
|