我似乎在寻找解决方案上有问题,
我想计算一行中的重复项,该行有100列。我只想计算一下这一行有多少重复项。
例如,
1,2,3,1,4,9,2,9,1,4我只想看看同一组数字出现了多少次。
1 = 3
2 = 2
3 = 0
4 = 2
9 = 2例如,3 + 2 + 0 + 2 + 2 = 9
此行有9个重复项。也就是说,相同的值被多次显示。但是,该值是动态的。
发布于 2020-04-04 18:32:18
下面的VBA函数是一个UDF,这意味着它类似于一个普通的Excel工作表函数,但它的执行完全是为了做你想做的事情。将其安装在标准代码模块中。
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,但您可以将其更改为任何您喜欢的名称(错误的语法名称将被拒绝)。例如,通过在任意单元格中输入函数调用来调用工作表中的函数。
= CountDuplicates(A2:DD2)此函数将返回在定义的范围内计数的所有重复数,不包括唯一值。看看代码。当第一次找到一个项目时,会对其记录值为0。此后,每次再次找到它时,都会将已找到的递归次数加1。最后,将所有值相加,以返回总计数。此方法确保所有第一次出现的次数都将计入0(表示不计入)。返回的合计中只包含重复次数。
与其他Excel函数一样,结果将出现在包含公式的单元格中。您可以像复制其他公式一样复制该公式,这意味着上面的原始公式必须位于第2行。如果您将其粘贴到其他位置,请考虑使用绝对寻址来定义操作范围。
发布于 2020-04-04 19:39:25
如果您将O365与UNIQUE函数一起使用,则可以使用:
=COUNT(A1:J1)-COUNT(UNIQUE(A1:J1,TRUE,TRUE))

发布于 2020-04-05 00:40:43
另一种方式
=COUNT(A1:J1)-SUMPRODUCT(--(FREQUENCY(A1:J1,A1:J1)=1))或
=SUMPRODUCT(--(COUNTIF(A1:J1,A1:J1)>1))https://stackoverflow.com/questions/61025642
复制相似问题