仅使用公式在Excel中获取唯一值

仅使用公式在Excel中获取唯一值

您知道Excel中用公式“计算”唯一值列表的方法吗?

例如:范围包含值。"red""blue""red""green""blue""black"
我希望结果是"red"blue""green""black"+最后还有两个空白细胞。

我已经找到了一种使用小型或大型组合索引获得计算排序列表的方法,但我也希望使用这种计算排序,而不使用VBA。


萧十郎
浏览 397回答 3
3回答

一只名叫tom的猫

这是个老掉牙的问题,有一些解决办法,但我想出了办法更短更简单的公式比我遇到的任何其他人都要好,这对任何路过的人来说都是有用的。我已经命名了颜色列表Colors(A2:A7)阵列公式放入细胞C2这是(固定):=IFERROR(INDEX(Colors,MATCH(SUM(COUNTIF(C$1:C1,Colors)),COUNTIF(Colors,"<"&Colors),0)),"")使用Ctrl+Shift+Enter中输入公式C2,然后复制C2到C3:C7.用示例数据说明{“红色”;“蓝色”;“红色”;“绿色”;“蓝色”;“黑色”}:COUNTIF(Colors,"<"&Colors)返回一个数组(#1),其值的计数比数据{4;1;4;3;1;0}中的每个项都小(黑色=0项,蓝色=1项,红色=4项)。这可以转换为排序值每个项目。COUNTIF(C$1:C...,Colors)为已排序结果中的每个数据项返回带有1的数组(#2)。在C2中,它返回{0;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-th排序值的第一个索引(数组#1中的索引)。这个IFERROR只是为了隐藏#N/A当排序的唯一列表完成时,底部单元格中出现错误。要知道您有多少独特的项目,您可以使用这个正则公式:=SUM(IF(FREQUENCY(COUNTIF(Colors,"<"&Colors),COUNTIF(Colors,"<"&Colors)),1))

一只萌萌小番薯

解我在VBA中为您创建了一个函数,所以您现在可以一种简单的方式来完成这个任务。创建一个VBA代码模块(宏),如您在本教程.压榨ALT+F11点击到Module在……里面Insert.粘贴代码。如果Excel说您的文件格式不是宏友好的,请将其保存为Excel Macro-Enabled在……里面Save As.源代码Function&nbsp;listUnique(rng&nbsp;As&nbsp;Range)&nbsp;As&nbsp;Variant &nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;row&nbsp;As&nbsp;Range &nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;elements()&nbsp;As&nbsp;String &nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;elementSize&nbsp;As&nbsp;Integer &nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;newElement&nbsp;As&nbsp;Boolean &nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;i&nbsp;As&nbsp;Integer &nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;distance&nbsp;As&nbsp;Integer &nbsp;&nbsp;&nbsp;&nbsp;Dim&nbsp;result&nbsp;As&nbsp;String &nbsp;&nbsp;&nbsp;&nbsp;elementSize&nbsp;=&nbsp;0 &nbsp;&nbsp;&nbsp;&nbsp;newElement&nbsp;=&nbsp;True &nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;Each&nbsp;row&nbsp;In&nbsp;rng.Rows &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;row.Value&nbsp;<>&nbsp;""&nbsp;Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newElement&nbsp;=&nbsp;True &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;i&nbsp;=&nbsp;1&nbsp;To&nbsp;elementSize&nbsp;Step&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;elements(i&nbsp;-&nbsp;1)&nbsp;=&nbsp;row.Value&nbsp;Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newElement&nbsp;=&nbsp;False &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Next&nbsp;i &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;newElement&nbsp;Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elementSize&nbsp;=&nbsp;elementSize&nbsp;+&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReDim&nbsp;Preserve&nbsp;elements(elementSize&nbsp;-&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elements(elementSize&nbsp;-&nbsp;1)&nbsp;=&nbsp;row.Value &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If &nbsp;&nbsp;&nbsp;&nbsp;Next &nbsp;&nbsp;&nbsp;&nbsp;distance&nbsp;=&nbsp;Range(Application.Caller.Address).row&nbsp;-&nbsp;rng.row &nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;distance&nbsp;<&nbsp;elementSize&nbsp;Then &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;elements(distance) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listUnique&nbsp;=&nbsp;result &nbsp;&nbsp;&nbsp;&nbsp;Else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listUnique&nbsp;=&nbsp;"" &nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;If End&nbsp;Function使用只要进去=listUnique(range)去牢房。唯一的参数是range这是一个普通的Excel范围。例如:A$1:A$28或H$8:H$30.条件这个range一定是列。调用函数的第一个单元格必须位于range开始吧。例正规案件输入数据和调用函数。种下它。哇哦。空细胞箱它工作在有空单元格的列中。此外,如果将单元格(调用函数)翻转到不应该输出的位置,则函数将不输出(而不是错误),正如我在前面示例的“2.Growth”部分中所做的那样。
打开App,查看更多内容
随时随地看视频慕课网APP