无法在Excel vbamacros中指定确切的范围

今天是我第一天在Excel中对抗VBAmacros。 我所要做的就是指定一个列,从中获取不同的值,并将其复制到另一个列中,在另一个表中find。 我读了很多,这就是我想到的:

Sub TestS() Dim lastRow As Long lastRow = Worksheets(3).Range("A" & Rows.count).End(xlUp).Row Worksheets(3).Range(Cells(3, 1), Cells(lastRow, 1)).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Worksheets(2).Range("A3"), Unique:=True End Sub 

lastRow目前指向正确的位置,但我得到的错误:

运行时错误1004提取范围有一个缺less或无效的字段名称。

显然有语法错误,但我尝试了很多不同的方式,没有一个是工作。

只要限定Cells():

 Sub TestS() Dim lastRow As Long With Worksheets(3) lastRow = .Range("A" & Rows.Count).End(xlUp).Row .Range(.Cells(1, 1), .Cells(lastRow, 1)).AdvancedFilter _ Action:=xlFilterCopy, _ CopyToRange:=Worksheets(2).Range("A3"), Unique:=True End With End Sub 

像这些任务我build议使用简单的SQL查询。 通过这种方式,您可以build立到源工作表的连接(可以随时刷新数据透视表),代码更加简单灵活。 查询:

 SELECT DISTINCT * FROM [Sheet1$] 

如何在Excel中使用SQL? 在“数据”function区的“外部数据”一节中查找“Microsoft Query”。 或者直接在这里下载我的Excel加载项: http : //blog.tkacprow.pl/?page_id=130