2014-09-28 96 views
0

我对excel VBA很新颖。我想创建一个自定义函数= Unique(J2:J234),这样它就可以屏蔽执行这个工作的真正函数组,即= SUM(1/COUNTIF(J2:J234,J2:J234))。这是我下面的代码:创建自定义函数来计算列中的唯一值

Function Unique(Var As range) 
    Unique = Application.SUM(1/(Application.COUNTIF(Var, Var))) 
End Function 

感谢

+0

我曾尝试没有结果不同的修改是什么我得到#VALUE !.如果有人能帮助,请高兴。 – user1841445 2014-09-28 10:33:19

+0

使用'Application.power(...,-1)'而不是1/...也可以使用'with application'来避免重复。 – 2014-09-28 15:17:20

+0

到目前为止,您是否有任何改进或解决方案使用任何建议? – ZAT 2014-09-30 07:37:15

回答

0

您的UDF将无法工作,因为原来的公式是数组公式(使用Ctrl移进进,并有进入的是没有简单的方法进入UDF

我会建议使用集合对象,防止重复键进入项目的特征:

Option Explicit 
Function Unique(Var As Range) 
    Dim V As Variant 
    Dim C As Collection 
    Dim I As Long 
V = Var 
Set C = New Collection 

On Error Resume Next 
For I = 1 To UBound(V, 1) 
    C.Add V(I, 1), CStr(V(I, 1)) 
Next I 
On Error GoTo 0 

Unique = C.Count 

End Function 
相关问题