- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 86
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-4-10
               
|
17#
發表於 2012-4-24 08:53
| 只看該作者
回復 15# luke - Sub ex()
- Dim Mystr$, A As Range
- Set d = CreateObject("Scripting.Dictionary")
- With sheet1
- For Each sp In .Shapes
- If sp.Name Like "Check*" Then
- If sp.OLEFormat.Object.Value = 1 Then Mystr = Mystr & "," & sp.OLEFormat.Object.Caption
- End If
- Next
- For Each A In .Range(.[A10], .[A10].End(xlDown))
- k = Asc(A.Offset(, 5)) - 63
- If InStr(Mystr, A) > 0 Then
- d(k & "," & A.Offset(, 1) & "," & A.Offset(, 2)) = d(k & "," & A.Offset(, 1) & "," & A.Offset(, 2)) + A.Offset(, 3)
- End If
- Next
- End With
- For i = 2 To 4
- With Sheets(i)
- For Each A In .Range(.[A2], .[A2].End(xlDown))
- A.Offset(, 3) = A.Offset(, 2) + d(i & "," & A & "," & A.Offset(, 1))
- d.Remove i & "," & A & "," & A.Offset(, 1)
- Next
- End With
- Next
- For Each ky In d.keys
- ar = Split(ky, ",")
- With Sheets(CInt(ar(0)))
- Set A = .[A1].End(xlDown).Offset(1, 0)
- A = ar(1): A.Offset(, 1) = ar(2): A.Offset(, 3) = d(ky)
- End With
- Next
- End Sub
複製代碼 |
|