首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel如何计算重复项的动态值

Excel如何计算重复项的动态值
EN

Stack Overflow用户
提问于 2020-04-04 16:39:33
回答 3查看 42关注 0票数 0

我似乎在寻找解决方案上有问题,

我想计算一行中的重复项,该行有100列。我只想计算一下这一行有多少重复项。

例如,

代码语言:javascript
运行
复制
1,2,3,1,4,9,2,9,1,4

我只想看看同一组数字出现了多少次。

代码语言:javascript
运行
复制
1 = 3
2 = 2 
3 = 0
4 = 2
9 = 2

例如,3 + 2 + 0 + 2 + 2 = 9

此行有9个重复项。也就是说,相同的值被多次显示。但是,该值是动态的。

EN

回答 3

Stack Overflow用户

发布于 2020-04-04 18:32:18

下面的VBA函数是一个UDF,这意味着它类似于一个普通的Excel工作表函数,但它的执行完全是为了做你想做的事情。将其安装在标准代码模块中。

代码语言:javascript
运行
复制
Function CountDuplicates(Rng As Range) As Integer
' set a Reference to "Microsoft Scripting Runtime"

    Dim Fun As Integer                      ' function return value
    Dim Uniques As Scripting.Dictionary     ' list of occurrences
    Dim Arr As Variant                      ' array of all values
    Dim C As Long

    Set Uniques = CreateObject("Scripting.Dictionary")
    Arr = Rng.Value
    With Uniques
        For C = 1 To UBound(Arr, 2)
            If Not IsEmpty(Arr(1, C)) Then
                If .Exists(Arr(1, C)) Then
                    .Item(Arr(1, C)) = .Item(Arr(1, C)) + 1
                Else
                    .Add Arr(1, C), 0
                End If
            End If
        Next C

        For C = 0 To .Count - 1
            Fun = Fun + .Items(C)
        Next C
    End With

    CountDuplicates = Fun
End Function

标准代码模块是必须添加到项目中的模块。它的默认名称将类似于Module1,但您可以将其更改为任何您喜欢的名称(错误的语法名称将被拒绝)。例如,通过在任意单元格中输入函数调用来调用工作表中的函数。

代码语言:javascript
运行
复制
= CountDuplicates(A2:DD2)

此函数将返回在定义的范围内计数的所有重复数,不包括唯一值。看看代码。当第一次找到一个项目时,会对其记录值为0。此后,每次再次找到它时,都会将已找到的递归次数加1。最后,将所有值相加,以返回总计数。此方法确保所有第一次出现的次数都将计入0(表示不计入)。返回的合计中只包含重复次数。

与其他Excel函数一样,结果将出现在包含公式的单元格中。您可以像复制其他公式一样复制该公式,这意味着上面的原始公式必须位于第2行。如果您将其粘贴到其他位置,请考虑使用绝对寻址来定义操作范围。

票数 1
EN

Stack Overflow用户

发布于 2020-04-04 19:39:25

如果您将O365与UNIQUE函数一起使用,则可以使用:

代码语言:javascript
运行
复制
=COUNT(A1:J1)-COUNT(UNIQUE(A1:J1,TRUE,TRUE))

票数 1
EN

Stack Overflow用户

发布于 2020-04-05 00:40:43

另一种方式

代码语言:javascript
运行
复制
=COUNT(A1:J1)-SUMPRODUCT(--(FREQUENCY(A1:J1,A1:J1)=1))

代码语言:javascript
运行
复制
=SUMPRODUCT(--(COUNTIF(A1:J1,A1:J1)>1))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61025642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档