我目前的代码在 ActiveSheet sws 中
sws.Range("C:C").AdvancedFilter _
Action:=xlFilterCopy, _
CopyToRange:=dws.Range("A:A"), _
Unique:=True
它工作得很好,但不幸的是,我发现我需要复制的不仅仅是列 C。意味着我有列“C”到“J”,我只需要复制列 C 和 J 中的数据。中间的列不是必需的。
我读了一些关于在声明的变量中使用&sws.Range("C:C" & *declared Variable*).Advanced Filter的内容,这意味着我必须指定还需要复制的内容。因此我会宣布
declared_variable = Sheets(sws).Cells(Rows.Count, "J").End(xlUp).Row
Set rng = Sheets(sws).Range("C:C" & last)
Dim dws As Worksheet:
Set dws = wb.Worksheets.Add(After:=wb.Sheets(wb.Sheets.Count))
Sheets(sws).Range("C:C" & declared_variable).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=dws.Range("A:B"), Unique:=True
作为正确顺序的结论
Dim dws As Worksheet:
Set dws = wb.Worksheets.Add(After:=wb.Sheets(wb.Sheets.Count))
declared_variable = Sheets(sws).Cells(Rows.Count, "J").End(xlUp).Row
Set rng = Sheets(sws).Range("C:C" & last)
Sheets(sws).Range("C:C" & declared_variable).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=dws.Range("A:B"), Unique:=True
但不幸的是,它无法正常工作。任何想法?像往常一样,我很感激,谢谢。
更新:19.04.21 这就是我所做的,但不幸的是它告诉我对象工作表的方法范围不起作用。
Sub Unique_Values_Worksheet_Variables()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim sws As Worksheet: Set sws = wb.Worksheets("export")
Dim dws As Worksheet, rng As Range
Set dws = wb.Worksheets.Add(After:=wb.Sheets(wb.Sheets.Count))
declared_variable = sws.Cells(Rows.Count, "J:J").End(xlUp).Row
sws.Range("C:C" & declared_variable).AdvancedFilter _
Action:=xlFilterCopy, _
CopyToRange:=dws.Range("A:B"), _
Unique:=True
dws.Columns("A:B").EntireColumn.AutoFit
Set rng = dws.Range("A1:B1", dws.Cells(Rows.Count, 1).End(xlUp))
