Pat*_*rez 75 excel excel-formula
您是否知道在Excel中通过公式"计算"唯一值列表的方法?
例如:一个范围包含的值"red","blue","red","green","blue",
,我想有作为的结果,,,+ 2,最终其他空白单元格. "black""red"blue""green""black"
我已经找到了一种方法来使用SMALL或LARGE结合INDEX来获得计算出的排序列表,但是我想在不使用VBA的情况下进行这种计算排序.
Dre*_*man 53
好的,我有两个想法给你.希望他们中的一个能让你到达你需要去的地方.请注意,第一个忽略了作为公式执行此操作的请求,因为该解决方案并不漂亮.我想我确保简单的方法对你不起作用; ^).
此解决方案将适用于以下警告:
以下是解决方案的摘要:
这是一个循序渐进的例子:
希望这可以帮助....
deP*_*kin 29
这是一个古老的,有一些解决方案,但我想出了一个比我遇到的任何其他更短更简单的公式,它可能对任何路过的人都有用.
我已经命名了颜色列表Colors(A2:A7),并且放在单元格C2中的数组公式是这个(固定的):
=IFERROR(INDEX(Colors,MATCH(SUM(COUNTIF(C$1:C1,Colors)),COUNTIF(Colors,"<"&Colors),0)),"")
Run Code Online (Sandbox Code Playgroud)
用于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)对于已在排序结果中的每个数据项,返回一个数组(#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))
Run Code Online (Sandbox Code Playgroud)
tot*_*dli 22
我为您在VBA中创建了一个函数,因此您现在可以轻松地完成此操作.
如本教程中所示,创建一个VBA代码模块(宏).
Module在Insert.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
Run Code Online (Sandbox Code Playgroud)
只需进入=listUnique(range)一个单元格.唯一的参数是range普通的Excel范围.例如:A$1:A$28或H$8:H$30.
range必须是列.range启动的同一行.


它适用于包含空单元格的列.如果你将单元格(调用函数)覆盖到应该没有输出的位置,函数也不会输出任何内容(不是错误),就像我在上一个例子中的"2. Grow it"部分所做的那样.

yoy*_*oyo 17
一种迂回的方式是将Excel电子表格加载到Google电子表格中,使用Google的UNIQUE(范围)功能 - 这完全符合您的要求 - 然后将Google电子表格保存回Excel格式.
我承认这对Excel用户来说不是一个可行的解决方案,但这种方法对于任何想要该功能且能够使用Google电子表格的人都很有用.
| 归档时间: |
|
| 查看次数: |
404782 次 |
| 最近记录: |