我对如何使用MATCH有疑问。
这最初都是在我想找出"我的价值范围中有多少不同/独特的物品时开始的#34;。经过一番研究,这个公式显然很好地完成了这项工作:
=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如何首先完成工作?搜索MATCH如何工作并没有告诉我太多,因为这些例子需要一个"值"而不是"范围"被置于第一个论点......
对此的任何见解都将非常感激!
仅供参考 - 对于那些有兴趣获得第一个公式的人: https://support.office.com/en-us/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
答案 0 :(得分:1)
是的 - 但绝大多数功能可以操作,而不仅仅是一个,还有一系列值。
在几乎所有情况下,这都涉及将公式作为数组公式(即使用CTRL + SHIFT + ENTER)提交,尽管某些函数(包括FREQUENCY)具有强制返回数组的先天能力没有这个按键组合。
这解释了你的#VALUE!错误:MATCH构造不会,自己,评估传递给它的数组中的所有元素:它需要一些外部函数来强制和处理返回数组的结果,这是通过FREQUENCY函数实现的。
实际上构造不是最有效的:重复 bins_array 的MATCH子句是不必要的,并且意味着构造过度耗费资源。比较器(> 0)也不是必需的。更好的是:
=SUM(IF(FREQUENCY(MATCH(B2:B10,B2:B10,0),ROW(B2:B10)-MIN(ROW(B2:B10))+1),1))
因为 - 尤其是在更大的范围内 - 尽管有额外的函数调用,但结构如下:
ROW(B2:B10)-MIN(ROW(B2:B10))+1
计算可能比涉及线性搜索的计算要快得多。
此致
P.S。如果您想要解释这个结构是如何工作的,请告诉我。