使用 VBA 消除列表中的重复项并将结果复制到单独的工作表中

Eliminating duplicates from a list and copying result into separate worksheet using VBA

我来这里是因为我需要帮助完成上述任务。在我的学生工作者工作中,我们在电子表格的一列中有一个客户列表,每当我们收到工作订单时,我们都会将其添加到该列中。我需要帮助的基本上是将此列表的删除版本(无重复项)转移到另一个包含条目总数的电子表格中。

我的老板给了我这份工作,因为我在业余时间忙于 VBA 代码的其他方面,他注意到了。不幸的是,我并不完全 100% 确定如何执行此操作,因为我对这门语言还很陌生。

这是我目前所拥有的(注意它不起作用) http://pastebin.com/E3bKbr24

任何帮助将不胜感激,尤其是关于如何提高效率的指导!我了解 C++,我知道双重嵌套 For 循环的效率非常低,因此任何改进此函数性能的建议方法都会有所帮助(特别是因为它会被调用很多)。

再次感谢!

Excel 具有内置删除重复项功能(数据/删除重复项)

您可以像这样以编程方式使用它(非常基本的示例,但应该给您提示以合并到您的代码中):

Sub CopyUnique()
    Columns("Q:Q").Copy 'Copy column Q
    Workbooks.Add 'Add a workbook
    ActiveSheet.Paste ' Paste
    ActiveSheet.Range("$A:$A").RemoveDuplicates Columns:=1, Header:=xlYes 'remove dupes
End Sub

这是我的建议:

Sub Copy()

    Worksheets("originalsheet").Columns("Q:Q").Copy Destination:=Worksheets("newsheet").Columns("Q:Q")
    Worksheets("newsheet").Columns("Q:Q").RemoveDuplicates Columns:=1, Header:=xlYes

End Sub

将 "originalsheet" 替换为您要从中复制数据的作品的名称sheet,并将 "newsheet" 替换为新作品的名称sheet您正在尝试将数据复制到。您还可以将列中的 Q 替换为更广泛的范围,例如 "C:S"(如果您需要的话)。

如果您想将所有内容都放在同一个作品中sheet并根据需要重复使用那个作品,最好在外部创建一个,而不是在子程序中创建一个新作品,否则您每次启动子程序时都会得到一个新的 sheet。