【问题标题】:Copy First x rows of visible data using SpecialCells add to new sheet AND delete each copied row from original table使用 SpecialCells 复制前 x 行可见数据添加到新工作表并从原始表中删除每个复制的行
【发布时间】:2019-09-11 14:37:06
【问题描述】:

我需要将下图中的前 X 行可见数据复制到新工作表中,并删除已复制的每一行(而不仅仅是清除数据)。

例如,在下图中,假设我只需要过滤第 7 列后的前 7 个可见数据行。我需要将前 7 个可见行粘贴到 Fulfillment 表中,并且我需要将这些行完全删除(未清除),因为我不能留下空白行。这可能不是 7 个,而是数百个中的一个数字,需要为每个需要履行的订单重复数十次。

除了遍历整个表直到到达第 n 个可见行之外,还有其他解决方案吗?这段代码需要用数千部手机完成数百个订单,所以它不会很慢。

如果有代码只是说偏移到第 22 个可见行之类的就完美了。

我没有代码,因为此时这纯粹是概念性的。


试过这个:

msgbox Range("A362").Offset(6,0).SpecialCells(xlCellTypeVisible).Row 

该代码应该返回 432,但它返回的是 1。

【问题讨论】:

  • 您可以使用SpecialCells(xlCellTypeVisible)Offset 来实现。更多关于Special Cells
  • 我已经试过了 - 你能给我一个特定的代码行,使用 SpecialCells(xlCellTypeVisible) 和偏移代码从单元格 A362 偏移到 A432 吗?
  • msgbox Range("A362").Offset(6,0).SpecialCells(xlCellTypeVisible).Row 该代码应该返回 432,但它返回的是 1...
  • Range("A1").Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.address
  • 嗨 Mikku - 似乎所有的 cmets 都不见了 - 你看到我关于相邻可见行被视为单个连续区域的最后评论 - 所以你写的代码只在你的例子中有效,因为每个的可见行后面是隐藏行,而不是像我在示例中那样有多个可见行彼此相邻?

标签: excel vba autofilter


【解决方案1】:

实际上,没有可使用的代码...您所要求的应该是这样的:

LastRow = Sheets(2).Range("A1").SpecialCells(xlCellTypeLastCell).Row
MsgBox LastRow
For i = 1 To 7
    Sheets(2).Range("A1").Offset(LastRow + i - 1, 0). _
         SpecialCells(xlCellTypeVisible).EntireRow.Value = _
         Sheets(1).Range("A1").Offset(i, 0). _
         SpecialCells(xlCellTypeVisible).EntireRow.Value
Next
For i = 8 To 2 Step -1
    Sheets(1).Range("A1").Offset(i + 1, 0).SpecialCells(xlCellTypeVisible).EntireRow. _
                                                               ClearContents
Next
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

那个人正在考虑只有两张纸,数据具有与您在屏幕截图中发送的相同设置。

此代码将复制工作表 (1) 上的前 7 行,它们将被复制到工作表 2,复制的行将被删除。

希望对你有帮助

【讨论】:

  • 为什么人们总是在过滤表中建议 Offset 与 SpecialCells(xlCellTypeVisible) 结合使用?它对我不起作用 - 如果表格未过滤,它可以工作。如果被过滤,下面的代码会选择表格的整个数据体范围。 Sheets(1).Range("A1").Offset(i+1,0).SpecialCells(xlCellTypeVisible).EntireRow.Select
  • 请求删除行的时候好像有问题。我只是更改为 ClearContents,然后删除。我检查了过滤器,它可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 2017-06-17
相关资源
最近更新 更多