Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 创建自定义函数以计算列中的唯一值_Vba_Excel_Excel 2010 - Fatal编程技术网

Vba 创建自定义函数以计算列中的唯一值

Vba 创建自定义函数以计算列中的唯一值,vba,excel,excel-2010,Vba,Excel,Excel 2010,我对excel VBA非常陌生。我想创建一个自定义函数=UniqueJ2:J234,这样它就屏蔽了执行此任务的真正函数集,即=SUM1/COUNTIFJ2:J234,J2:J234。下面是我的代码: Function Unique(Var As range) Unique = Application.SUM(1 / (Application.COUNTIF(Var, Var))) End Function 谢谢您的自定义项将不起作用,因为原始公式是使用ctrl-shift-enter

我对excel VBA非常陌生。我想创建一个自定义函数=UniqueJ2:J234,这样它就屏蔽了执行此任务的真正函数集,即=SUM1/COUNTIFJ2:J234,J2:J234。下面是我的代码:

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

谢谢

您的自定义项将不起作用,因为原始公式是使用ctrl-shift-enter输入的数组公式,并且没有简单的方法将其输入到自定义项中

我建议使用collection对象的功能,以防止输入具有重复键的项目:

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

我尝试了不同的修改,但没有结果。我得到的是价值!。如果有人可以帮忙,请使用Application.power…,-1而不是1/。。。您也可以在应用程序中使用,以避免重复。到目前为止,您是否通过使用任何建议获得了任何改进或解决方案?