從多個儲存格區域或陣列常數中提取不重複值集合,支援索引取值與計數。
Function MergerRepeat(Index As Integer, ParamArray arglist() As Variant)
' 時間:2008-12-26
' 功能:取得指定區域或陣列的不重複集合或單一值
' 參數:Index < 1 回傳集合;1~Count 回傳第 N 個不重複值;>Count 回傳空值
' arglist:可為 Range 物件或陣列常數
Dim NotRepeat As Object, tStr As String
Set NotRepeat = CreateObject("Scripting.Dictionary")
For Each arg In arglist
For Each rRan In arg
If TypeName(rRan) = "Range" Then
If rRan.Value <> "" Then NotRepeat(rRan.Value) = 0
Else
NotRepeat(rRan) = 0
End If
Next
Next
If Index < 1 Then
MergerRepeat = NotRepeat.keys
ElseIf Index <= NotRepeat.Count Then
Dim arr: arr = NotRepeat.keys
MergerRepeat = arr(Index - 1)
Else
MergerRepeat = ""
End If
End Function
=COUNTA(MergerRepeat(0, A1:A10))=MergerRepeat(ROW(), $A$1:$A$10) 向下填充。=COUNTA(MergerRepeat(0, A1:A6, {"abc","Excel吧",1,"excelba.com"}, C2:C6))Scripting.Dictionary 物件天然去重特性(Key 唯一)。ParamArray 允許傳入不定數量參數(區域、常數混合)。rRan.Value <> "")。