为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

萧十郎 2019-08-02 07:02:38
仅使用公式在Excel中获取唯一值您知道Excel中用公式“计算”唯一值列表的方法吗?例如:范围包含值。"red", "blue", "red", "green", "blue", "black"我希望结果是"red, "blue", "green", "black"+最后还有两个空白细胞。我已经找到了一种使用小型或大型组合索引获得计算排序列表的方法,但我也希望使用这种计算排序,而不使用VBA。
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

这是个老掉牙的问题,有一些解决办法,但我想出了办法更短更简单的公式比我遇到的任何其他人都要好,这对任何路过的人来说都是有用的。

我已经命名了颜色列表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.

用示例数据说明{“红色”;“蓝色”;“红色”;“绿色”;“蓝色”;“黑色”}:

  1. COUNTIF(Colors,"<"&Colors)

    返回一个数组(#1),其值的计数比数据{4;1;4;3;1;0}中的每个项都小(黑色=0项,蓝色=1项,红色=4项)。这可以转换为

    排序值

    每个项目。
  2. 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}中,它表示“黑色”,所有出现的“蓝色”都已经存在。
  3. 这个

    SUM

    返回

    K-

    排序值,通过计数已经出现的所有较小的值(数组#2的和)。
  4. MATCH

    查找k-th排序值的第一个索引(数组#1中的索引)。
  5. 这个

    IFERROR

    只是为了隐藏

    #N/A

    当排序的唯一列表完成时,底部单元格中出现错误。

要知道您有多少独特的项目,您可以使用这个正则公式:

=SUM(IF(FREQUENCY(COUNTIF(Colors,"<"&Colors),COUNTIF(Colors,"<"&Colors)),1))




查看完整回答
反对 回复 2019-08-03
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

我在VBA中为您创建了一个函数,所以您现在可以一种简单的方式来完成这个任务。
创建一个VBA代码模块(宏),如您在本教程.

  1. 压榨

    ALT+F11

  2. 点击到

    Module

    在……里面

    Insert.

  3. 粘贴代码。
  4. 如果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这是一个普通的Excel范围。例如:A$1:A$28H$8:H$30.

条件

  • 这个

    range

    一定是列。
  • 调用函数的第一个单元格必须位于

    range

    开始吧。

正规案件

  1. 输入数据和调用函数。
  2. 种下它。
  3. 哇哦。

空细胞箱

它工作在有空单元格的列中。此外,如果将单元格(调用函数)翻转到不应该输出的位置,则函数将不输出(而不是错误),正如我在前面示例的“2.Growth”部分中所做的那样。



查看完整回答
反对 回复 2019-08-03
  • 3 回答
  • 0 关注
  • 396 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信