一列中唯一值的计数,以速度为考虑因素

是否有更快的方法来计算列中的唯一值? 我的公式的第二次迭代使用速度的范围,但收到#NAME? 错误。 谢谢。

我已经使用下面的公式来计算第5列中唯一的IP地址的数量。 – 由jeeped在msdn上解释 –

ActiveCell.Formula = "=sumproduct((ipsheet!C[5]<>"""")/ipsheet(ACAS!C[5],ipsheet!C[5]&""""))" 

论坛工作,但它真的很慢,超过5000+条目。 我曾尝试实施与之相同的公式

 With Sheets("ipsheet") 'create range for ip addresses Set rngOfFindings = .Range(.Range("e1"), .Range("e1").End(xlDown)) End With "=sumproduct((rngOfFindings<>"""")/countif(rngOfFindings,rngOfFindings&""""))" 

结果是#NAME?

将列中的数据命名为命名范围。

保存你的文件。

转到数据>从其他来源>从Microsoft Query

selectExcel文件,然后导航到您的Excel文件。 打开它,select您的范围,然后继续并在Microsoft Query中编辑。

点击SQLbutton,然后input

 SELECT COUNT(DISTINCT rangename.columnheader) FROM rangename rangename 

对于大范围这个公式是更长,但更快

=SUM(IF(FREQUENCY(IF(range<>"",MATCH(range,range,0)),ROW(range)-MIN(ROW(range))),1))

CTRL + SHIFT + ENTER确认