- 帖子
- 231
- 主題
- 55
- 精華
- 0
- 積分
- 293
- 點名
- 0
- 作業系統
- winxp
- 軟體版本
- office2003
- 閱讀權限
- 20
- 性別
- 男
- 來自
- KEELUNG
- 註冊時間
- 2010-7-24
- 最後登錄
- 2018-8-28
|
本帖最後由 dechiuan999 於 2011-9-4 19:41 編輯
你好:
請問你的計算基礎為何呢?
如果以0002出現不重覆次數為=2時,
想必是以A及B合併為KEY值,
0002A1 一次
0002B1 三次,不重覆次數為二
那0001應為1次才合理。
0001如何計算不重覆次數為=3呢?
如果上述推理正確時,請試試下列語法
Sub aa()
'請先由工具列引用Microsoft Scripting Rungtime
Dim mDic As Scripting.Dictionary
Dim mSht As Worksheet
Dim mRng As Range, mRng1 As Range
Dim E As Range
Dim mTmp, mVal
Dim i%
Set mDic = CreateObject("scripting.dictionary")
Set mSht = Worksheets(1)
With mSht
Set mRng = .Range("a1", Range("a" & .Rows.Count).End(xlUp))
For Each E In mRng
If Not E.Value = Empty Then
If Not mDic.Exists(E.Value & "_" & E.Offset(, 1).Value) Then
mDic(E.Value & "_" & E.Offset(, 1).Value) = 1
Else
mDic(E.Value & "_" & E.Offset(, 1).Value) = mDic(E.Value & "_" & E.Offset(, 1).Value) + 1
End If
End If
Next
For Each E In mRng
E.Offset(, 3).Value = E.Value & "_" & E.Offset(, 1).Value
Next
mKey = mDic.Keys
For i = LBound(mKey) To UBound(mKey)
mVal = mDic(mKey(i))
If mVal > 1 Then
Set mRng1 = mSht.Columns(4).Find(what:=mKey(i), lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext)
If Not mRng1 Is Nothing Then
mRng1.Offset(, -1).Value = mVal - 1
End If
End If
Next
.Columns(4).ClearContents
End With
End Sub |
|