【问题标题】:VBA Removing duplicates in an array [duplicate]VBA删除数组中的重复项[重复]
【发布时间】:2014-06-19 18:53:44
【问题描述】:

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

我希望我的最终结果看起来像“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
    programsArray(UBound(programsArray()) + 1) = duplicateArray(j)

    End If

Next j

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

【问题讨论】:

  • index的值是多少?
  • 你在哪里定义programsArray尺寸?
  • 对不起,应该是 Sheets("Sheet1").Cells(1, 3).Value = programElement
  • programsArray 未填写在此代码示例中。
  • 我希望programsArray 由一个动态数组组成。您如何定义它以便我可以向其添加新文本?

标签: excel vba


【解决方案1】:

动态调整数组大小:

ReDim [ Preserve ] 名称(绑定列表)

使用 Preserve 将以前的数据保存在数组中

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

【讨论】:

  • 我仍然收到错误“下标超出范围”它似乎来自“如果 UBound(Filter(programsArray, duplicateArray(j))) > -1 Then”
【解决方案2】:

考虑:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-21
    • 1970-01-01
    • 2021-06-19
    • 2012-08-05
    • 2020-02-23
    • 2011-06-29
    • 2014-04-23
    相关资源
    最近更新 更多