excel VBA 运行问题

运行的过程:

Sub 高级筛选()

'

' 高级筛选 Macro

'

'

Cells.Select

Selection.Copy

Sheets("Non Pilot Data").Select

Cells.Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

    False, Transpose:=False

Cells.Select

Application.CutCopyMode = False

Range("A1:BI10000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _

    Sheets("Pilot list").Rows("1:2"), Unique:=False

ActiveWindow.SmallScroll Down:=-21

Cells.Select

Selection.Copy

Sheets("Funding Data").Select

Range("A1").Select

Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _

    False, Transpose:=False

End Sub

现在更改pilot list数据了
之前是不等于那个list 数据,现在是等于那个数据
更改后结果只能出一个数据
需要等于pilot list 的所有数据

现在是等于list数据吗?


Sub 高级筛选()

    Sheets("Non Pilot Data").Range("A1:BI10000").AdvancedFilter _
    Action:=xlFilterInPlace, CriteriaRange:=Sheets("Pilot list").Range("A1:C2"), Unique:=False

End Sub

需要筛选的条件增加 既要等于A又要等于B 还要等于C
要把这些数据都找出来,怎么修改pilot list 呢?或者说怎么修改宏呢?

引用 皆我百晓生 小程序回复内容作答:
根据您提供的VBA代码,我理解您的要求是将 "Non Pilot Data" 工作表中与 "Pilot list" 工作表的条件匹配的数据复制到 "Funding Data" 工作表。

要满足您的新要求,您需要更改以下行:

Range("A1:BI10000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ 更改为 Range("A1:BI10000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _

通过更改操作类型为 xlFilterCopy,您可以复制与条件匹配的数据。

然后,您可以尝试更新VBA代码如下:

Sub 高级筛选()
'
' 高级筛选 Macro
'
'
    Cells.Select
    Selection.Copy
    Sheets("Non Pilot Data").Select
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Cells.Select
    Application.CutCopyMode = False
    
    ' 将过滤操作更改为复制操作
    Range("A1:BI10000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        Sheets("Pilot list").Rows("1:2"), Unique:=False
    
    ActiveWindow.SmallScroll Down:=-21
    Cells.Select
    Selection.Copy
    Sheets("Funding Data").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
End Sub

这样修改后,您应该可以在 "Funding Data" 工作表中获得与 "Pilot list" 工作表条件相等的所有数据。

根据你的描述,我理解你的问题是更改了筛选条件,从不等于pilot list数据改为等于pilot list数据后,只能输出一个数据,但你需要输出等于pilot list的所有数据。我认为问题可能出在CriteriaRange参数上。

在原来的代码中,CriteriaRange参数是指定筛选条件的范围。根据你的描述,之前是不等于pilot list数据,那么CriteriaRange应该是两行,第一行是列名,第二行是筛选条件,类似于下面这样:

A           B           C

1 Name Age Pilot list
2 John 25 <>Yes

在这个例子中,我们筛选不等于"Yes"的数据。

现在你更改了筛选条件,要求等于pilot list数据。那么CriteriaRange应该变成这样:

A           B           C

1 Name Age Pilot list
2 * =Yes

在这个例子中,我们筛选Pilot list列等于"Yes"的数据。注意,第二行的A、B列不需要填写,因为我们不需要指定其他条件。而第二行的C列填写=Yes表示我们要筛选Pilot list列等于"Yes"的数据。*表示任意值,因为我们不需要指定其他条件。

请将你的CriteriaRange修改为类似上面的例子,然后重新运行代码,应该可以输出所有等于pilot list的数据。