【问题标题】:excel vba - removing duplicates from an arrayexcel vba - 从数组中删除重复项
【发布时间】:2012-03-07 05:47:36
【问题描述】:

我正在尝试从 excel 数组中删除重复元素。我想我并没有以最有效的方式执行此操作,而且它似乎也不起作用:

For lrw = 1 To UBound(rcArray)
    For copyIndex = lrw + 1 To .Rows.Count
        If rcArray(copyIndex) = rcArray(lrw) Then
            rcArray(lrw).Delete
        End If
    Next copyIndex
Next lrw

我需要重新调整数组吗?有没有人有这个代码的链接?

提前致谢!

【问题讨论】:

  • rcArray 声明为什么?如果它被声明为一个数组,那么这个rcArray(lrw).Delete 将不起作用并且会抛出一个错误。
  • 您可以将其转储到一个范围,使用 Excel 的内置功能提取唯一记录,然后将记录转储回第二个数组。相同的方法可用于数据排序,而不是对数组进行冒泡排序。

标签: excel vba


【解决方案1】:

虽然我需要一些时间来拼凑一些代码,但最好的选择是创建一个新数组并复制您想要保留的值。您不能只删除数组中间的元素。

Redim 只允许您从数组末尾添加或删除元素。

【讨论】:

  • 所以如果它通过一个值,我将它复制到一个新数组?我觉得有道理。在复制任何值之前是否需要设置数组的边界?
  • 是的,您将其复制到新数组 - 您需要有一个单独的索引)并且将边界设置为与初始数组相同。然后当你完成后,你可以使用 redim 截断它(跟踪你复制了多少项目)
猜你喜欢
  • 2015-04-13
  • 2016-02-21
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 2012-08-05
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多