过滤vba后如何只取一些列?

时间:2011-05-07 15:46:45

标签: excel-vba vba excel

平,

我在excel中有2张纸,想要从1张我需要客户信息的纸张到2张我需要过滤数据的纸张。

所以我做了这个宏,用于在工作表2上过滤数据。

`Sub choice()
'
' choice Macro
'
Dim parameter As Range, data As Range, result As Range
Set parameter = Range("param").CurrentRegion
Set data = Range("table").CurrentRegion
Set result = Range("result").CurrentRegion.Offset(1, 0)
result.ClearContents
Set result = Range("result").CurrentRegion
    data.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=parameter _
        , CopyToRange:=result, Unique:=False

End Sub`

data =“table” - 1张表上的客户表

然而,它会复制粘贴客户信息中的所有数据。

是否有可能以某种方式在此宏中添加代码以仅从那里获取FirstName和Lastname?

谢谢!

1 个答案:

答案 0 :(得分:0)

这可能与您为数据,标准和目的地定义范围的方式有关。下面的代码应该有助于显示明确的范围。

假设您要在Sheet1列A:F中过滤数据,要过滤的条件在I1:N2范围内,过滤后的数据要复制到列P:U

代码的第一行只会根据E:F中的条件将列T:U放入I1:N2列中 第二行会根据相同的条件将A:F的所有过滤数据放入P:U

另外,请确保字段/列标题与数据/条件/目标

完全匹配
Sub test()

     'Returns E:F in destination range T:U based on filter criteria
     Sheet1.Columns("A:F").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
         Sheet1.Range("I1:N2"), _
         CopyToRange:=Sheet1.Range("T1:U1"), Unique:=True

     'Returns full range A:F in destination range P:U based on filter criteria
     Sheet1.Columns("A:F").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
         Sheet1.Range("I1:N2"), _
         CopyToRange:=Sheet1.Range("P1:U1"), Unique:=True
 End Sub