|
本帖最后由 cbg2008 于 2012-3-6 17:51 编辑
这个是典型的字典解法
'声明函数名与参数,参数不确定
'第一参数为必须参数,其后为可选参数。参数可以是区域、文本、常量数组,及表达式
Function only(Item As Long, ParamArray rng()) As String
With CreateObject("scripting.dictionary") '创建字典引用
On Error Resume Next '防错
Dim arr, cell As Range, cell2 As Variant, arr2 '声明变量
For Each arr In rng '遍历参数rng
If TypeName(arr) = "Range" Then '如果参数是单元格引用
For Each cell In arr '遍历所有单元格
If Len(cell) > 0 Then .Add CStr(cell.Text), "" '如果单元格非空,则加入字典中
Next cell
ElseIf TypeName(arr) = "Variant()" Then '如果是数组
For Each cell2 In arr '遍历数组的每一个元素
If Len(cell2) > 0 Then .Add CStr(cell2), "" '添加到字典中
Next cell2
ElseIf TypeName(arr) = "Error" Then '如果错误值
'完全忽略
Else '如果是其它值
If Len(arr) > 0 Then .Add CStr(arr), "" '如果非空,则加入字典中
End If
Next
arr2 = .keys '输出字典的关键字
only = arr2(Item - 1) '取值,赋予函数作为结果
End With
End Function
|
|