2016-07-07 260 views
0

我想通过将来自不同工作表的信息复制到摘要工作表中来进行汇总。更具体地说,我试图将sheet3中的单元格O3和O4分别复制到sheet1中的单元格D3和E3中。然后,我想继续前进,并将单元格O3和O4从表单4分别复制到单元格1中的单元格D4和E4,以此类推我的所有表单。使用循环宏复制和粘贴

我对宏编码完全陌生,所以非常感谢任何帮助,谢谢。我假设你将不得不使用循环。

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

+0

到目前为止你做了什么?选中此项可帮助您启动[link](http://stackoverflow.com/questions/37107574/copy-and-paste-specific-cells-from-one-worksheet-to-another) –

+0

打开宏录制器,然后请按照上面概述的步骤进行操作。这会给你一些代码开始,然后通读[如何避免'.Select'](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba -macros)将其收紧,并学习如何直接处理数据。 – BruceWayne

+0

除非需要复制格式,否则不要在Excel中使用复制和粘贴。只需使用单元格/范围及其值并设置它们即可。 – Mono

回答

1

如果您希望循环显示表格,则不需要明确引用它们,即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 
+0

除非绝对必要,否则请勿使用复制和粘贴并选择和激活功能。复制和粘贴会擦除剪贴板,并且通常会导致“闪烁”宏。使用范围的值并将它们分配给其他范围。 – Mono

+0

我认为他是循环后的帮助,但我明白你的观点,并将相应地编辑,但不确定它必然保证一票否决,虽然它回答了问题... –

+0

回答这个问题是一回事,但一个好的答案是更好的答案会导致不良的习惯imho。 – Mono

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