如何求各编号对应的值中,非重复值的数量?果果大佬高阶技巧处女秀
'定义函数名为“非重计数”,定义函数有两个参数,分别为x和y,其中x表示要匹配的单元格,本例中x为D2单元格,y表示一个两列的区域,其中第一列负责和x进行匹配,第二列进行非重计数,本例中y为$A$2:$B$15单元格区域
Public Function非重计数(x As Range,y As Range)
'声明数组arry和zd(名称随便起的,arry是数组类型,用来装y的值,zd是字典的首字母)
Dim arry(),zd
'将参数y所表示的单元格区域$A$2:$B$15的值赋给二维数组arry
arry=y
'定义字典的固定语句
Set zd=CreateObject("Scripting.Dictionary")
'使用for循环遍历匹配,UBound(arry)表示arry长度,即14
For i=1 To UBound(arry)
'如果数组arry的第一列(即A列的单元格)的值和D2单元格的值相同,那么
If arry(i,1)=x.Value Then
'字典赋值,赋值过程为zd("1")="",zd("1")="",zd("1")="",zd("2")="",zd("1")="",zd("3")="",zd("4")="",结果是给1,2,3,4这四个名称赋了值,即zd下面名称的数量为4
zd(arry(i,2))=""
End If
Next
'将zd的名称数量返回,作为函数的运算结果
非重计数=zd.Count
End Function
赞 (0)