连接时忽略重复值

时间:2015-09-17 23:51:20

标签: excel concatenation

我想在一行中连接一系列单元格,除了前一个单元格包含与下一列中的单元格相同的值,并在其间添加破折号。例如:

细胞A2 = 1234567,细胞B2 = 1234567,细胞C2 = 9845666,细胞D2 = 5521472。

由于B2与A2相同,我想跳过它并继续前进。

我希望输出为'1234567-9845666-5521472',忽略重复值,并基本上从行内单元格范围内的每个唯一值创建唯一键。最多可能有七个单元格重复值。

2 个答案:

答案 0 :(得分:0)

您可以使用IFCOUNTIF的混合来获得该结果,或者您可以使用附加的用户定义函数。将其放入模块中,然后使用=concatplus(A2:G2,"-",true)

在工作表中调用它
Public Function concatPlus(rng As Range, Optional sep As String = "", Optional noDup As Boolean = False, Optional skipEmpty As Boolean = False) As String
'concatenates a range with the specified separator
Dim cl As Range, strTemp As String

If noDup Then

    Dim newCol As New Collection

    On Error Resume Next

    For Each cl In rng.Cells
        If skipEmpty = False Or Len(Trim(cl.Text)) > 0 Then _
            newCol.Add cl.Text, cl.Text
    Next

    For i = 0 To newCol.Count
        strTemp = strTemp & newCol(i) & sep
    Next

Else

    For Each cl In rng.Cells
        If skipEmpty = False Or Len(Trim(cl.Text)) > 0 Then _
            strTemp = strTemp & cl.Text & sep
    Next

End If

concatPlus = Left(strTemp, Len(strTemp) - Len(sep))

End Function

答案 1 :(得分:0)

这有帮助吗?

=(如果(A2 = B2,“”,“A2&” - “”))&(if(或(B2< A2>)& B2"“”,B2&“ - ” ,“”))&(if(C2<> B2& C2"“”,C2&“ - ”,“”))&(if(D2< C2& D2<>" ,D2&“ - ”,“”))&(if(E2<> D2&“”,E2&“ - ”,“”))&(if(F2< E2& F2>)& “”,F2&“ - ”,“”))