【问题标题】:How do I remove duplicate values in a cell seperated with a /?如何删除以 / 分隔的单元格中的重复值?
【发布时间】:2013-03-26 04:05:09
【问题描述】:

我在 excel 中有多个单元格,如下所示:

    b1= E4I8/E4I8/E4I8/E4I8
    b2=D3B2/B30C1/D3B2/D3B2/D3B2/B30C1


    multiple /xxxx/ 

如何在同一个单元格中删除这些重复的文本字符串?

谢谢

【问题讨论】:

  • 项目保持相同的顺序重要吗?
  • 您愿意使用 VBA 解决方案吗?

标签: excel excel-formula spreadsheet vba


【解决方案1】:

此函数使用字典的键从传入的字符串构建唯一的部件列表(添加对Microsoft Scripting Runtime 的引用):

Public Function UniqueParts(separator As String, toParse As String) As String
    Dim d As New Scripting.Dictionary, part As Variant, i As Integer
    For Each part In Split(toParse, separator)
        d(part) = 1
    Next
    UniqueParts = Join(d.Keys, "/")
End Function

您可以在 Excel 公式中使用此函数:

=UniqueParts("/","E4I8/E4I8/E4I8/E4I8")

或使用单元格引用:

=UniqueParts("/",B2)

您也可以在迭代一系列单元格的宏中使用它。

【讨论】:

  • 很好的尝试,但parts 没有声明,没有真正使用,也不需要。删除它,这将是 +1。
  • @chrisneilsen 我最初返回的是一个数组。
【解决方案2】:

如果允许使用 VBA 来解决您的问题,我建议以下功能:(无需参考!)

Function UniqueFromCell(rngCell, splitString)

Dim myCol As New Collection
Dim itmCol
Dim i As Long

Dim arrTMP As Variant
arrTMP = Split(rngCell, splitString)

For i = 1 To UBound(arrTMP)
    On Error Resume Next
    myCol.Add arrTMP(i), CStr(arrTMP(i))
    On Error GoTo 0
Next i

Dim result
For Each itmCol In myCol
    result = result & itmCol & splitString
Next

UniqueFromCell = Left(result, Len(result) - Len(splitString))

End Function

要在 Excel 中调用它,您需要输入两个参数:单元格和分隔标记:

=UniqueFromCell(B4,"/")

【讨论】:

  • 谢谢,在我的国家 Excel 中,我们有 ;,而您有 ,... 但我改为国际标准 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-10
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多