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

我在这里,因为我需要上述任务的帮助。 在我的学生工作中,我们在电子表格的一列中有一个客户名单,每当我们收到工作订单时,我们都会添加一个名单。 我需要帮助的基本上是把这个列表的一个淘汰版本(不重复)转移到一个不同的电子表格中,这个电子表格有多个条目。

我的老板给了我这份工作,因为在业余时间,我正忙于其他方面的VBA代码,他注意到了。 不幸的是,我并不完全知道如何做到这一点,因为我对这个语言很陌生。

这是我到目前为止(注意它不起作用) http://pastebin.com/E3bKbr24

任何帮助将不胜感激,尤其是如何使这更高效的指针! 我知道C ++,并且我知道双重嵌套的For循环是非常低效的,所以任何build议的方法来提高这个函数的性能将是有益的(特别是因为它会被称为很多)。

再次感谢!

这是我的build议:

 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”replace为您要从中复制数据的工作表名称,并将“newsheet”replace为您要将数据复制到的新工作表的名称。 你也可以replace更广泛的列中的Q,如“C:S”,如果这是你所需要的。

如果你想把所有的东西放在同一个工作表中,并且重复使用你需要的东西,最好在外部创build一个,而不是在子工具里创build一个新的,否则最后每次都会有一个新的工作表启动子。

Excel有一个内置的删除重复function(数据/删除重复项)

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

 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