【问题标题】:Macro copy and paste using loop使用循环复制和粘贴宏
【发布时间】:2016-11-09 23:21:31
【问题描述】:

我正在尝试通过将不同工作表中的信息复制到摘要工作表中来进行摘要。更具体地说,我试图将单元格 O3 和 O4 从 sheet3 复制到 sheet1 中的单元格 D3 和 E3 中。然后我想继续前进并将第 4 页中的单元格 O3 和 O4 分别复制到 sheet1 中的单元格 D4 和 E4 中,依此类推。

我对宏编码完全陌生,因此非常感谢任何帮助,谢谢。我假设必须使用循环。

P.S 工作表以公司命名(例如“DataGroup”而不是“Sheet3”)会影响代码吗?

【问题讨论】:

  • 到目前为止你做了什么?选中此项以帮助您开始link
  • 打开宏记录器,然后按照您上面概述的步骤进行操作。这将为您提供一些代码,然后通读 how to avoid .Select 以收紧它,并学习如何直接处理数据。
  • 除非您需要复制格式,否则不要在 Excel 中使用复制和粘贴。只需使用单元格/范围及其值并设置它们。

标签: excel vba loops macros copy-paste


【解决方案1】:

如果您的工作簿包含一些工作表,其中一个名为 Summary,则此代码会将单元格 A1 的值从其他每个工作表复制到 Summary 的 A 列。您可以根据自己的需要进行调整。

Dim ws As Worksheet, rowDest As Integer
rowDest = 1
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "Summary" Then
        Worksheets("Summary").Cells(rowDest, 1).Value = ws.Range("A1").Value
        rowDest = rowDest + 1
    End If
Next ws

【讨论】:

    【解决方案2】:

    如果您希望循环遍历工作表,则无需明确引用它们,即Sheets("DataGroup"),您可以使用Sheets(1),这样就可以轻松地循环遍历每个整数。

    例如

    Sub Copying()
    Dim i As Integer, j As Integer
    j = Sheets.Count
    For i = 2 To j
        Sheets(1).Range("D" & i + 1) = Sheets(i).Range("O3").Value
        Sheets(1).Range("E" & i + 1) = Sheets(i).Range("O4").Value
    Next i
    End Sub
    

    【讨论】:

    • 除非绝对必要,否则不要使用复制和粘贴以及选择和激活功能。复制和粘贴将擦除您的剪贴板,并且通常会导致“闪烁”宏。使用 .Values 范围并将它们分配给其他范围。
    • 我认为他在循环播放方面得到了帮助,但我明白你的意思并会相应地进行编辑,但不确定它是否一定需要投反对票,尽管它回答了问题......
    • 回答问题是一回事,但一个好的答案比一个导致坏习惯的答案更好。
    • 非常感谢。我试过了,它奏效了。唯一的事情是我不想包含数据表单 Sheet2。有没有一种简单的方法来编辑代码,还是删除 sheet2 更容易?
    • 你可以把For i= 2 to j改成For i = 3 to j
    猜你喜欢
    • 2020-08-10
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    相关资源
    最近更新 更多