Excel VBA删除阵列中的重复项

Excel VBA删除阵列中的重复项,excel,vba,Excel,Vba,我有一个字符串,看起来像“apples//apples//oranges//”。当我试图删除重复项时,我得到一个错误“下标超出范围” 我希望我的最终结果看起来像“苹果/橘子/” 要动态调整数组大小,请执行以下操作: 重拨[保留]名称(边界列表) 使用“保留”保留存储在数组中的以前的数据 Dim duplicateArray() As String Dim programsArray() As String duplicateArray() = Split(Sheets("Sheet1").Ce

我有一个字符串,看起来像“apples//apples//oranges//”。当我试图删除重复项时,我得到一个错误“下标超出范围”

我希望我的最终结果看起来像“苹果/橘子/”


要动态调整数组大小,请执行以下操作:

重拨[保留]名称(边界列表)

使用“保留”保留存储在数组中的以前的数据

Dim duplicateArray() As String
Dim programsArray() As String

duplicateArray() = Split(Sheets("Sheet1").Cells(1, 12).Value, "//")

For j = 0 To UBound(duplicateArray)
    If UBound(Filter(programsArray, duplicateArray(j))) > -1 Then

    Else
    redim preserve programsArray(UBound(programsArray()) + 2)
    programsArray(UBound(programsArray()) + 1) = duplicateArray(j)

    End If

Next j

    programElement = Join(programsArray, " // ")
    Sheets("Sheet1").Cells(1, 3).Value = programElement
考虑:

Sub DeDup()
    duplicateArray = Split(Sheets("Sheet1").Cells(1, 12).Value, "//")
    Dim c As Collection
    Set c = New Collection
    On Error Resume Next

    For Each d In duplicateArray
        c.Add d, CStr(d)
    Next d

    programsArray = c(1)
    For i = 2 To c.Count
        programsArray = programsArray & "//" & c(i)
    Next i

    Sheets("Sheet1").Cells(1, 3).Value = programsArray
End Sub

索引的值是什么?您在哪里定义
programsArray
大小?对不起,它应该是Sheets(“Sheet1”)。单元格(1,3)。value=programmelement
programsArray
未填充在此代码示例中。我希望programsArray通过动态数组填充。您如何定义它,以便我可以向其中添加新文本?我仍然收到错误“下标超出范围”,它似乎来自“If UBound(Filter(programsArray,duplicateArray(j))>-1 Then”
Sub DeDup()
    duplicateArray = Split(Sheets("Sheet1").Cells(1, 12).Value, "//")
    Dim c As Collection
    Set c = New Collection
    On Error Resume Next

    For Each d In duplicateArray
        c.Add d, CStr(d)
    Next d

    programsArray = c(1)
    For i = 2 To c.Count
        programsArray = programsArray & "//" & c(i)
    Next i

    Sheets("Sheet1").Cells(1, 3).Value = programsArray
End Sub