首页 > 解决方案 > 如何在同一单元格中查找重复项并在 VBA 中删除一个实例

问题描述

我无法更改的单独程序会添加到电子表格中,有时会重复某些内容。

例如:在单元格 5、3

ABC, vbd, S19M-0027757-27760, S19M-0027757-27760(1)

或者它可能是

ABC, vbd S19M-0027757-27760, S19M-0027757-27760(1)

我需要做的是用 S19M-0027757-27760(1) 替换它们,所以结果是:

ABC, vbd, S19M-0027757-27760(1)

到目前为止,我有:

For i = 5 To lRow
   inputArray = Split(Cells(i, 3).Value, " ")
   For j = 0 To (UBound(inputArray) - LBound(inputArray) - 1)
      Dim firstString As String
      Dim secondString As String
      firstString = inputArray(j)
      secondString = inputArray(j + 1)        
   Next
Next

我在想下一步是逐字比较?但是逗号和(1)呢?

标签: excelvba

解决方案


尝试这个。可能没有足够的例子来确保它在所有情况下都有效,但是一个简短的测试有效。

Sub x()

Dim i As Long, inputArray, j As Long, outputArray(), k As Long

For i = 1 To 3
    inputArray = Split(Cells(i, 3).Value, ", ")
    For j = LBound(inputArray) To UBound(inputArray)
            k = k + 1
            ReDim Preserve outputArray(1 To k)
        If j = UBound(inputArray) - 1 Then
            If inputArray(j + 1) Like inputArray(j) & "(*)" Then
                outputArray(k) = inputArray(j + 1)
                Exit For
            Else
                outputArray(k) = inputArray(j)
            End If
        Else
            outputArray(k) = inputArray(j)
        End If
    Next j
    Cells(i, 4).Value = Join(outputArray, ", ")
    Erase outputArray: k = 0
Next i

End Sub

在此处输入图像描述


推荐阅读