- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
22#
發表於 2013-4-30 22:53
| 只看該作者
回復 17# gong
感謝 gong 大大, 又學到一種方法.
不過用動態範圍要比用 MAX 更有效率.
數據在A欄
加輔助欄I, J
I2 =COUNTIF(OFFSET($A2,,,COUNTA(A:A)-1,),A2)
J1 = 0
J2 =MATCH(1,OFFSET($I$2,J1,,COUNTA(A:A)-1,),0)+J1
下拉
不重覆數據
K2 = IFERROR(INDEX(A:A,J2+1),"")
下拉
====================================
用字典法寫了VBA Function UNIQUEp
N2=IFERROR(UNIQUEp(A:A,ROW()),"")
下拉
不知哪位大大可否寫一段code來計算一下各種方法所需的計算時間- Function UNIQUEp(source As Range, num As Integer)
- Dim newArray, myArray As Variant
- rows_num = source.Rows.Count
- 'myArray = Range(Cells(source.Row, source.Column), Cells(source.Row + rows_num - 1, source.Column)).Value
- myArray = Sheets(source.Parent.Name).Range(source.Address).Value
-
- Set Dic = CreateObject("scripting.dictionary")
- For i = 1 To rows_num
- If myArray(i, 1) <> "" Then
- Dic((myArray(i, 1))) = ""
- End If
- Next
-
- arr = Dic.Keys
-
- UNIQUEp = arr(num - 1)
- End Function
複製代碼
不重複清單 Sonny.rar (20.05 KB)
|
|