【问题标题】:At each subtotal, for then loop copy and paste above data vba在每个小计处,然后循环复制并粘贴到数据 vba
【发布时间】:2018-04-26 21:01:10
【问题描述】:

我正在尝试使用 for then 循环复制每个小计并粘贴到每个数据集上方。也许在这里使用更合适的循环我不是 100% 确定。满足条件后,我无法让循​​环复制小计。见以下代码:

For I = 1000 To 2 Step -1 ' adjust 1000 to the row number of the last element
If Cells(I, 7).Font.Bold Then
    Cells(I + 1, 1).Copy
    Selection.End(xlUp).Select
    Selection.Offset(1, -7).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End If
Next

我不能让宏做的是复制实际的小计,它甚至不复制它被选中的单元格。如果您需要查看我想让循环执行的操作,请参见下图。

【问题讨论】:

  • 如果您有兴趣,无需编程即可完成。只需单击左侧栏中的 2 级按钮(显示 3 级小计)。这只会将工作表折叠到小计行。然后选择并复制粘贴到任何你想要的地方。

标签: vba excel for-loop copy-paste


【解决方案1】:

Cells(I + 1, 1).Copy 正在正确复制单元格内容,但实际上并未选择单元格。然后,您尝试通过从选定单元格开始移动选择来设置目标,但循环实际上并没有首先设置selection 的起点。

更改它的一种方法是在粘贴之前不要使用.select。这也更有效,因为.select 效率非常低,应该尽量减少。

For I = 1000 To 2 Step -1 ' adjust 1000 to the row number of the last element
If Cells(I, 7).Font.Bold Then
    Cells(I + 1, 7).Copy
    Cells(I + 1, 7).End(xlUp).Offset(1, -6).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End If
Next

【讨论】:

  • 我在结尾(xlUp).Offset 行出现“应用程序定义或对象定义错误”
  • 我已经更新了代码 sn-p -- 复制第 1 列中的单元格然后偏移 -7 列时出错,这当然不在电子表格中并产生您看到的错误.这应该可以避免错误,但我不确定它是否完全复制了您想要的单元格。调整单元格(I + 1, 7) 和偏移量(1, -6) 以获得您正在寻找的结果。
  • 太好了,谢谢!如果 Cells(I,7) value = "Grand Total" 有没有办法让我跳过它?我应该在 if 语句中嵌套另一个 if 吗?
  • 是的,您可以添加条件If Cells(I, 7).Font.Bold and Cells(I, 7) <> "Grand Total" Then ...
猜你喜欢
  • 2019-05-20
  • 1970-01-01
  • 1970-01-01
  • 2019-12-27
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多