|
本帖最后由 WYS67 于 2019-3-31 14:42 编辑
EXCEL 提取不重复数据的函数公式又长,数据量大时运算速度还很慢。在网上百度了半天,才找到了这个自定义函数BCFSJ。如截图所示:A5:A30是数据源。在B5里输入公式=BCFSJ(ROW(A1),$A$5:$A$30) 下拖,即可显示让B5:B30的不重复数据提取结果。
但美中不足的是公式略显拖沓。如果修改为区域数组公式,选定B5:B30,输入{ =BCFSJ($A$5:$A$30) 可以显示提取结果,一看就干净多了!
希望高手大神们写个简洁明快、高效便捷的自定义函数。
提取不重复数据的自定义函数.zip
(14.22 KB, 下载次数: 12)
附注:改代码
BCFSJ =NotRepeat.keys 为 BCFSJ=Application.TRANSPOSE(NotRepeat.keys)后,在B5:B1000 输入区域数组公式{=BCFSJ(0,$A$5:$A$1000),B19以下会显示#N/A错误。代码如下:
Function BCFSJ(Index As Integer, ParamArray arglist() As Variant)
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
BCFSJ =Application.TRANSPOSE(NotRepeat.keys)
ElseIf Index <= NotRepeat.Count Then
arr = NotRepeat.keys
BCFSJ = arr(Index - 1)
Else
BCFSJ = ""
End If
End Function
请问老师们,怎样屏蔽#N/A【没有数据】错误为空白?
|
|