- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 85
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-4-9
               
|
17#
發表於 2013-3-11 22:41
| 只看該作者
回復 16# b9208 - Sub ex()
- Dim A As Range, C As Range, Rng As Range, MyRng As Range, m$
- Set d = CreateObject("Scripting.Dictionary")
- Set d1 = CreateObject("Scripting.Dictionary")
- With Sheets("單位")
- Set Rng = .[D3:G3]
- With Sheets("資料")
- For Each A In .Range(.[F6], .[F6].End(xlDown))
- m = A.Offset(, -3) & A & A.Offset(, 2)
- If d(m) <= A.Offset(, 5).Value Then d(m) = A.Offset(, 5).Value '記住最大值
- d1(m) = d1(m) + 1 '計算個數
- Set C = Rng.Find(A, lookat:=xlWhole)
- If Not C Is Nothing Then
- If MyRng Is Nothing Then Set MyRng = A.Offset(, -5).Resize(, 13) Else Set MyRng = Union(MyRng, A.Offset(, -5).Resize(, 13))
- End If
- Next
- End With
- .Range("A19").CurrentRegion.Interior.ColorIndex = 0
- If Not MyRng Is Nothing Then MyRng.Copy .[A20] Else MsgBox "無符合資料": Exit Sub
- .Range("A19").CurrentRegion.Sort key1:=.[K19], Header:=xlYes
- .Range("A19").CurrentRegion.Sort key1:=.[F19], key2:=.[C19], key3:=.[H19], Header:=xlYes
- For Each A In .Range(.[F20], .[F20].End(xlDown))
- m = A.Offset(, -3) & A & A.Offset(, 2)
- If d1(m) > 1 Then A.Offset(, -5).Resize(, 13).Interior.ColorIndex = 6 '有重複
- If A.Offset(, 5) <> d(m) Then A.Offset(, 5) = 0 '不等於最大值就歸零
- Next
- End With
- End Sub
複製代碼 |
|