在另一个工作表中将活动单元格值分配给过滤器作为条件

时间:2018-06-21 17:54:03

标签: excel vba excel-vba

我正在尝试使用活动单元格值作为另一个工作表上过滤器的标准。

我的活动单元格值(在第一张工作表(“ WIthout Dupes”)中应该是第二张工作表(“ Master”)中的过滤条件值,因此最终我的代码不应包含Range("B$142").Select,但活动代码单元格值和标准1应该指的是第一张纸上的“活动单元格”值。

我尝试使用

 Sub test1()
'
' test1 Macro
'

'
    Range("B$142").Select
    Selection.Copy
    Sheets("Master").Select
    ActiveSheet.Range("$A$1:$AR$1787").AutoFilter Field:=1, Criteria1:= _
        "00065062"
    Columns("X:X").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("WIthout Dupes").Select
    Range("B145").Select
    ActiveSheet.Paste
    Sheets("Master").Select
    Application.CutCopyMode = False
    ActiveSheet.ShowAllData
    Range("A1").Select
    Sheets("WIthout Dupes").Select
    Range("B143").Select
    ActiveCell.FormulaR1C1 = "done"

End Sub

2 个答案:

答案 0 :(得分:0)

尝试以下代码:

Sub Testing ()

Dim k As Long
k = Worksheets("WIthout Dupes").Cells(142, "B").Value

Sheets("Master").Select
ActiveSheet.Range("$A$1:$AR$1787").AutoFilter Field:=1, Criteria1:= k
Columns("X:X").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("WIthout Dupes").Select
Range("B145").Select
ActiveSheet.Paste
Sheets("Master").Select
Application.CutCopyMode = False
ActiveSheet.ShowAllData
Range("A1").Select
Sheets("WIthout Dupes").Select
Range("B143").Select
ActiveCell.FormulaR1C1 = "done"

End Sub

这应该将条件声明为该单元格的值,然后根据该值进行过滤。

答案 1 :(得分:0)

感谢@ Analyst123456789。我本人写了以下内容,并且也行得通。如果您可以让我知道在时间等方面哪个更好。我将不胜感激。

Sub test1()
'
' test1 Macro
'

'
Do Until ActiveCell.Value = ""

    PID = ActiveCell.Value
    Selection.Copy
    Sheets("Master").Select
    ActiveSheet.Range("$A$1:$AR$1787").AutoFilter Field:=1, Criteria1:=PID
    Columns("X:X").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("WIthout Dupes").Select
    ActiveCell.Offset(3, 0).Select
    ActiveSheet.Paste
    Sheets("Master").Select
    Application.CutCopyMode = False
    ActiveSheet.ShowAllData
    Range("A1").Select
    Sheets("WIthout Dupes").Select
    ActiveCell.Offset(-2, 0).Select
    ActiveCell.FormulaR1C1 = "done"
    ActiveCell.Offset(-1, 1).Select
Loop

End Sub