如何仅使用宏将单个值粘贴到过滤的单元格中?

时间:2019-07-26 09:44:50

标签: excel vba

我在excel中复制一个单元格(“ A2”),然后在另一张工作表上用一些值过滤第一列。在第二列中,我要粘贴从A2复制的值。我该如何使用宏?

Col1    Col2
a   
b   
b   
a   

最后我想看看:

Col1    Col2
a        10
b   
b   
a        10

Sub Macro()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "a"
    Sheets("Sheet2").Select
    Cells.Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$5").AutoFilter Field:=1, Criteria1:="a"
    Range("B2:B5").Select
End Sub

代码当然不完整。

1 个答案:

答案 0 :(得分:3)

过滤后使用Range.SpecialCells method仅获得过滤范围内的可见单元格。

您可能会受益于阅读 How to avoid using Select in Excel VBA

Option Explicit

Public Sub Macro()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet2")

    Dim LastRow As Long
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    Dim FilterRange As Range
    Set FilterRange = ws.Range("A1", ws.Cells(LastRow, "A"))

    FilterRange.AutoFilter Field:=1, Criteria1:="a"
    FilterRange.SpecialCells(xlCellTypeVisible).Offset(ColumnOffset:=1).Value = 10

    FilterRange.AutoFilter
End Sub

要排除标题,请使用

FilterRange.Resize(RowSize:=FilterRange.Rows.Count - 1).Offset(RowOffset:=1).SpecialCells(xlCellTypeVisible).Offset(ColumnOffset:=1).Value = 10

根据评论进行编辑:

FilterRange从A2而不是A1开始是行不通的,因为下拉框会出现在第一数据行(行2)而不是标题行(行1)中。

enter image description here