你知道在Excel中通过公式“计算”一组唯一值的方法吗?
例如:垂直范围包含值"red"
,"blue"
,"red"
,"green"
,"blue"
,"black"
我希望最终有两个"red
,"blue"
,"green"
,"black"
+的空单元格。
我已经找到了一种使用SMALL或LARGE结合索引来获得计算排序列表的方法,但我也希望使用这种计算排序,而不使用VBA。
发布于 2015-05-11 12:09:36
这是一个老生常谈的问题,有一些解决方案,但我想出了一个比我遇到的任何其他公式更短、更简单的公式,它可能对任何路过的人都有用。
我已经将颜色列表命名为Colors
(A2:A7),并且数组公式 put in cell C2是这样(fixed):
=IFERROR(INDEX(Colors,MATCH(SUM(COUNTIF(C$1:C1,Colors)),COUNTIF(Colors,"<"&Colors),0)),"")
使用Ctrl+Shift+Enter
在 C2 中输入公式,然后将C2复制到C3:C7。
示例数据说明{"red";"blue";"red";"green";"blue";"black"}:
COUNTIF(Colors,"<"&Colors)
返回一个数组(#1),其中的值计数小于数据{4;1;4;3;1;0} (black=0项更小,blue=1项,red=4项)。这可以转换为一个排序值 for each item.COUNTIF(C$1:C...,Colors)
返回一个数组(#2),对于已经存在于排序结果中的每个数据项,返回1。在C2中,它返回{0;0;0;0;0;0};在C3中,它返回{0;0;0;0;0;1},因为"black“在排序中排在第一,在数据中排在最后。在C4 {0;1;0;0;1;1}中,它表示“黑色”,并且所有出现的“蓝色”都已经存在。SUM
通过对已经出现的所有较小的值进行计数,返回第k个排序值(数组#2).MATCH
的总和查找第k个排序值的第一个索引(索引在数组#1中)。IFERROR
仅用于在排序的唯一列表完成时隐藏底部单元格中的#N/A
错误。要知道你有多少个独特的项目,你可以使用这个常规公式:
=SUM(IF(FREQUENCY(COUNTIF(Colors,"<"&Colors),COUNTIF(Colors,"<"&Colors)),1))
发布于 2009-09-17 01:04:31
好吧,我有两个想法给你。希望其中的一个能带你去你想去的地方。请注意,第一个解决方案忽略了作为公式执行此操作的请求,因为该解决方案并不美观。我想我要确保这个简单的方法真的不适合你;^)。
使用高级过滤器命令
<代码>H19单击确定<代码>H210<代码>H111您完成了。在原地或在新位置创建唯一列表。请注意,您可以记录此操作以创建一行VBA脚本来执行此操作,然后可以将其推广到其他情况下为您工作(例如,不需要上面列出的手动步骤)。
使用公式(注意,我是在Locksfree解决方案上构建的,以得到一个没有漏洞的列表)
此解决方案将与以下注意事项一起使用:
以下是解决方案的摘要:
下面是一个循序渐进的例子:
行
索引在D列中,创建新的唯一列表:
希望这能帮上忙。
发布于 2013-06-13 02:29:08
一种间接的方法是将Excel电子表格加载到Google电子表格中,使用Google独特的(范围)函数-它可以做您想做的事情-然后将Google电子表格保存回Excel格式。
我承认这对Excel用户来说不是一个可行的解决方案,但对于任何想要使用Google电子表格功能的人来说,这种方法都很有用。
https://stackoverflow.com/questions/1429899
复制相似问题