【问题标题】:Paste multiple filtered criteria into one sheet without pasting over the original data?将多个过滤条件粘贴到一张表中而不粘贴原始数据?
【发布时间】:2017-01-03 07:43:59
【问题描述】:

我在复制条件范围中的过滤数据时遇到问题,然后将其粘贴到损益受监管实体表中,而新的过滤数据没有粘贴到以前的过滤数据上。如何调整下面的代码,确保先粘贴1226过滤的数据,再粘贴1843过滤的数据,再粘贴到1226的数据下方?

Sheets("P&L").Select
Range("A1").AutoFilter Field:=1, Criteria1:= _
    "*1226*"
ActiveSheet.AutoFilter.Range.Copy
Sheets("P&L Regulated Entities").Select
Range("A1").Select
Selection.PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False,Transpose:=False


Sheets("P&L").Select
Range("A1").AutoFilter Field:=1, Criteria1:= _
    "*1843*"
ActiveSheet.AutoFilter.Range.Copy
Sheets("P&L Regulated Entities").Select
ActiveCell.Offset(1).Select
Range("A1").Select
Selection.PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


Sheets("P&L").Select
Range("A1").AutoFilter Field:=1, Criteria1:= _
    "*865*"
ActiveSheet.AutoFilter.Range.Copy
Sheets("P&L Regulated Entities").Select
ActiveCell.Offset(1).Select
Range("A1").Select
Selection.PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


Sheets("P&L").Select
Range("A1").AutoFilter Field:=1, Criteria1:= _
    "*1223*"
ActiveSheet.AutoFilter.Range.Copy
Sheets("P&L Regulated Entities").Select
ActiveCell.Offset(1).Select
Range("A1").Select
Selection.PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

【问题讨论】:

  • 嗯,你会想要使 Range("A1").Select 动态的找到最后一行有数据并向下移动。有关查找最后一行的方法,请参见此处:stackoverflow.com/questions/11169445/… 然后在最后一行的返回值上加 1。
  • @ScottCraner 你能告诉我如何将它合并到上面的代码中吗?
  • 另外,最好是avoid using .Select/.Activate。很多这样的代码可以缩减到最多 10 行。

标签: excel vba


【解决方案1】:

我会用这个。 With...End With 结构允许您删除 .Select 语句。 .Range("A" & .Rows.Count).End(xlUp).Offset(1,0) 之类的行会将复制的数据放在受监管实体表的第一个空行中。

With Sheets("P&L")
   .Range("A1").AutoFilter Field:=1, Criteria1:= _
    "*1226*"
   .AutoFilter.Range.Copy
End With

With Sheets("P&L Regulated Entities")
    .Range("A1").PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False,Transpose:=False
End With


With Sheets("P&L")
   .Range("A1").AutoFilter Field:=1, Criteria1:= _
    "*1843*"
   .AutoFilter.Range.Copy
End With

With Sheets("P&L Regulated Entities")
   .Range("A" & .Rows.Count).End(xlUp).Offset(1,0).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With


With Sheets("P&L")
   .Range("A1").AutoFilter Field:=1, Criteria1:= _
    "*865*"
   .AutoFilter.Range.Copy
End With

With Sheets("P&L Regulated Entities")
   .Range("A" & .Rows.Count).End(xlUp).Offset(1,0).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With


With Sheets("P&L")
   .Range("A1").AutoFilter Field:=1, Criteria1:= _
    "*1223*"
   .AutoFilter.Range.Copy
End With

With Sheets("P&L Regulated Entities")
   .Range("A" & .Rows.Count).End(xlUp).Offset(1,0).PasteSpecial _
Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End With

【讨论】:

    猜你喜欢
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多