0

我目前的代码在 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))
4

1 回答 1

1

AdvancedFilter 允许您选择要复制的列以及行。如果您将所需的列标题放在要复制范围中,则将仅复制这些列。(如果这是有道理的)。

一个例子可能会有所帮助。尝试这个。走着瞧吧。

Excel 工作表

Sub CopyData()

    Dim dataRange As Range
    Dim criteriaRange As Range
    Dim copyToRange As Range
    
    With Worksheets("Sheet1")
        Set dataRange = .Range("A1:D4")
        Set criteriaRange = .Range("F1:F2")
        Set copyToRange = .Range("H1:I1")
    End With

    dataRange.AdvancedFilter xlFilterCopy, criteriaRange, copyToRange
    
End Sub
于 2021-04-11T20:04:07.027 回答