我想在一行中连接一系列单元格,除了前一个单元格包含与下一列中的单元格相同的值,并在其间添加破折号。例如:
细胞A2 = 1234567,细胞B2 = 1234567,细胞C2 = 9845666,细胞D2 = 5521472。
由于B2与A2相同,我想跳过它并继续前进。
我希望输出为'1234567-9845666-5521472',忽略重复值,并基本上从行内单元格范围内的每个唯一值创建唯一键。最多可能有七个单元格重复值。
答案 0 :(得分:0)
您可以使用IF
和COUNTIF
的混合来获得该结果,或者您可以使用附加的用户定义函数。将其放入模块中,然后使用=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&“ - ”,“”))