从一系列单元格中提取重复值

时间:2018-02-06 13:21:27

标签: excel excel-formula excel-2007

我需要这方面的帮助。我在单元格A1:F1(1,1,1,2,2,4)中有值,在G1中我想只重复引用的值,在这种情况下是(12)。更多例子:(2,2,3,3,4,4)将是(234)。 (0,0,1,2,3,9)将为(0)。如果单元格中没有重复值,则应为空白。

 Sample Data            Expected Result
1   2   3   4   4   4       4
0   1   1   1   2   4       1
1   1   2   2   3   5       12
0   2   2   3   5   5       25
0   1   2   3   4   5       
0   2   3   3   4   4       34
0   0   2   3   3   4       03
0   1   1   2   3   3       13
0   0   0   1   4   4       04
0   2   3   3   4   5       3
0   1   1   2   3   3       13
1   1   2   3   3   4       13
0   1   2   3   3   5       3
0   1   2   3   3   3       3
0   1   1   2   3   4       1
0   1   1   2   4   4       14
0   1   2   3   4   4       4
1   1   2   4   4   5       14
0   0   0   2   2   2       02
0   0   0   1   2   3       0

1 个答案:

答案 0 :(得分:1)

易于使用用户定义函数(UDF)

如果您尝试使用相同的密钥添加多个项目,此算法将依赖于Collection对象抛出错误。

首先我们找到重复的项目(CountIf >),然后我们将它们添加到Collection中。我们知道错误将来自重复项,我们会跳过产生错误的添加内容,并且只留下重复项的单个条目。

在更复杂的情况下,可以测试以查看返回的错误,或使用Dictionary对象。

Option Explicit
Function ConcatDups(rg As Range) As String
    Dim C As Range
    Dim col As Collection
    Dim V As Variant
    Dim sTemp As String
Set col = New Collection

On Error Resume Next 'collect single instance of Dups
With WorksheetFunction
For Each C In rg
    If WorksheetFunction.CountIf(rg, C) > 1 Then _
    col.Add C.Text, C.Text
Next C
End With
On Error GoTo 0

For Each V In col
    sTemp = sTemp & V
Next V

ConcatDups = sTemp

End Function

enter image description here