Excel 如何使用经过数据验证的单元格计算唯一条目

Excel 如何使用经过数据验证的单元格计算唯一条目,excel,vba,Excel,Vba,我使用userform从数据验证列表输入excel单元格。意思在userform上,我开始键入一个位置,它填充userform,然后将数据放入一个单元格。现在的问题是…我如何在excel计数中有该列,并在不添加重复值的情况下为我提供位置数。我可以在excel中的单元格中插入函数,还是需要排序宏。有什么建议我可以得到一个函数来确定不同位置的数量吗? 我搜索过,我不确定以前是否有人问过这个问题。非常感谢您的时间。根据您的数据大小,这可能需要一些时间来计算,但此数组公式将为您提供一个范围内的唯一条目数

我使用userform从数据验证列表输入excel单元格。意思在userform上,我开始键入一个位置,它填充userform,然后将数据放入一个单元格。现在的问题是…我如何在excel计数中有该列,并在不添加重复值的情况下为我提供位置数。我可以在excel中的单元格中插入函数,还是需要排序宏。有什么建议我可以得到一个函数来确定不同位置的数量吗?
我搜索过,我不确定以前是否有人问过这个问题。非常感谢您的时间。

根据您的数据大小,这可能需要一些时间来计算,但此数组公式将为您提供一个范围内的唯一条目数

=SUM(1/COUNTIF(A1:A10,A1:A10))
其中A1:A10当然是包含数据的实际范围。必须使用ctrl+shift+enter确认公式。或者,在VBA中,它是

Range.FormulaArray = "=SUM(1/COUNTIF(A1:A10,A1:A10))"
编辑:要计算空单元格,请尝试以下操作:

=SUM(IFERROR(1/IF(NOT(ISBLANK(A1:A10)),COUNTIF(A1:A10,A1:A10)),""))

再次作为数组公式输入。

由于这些是从数据验证列表中填充的,所以发生了一些情况……表示可被零除的错误。还有什么我需要找的吗?哦,一列最多可以有38行,所以不需要计算太多。如果一列中的单元格数量对于不同的工作表是不同的呢?如果列中的单元格数为空,则得到可被零整除的错误。这个公式只有在所有单元格都有一个值的情况下才起作用吗?我实际上没有意识到这一点,但是是的,如果有空单元格,这个公式就不起作用了。使用可解释空单元格的替代项进行编辑。