在Excel公式中使用MATCH

我有一个如何使用MATCH的问题。

最初,当我想知道“我的数值范围内有多less独特/独特的物品”时,这一切都开始了。 经过一番研究,这个公式显然做得很好:

=SUM(IF(FREQUENCY(MATCH(B2:B10,B2:B10,0),MATCH(B2:B10,B2:B10,0))>0,1)) 

其中“计算单元格B2:B10(不得包含空白单元格)中的唯一文本和数字值的数量”

我想要更好地理解这个公式,所以我复制出这个部分并粘贴到其他地方:

 MATCH(B2:B10,B2:B10,0) 

这个评估为“#Value!”。

在这种情况下,excel是如何完成这项工作的? searchMATCH的工作方式并没有给我太多的帮助,因为这些例子需要在第一个参数中加上“值”而不是“范围”。

任何对此的见解将非常感谢!

供参考 – 对于那些有兴趣获得第一个公式: https : //support.office.com/zh-cn/article/Count-unique-values-among-duplicates-8d9a69b3-b867-490e-82e0-a929fbc1e273?CorrelationId= 4331e8f6-e4d5-4210-9b21-3ed53ee45a6d&UI = EN-US&RS = EN-US&AD = US

是的 – 但绝大多数function可以运行,不只是一个,而且还有一系列的价值。

在几乎所有情况下,这涉及到将公式作为数组公式input (即使用CTRL + SHIFT + ENTER),尽pipe某些函数(包括FREQUENCY)具有在没有该按键组合的情况下强制返回数组的固有能力。

这就解释了你的#VALUE! 错误:MATCH构造不会自行评估传递给它的数组中的所有元素:它需要一些外部函数来强制和处理返回数组的结果,这在这里由FREQUENCYfunction。

事实上,这个build设并不是最有效率的,因为重复MATCH条款并不是必要的,这意味着这个build筑的资源过于庞大。 比较器(> 0)也不是绝对必要的。 更好的是简单的:

=SUM(IF(FREQUENCY(MATCH(B2:B10,B2:B10,0),ROW(B2:B10)-MIN(ROW(B2:B10))+1),1))

因为 – 特别是在更大的范围内 – 尽pipe额外的函数调用,构造:

ROW(B2:B10)-MIN(ROW(B2:B10))+1

可能比计算线性search要快得多。

问候

PS如果你还想要解释这个build筑是如何工作的,请告诉我。