我知道使用Select很糟糕。
在自动过滤后返回多个结果时,我正在尝试仅从第一行中选择单元格。我已经使用xlCellTypeVisible
来复制所有可见行,但我不确定如何在第一个过滤行的C和D列中创建此选择单元格。我将在activecellOffset行之前从第二个自动过滤器获取值。
For i = 2 To k
Sheets("Database").Select
ActiveSheet.Range("$A$1:$C" & k).AutoFilter Field:=2, Criteria1:= _
Worksheets("SoPhiH").Range("A" & i).Value, Operator:=xlAnd
Sheets("Database").Select
ActiveSheet.Range("$A$1:$R" & k).AutoFilter Field:=5, Criteria1:= _
Worksheets("SoPhiH").Range("C" & i).Value, Operator:=xlAnd
Sheets("Database").Select
If Application.WorksheetFunction.Subtotal(3, Range("A2:A" & k)) Then ' If the cell is blank copy and paste, else do nothing
Else
ActiveSheet.Range("$A$1:$C" & k).AutoFilter Field:=2
ActiveSheet.Range("$A$1:$C" & k).AutoFilter Field:=5
Sheets("SoPhiH").Select
ActiveSheet.Range("A" & i).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Database").Select
Range("B" & Rows.Count).End(xlUp).Offset(1).Select
ActiveSheet.Paste
UWI = ActiveCell.Value
ActiveSheet.Range("$A$1:$C" & k).AutoFilter Field:=2, Criteria1:= _
UWI, Operator:=xlAnd
ActiveCell.Offset(0, 3) = Worksheets("SoPhiH").Range("C" & i)
ActiveCell.Offset(0, 17) = Worksheets("SoPhiH").Range("B" & i)
End If
Next i
答案 0 :(得分:1)
许多用于操纵传统范围的相同方法可用于特殊单元创建的范围。
with ActiveSheet.Range("$A$1:$C" & k)
.AutoFilter Field:=2, Criteria1:=UWI
with .offset(1, 0)
.specialcells(xlcelltypevisible).offset(0, 2).resize(1, 2).select
end with
end with
如果您处理的不仅仅是第一行,则必须使用Areas属性。