仅使用公式在Excel中获取唯一值您知道Excel中用公式“计算”唯一值列表的方法吗?例如:范围包含值。"red", "blue", "red", "green", "blue", "black"我希望结果是"red, "blue", "green", "black"+最后还有两个空白细胞。我已经找到了一种使用小型或大型组合索引获得计算排序列表的方法,但我也希望使用这种计算排序,而不使用VBA。
3 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
Colors
=IFERROR(INDEX(Colors,MATCH(SUM(COUNTIF(C$1:C1,Colors)),COUNTIF(Colors,"<"&Colors),0)),"")
Ctrl+Shift+Enter
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))
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
解
压榨 ALT +F11 点击到 Module
在……里面 Insert
.粘贴代码。 如果Excel说您的文件格式不是宏友好的,请将其保存为 Excel Macro-Enabled
在……里面 Save As
.
源代码
Function listUnique(rng As Range) As Variant Dim row As Range Dim elements() As String Dim elementSize As Integer Dim newElement As Boolean Dim i As Integer Dim distance As Integer Dim result As String elementSize = 0 newElement = True For Each row In rng.Rows If row.Value <> "" Then newElement = True For i = 1 To elementSize Step 1 If elements(i - 1) = row.Value Then newElement = False End If Next i If newElement Then elementSize = elementSize + 1 ReDim Preserve elements(elementSize - 1) elements(elementSize - 1) = row.Value End If End If Next distance = Range(Application.Caller.Address).row - rng.row If distance < elementSize Then result = elements(distance) listUnique = result Else listUnique = "" End If End Function
使用
=listUnique(range)
range
A$1:A$28
H$8:H$30
.
条件
这个 range
一定是列。 调用函数的第一个单元格必须位于 range
开始吧。
例
正规案件
输入数据和调用函数。 种下它。 哇哦。
空细胞箱
- 3 回答
- 0 关注
- 396 浏览
相关问题推荐
添加回答
举报
0/150
提交
取消