【问题标题】:Appending filtered range to sheet将过滤范围附加到工作表
【发布时间】:2016-09-16 15:38:35
【问题描述】:

使用此代码,我只需(感谢 Slai)将过滤后的范围从一张纸复制并粘贴到另一张纸上。但是,我尝试通过将另一个过滤范围附加到 HAA 表来复制此代码,但由于某种原因,它选择了第 11 行并粘贴数据。

Sub Run()

    Application.ScreenUpdating = False

    Dim x As Long
    Dim rf As Range, wsTo As Worksheet, wx As Range

    Set rf = ThisWorkbook.Sheets("Table").UsedRange
    Set wsTo = Sheets("HAA")
    Set wx = ThisWorkbook.Sheets("HAA").UsedRange

    x = Range("B" & Rows.Count).End(xlUp).Row

    rf.AutoFilter
    rf.AutoFilter 12, "associated"
    rf.Copy

    wsTo.Range("A1").PasteSpecial xlPasteValues

    rf.AutoFilter
    rf.AutoFilter 12, "not found"
    rf.Offset(1, 0).Copy

我改变了这个(下面)来选择看看它在哪里粘贴数据,最初有 .PasteSpecial xlPasteValues

    wsTo.Range("A1" & x).Select

    Application.ScreenUpdating = True

End Sub

【问题讨论】:

  • 您要从哪个工作表中获取最后填充的行(例如 x)?为什么你不偏移以获得第一个可用的空白单元格?例如x = wsTo.Range("B" & Rows.Count).End(xlUp).OFFSET(1, 0).Row 看起来应该是wsTo.Range("A" & x).Select。
  • 您能添加一些输入示例和所需结果吗?
  • @Jeeped x = wsTo.Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row 这样,它就会粘贴到现有数据上。跨度>

标签: vba excel excel-2007


【解决方案1】:

在最后一行之后粘贴,类似于:

Dim rangeTo As Range
Set rangeTo = wsTo.UsedRange ' or = wsTo.Range("A1").CurrentRegion
Set rangeTo = rangeTo.Offset(rangeTo.Rows.Count)(1) ' (1) is to get the first cell 
Application.Goto rangeTo ' optional if you want to see where the values will be pasted
rangeTo.PasteSpecial xlPasteValues

您的代码中的问题是您在粘贴和过滤数据之前获得了最后一行。此外,Range( 通常指的是当前活动的工作表,它可能并不总是您想要的,因此最好在范围之前指定工作表:

 x = wsTo.Range("B" & wsTo.Rows.Count).End(xlUp).Row

【讨论】:

  • 现在我正在获取 rangeTo.PasteSpecial xlPasteValue 所需的对象,但我认为这在执行之前已经被识别。
  • @FonR 粘贴前忘记复制数据了吗?
  • 给我一点时间考虑一下。
  • 我希望你成为我的导师。我没有意识到在以前的功能发生时必须使用 Dim & Set。此外,对我来说最难的事情之一是正确地分层对象。伙计,你很好。我知道这些都是简单的功能,但你真的知道你在做什么。我不想拿代码只是粘贴它,我想从中学习。谢谢
  • @FonR 如果我知道自己在做什么,我不会使用“类似的东西”:] 当我尝试回答时,我主要是在猜测和假设。 .UsedRange 还包括空白格式的单元格或公式,因此它并不总是最好的选择,但通常对我来说已经足够了。 stackoverflow.com/documentation/excel-vba/918/…
猜你喜欢
  • 2017-07-15
  • 2019-07-15
  • 2014-11-23
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多