我在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
代码当然不完整。
答案 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)中。