我在工作簿中的多个工作表上有数据,我希望将其全部复制到同一工作簿中的一个工作表中。当我运行宏时,我希望首先删除“iPage Data Export”表中的当前数据,然后将其替换为其他表中的数据。
我希望这个过程一次只能发生一列,因为我可能不会带来所有内容。现在我正在努力学习如何只做一个专栏。
我能够从一张纸上复制一列的所有内容,但当它移动到下一张纸时,它会覆盖现有数据。最后,我只能复制一张相同的数据。
以下是我的4个问题:
如何在运行例程之前清除此表中的数据?
如何启动该行底部的每个复制功能(即在带有值的最后一个单元格之后)?我已经在这个和其他董事会上尝试了很多建议而没有成功。我承认我在这方面不是很有经验。
如何将其复制到特定列(目前它似乎默认为A。
如何在粘贴功能期间连接多个列?即如果我想要它插入:A2&“,”B2而不仅仅是A2
Sub CombineData()
Dim Sht As Worksheet
For Each Sht In ActiveWorkbook.Worksheets
If Sht.Name <> "iPage Data Export" Then
Sht.Select
Range("C:C").Copy
Sheets("iPage Data Export").Select
ActiveSheet.Paste
Else
End If
Next Sht
End Sub
答案 0 :(得分:6)
如何在运行例程之前清除此表中的数据?
Sht.Cells.ClearContents
如何启动该行底部的每个复制功能(即在带有值的最后一个单元格之后)?我已经在这个和其他董事会上尝试了很多建议而没有成功。我承认我对此不是很有经验。
Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
详细说明:
Rows.Count
将返回工作表中的行数,因此在旧式* .xls工作簿中,这将返回数字65,536。因此"C" & Rows.Count
与C65536
Range("C" & Rows.Count).End(xlUp)
与转到C65536相同并按 Ctrl + ↑ - 命令End(xlDirection)
告诉程序要去该范围内的最后一个单元格。在这种情况下,我们最终会在包含C列数据的最后一个单元格中结束。
.Offset(1, 0)
表示我们希望通过行数和/或列数返回范围偏移量。 VBA使用RC(行列)引用,因此每当您看到类似Offset()
函数的两个数字作为参数传递时,它通常依次与行和列相关。在这种情况下,我们希望在我们引用的最后一个单元格下面一行的单元格。
总而言之,短语Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
意味着转到C列中的最后一个单元格,直到我们用数据命中最后一个单元格,然后返回下面的单元格 - 这将是下一个空单元格。
如何将其复制到特定列(目前它似乎默认为A。
Range("C:C").Copy Destination:=Sheets("iPage Data Export").Range("A:A")
您可以在同一行传递Destination
参数并实际绕过剪贴板(更快更干净)
如何在粘贴功能期间连接多个列?即如果我想要它插入:A2&amp;“,”B2而不仅仅是A2
假设您想引用A,B和F列 - 只需使用:
Range("A1, B1, F1").EntireColumn
总而言之,您可以将现有代码简化为(未经测试):
Sub CombineData()
Dim Sht As Worksheet
For Each Sht In ActiveWorkbook.Worksheets
If Sht.Name <> "iPage Data Export" Then
Sht.Range("C1:C" & Cells(Sht.Rows.Count, 3).End(xlUp).Row).Copy Destination:=Sheets("iPage Data Export").Range("A:A")
End If
Next
End Sub
答案 1 :(得分:2)
这应该用于复制:
Sub CombineData()
Dim sheet As Worksheet
For Each sheet In Worksheets
If (sheet.Name <> "iPage Data Export") Then
sheet.Select
Range("A1", ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Worksheets("iPage Data Export").Activate
Cells(1, ActiveCell.SpecialCells(xlCellTypeLastCell).Column + 1).Select
ActiveSheet.Paste
End If
Next
End Sub
对于连接,你需要更具体 - 但我想如果你需要特别的帮助,你应该更清楚地关注一个新的问题。