我有一个工作簿中的多个工作表上的数据,我想复制到同一工作簿中的一个工作表.当我运行宏时,我希望首先删除"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
Run Code Online (Sandbox Code Playgroud)
在运行例程之前,如何清除此表中的数据?
Sht.Cells.ClearContents
Run Code Online (Sandbox Code Playgroud)
如何让它在该行的底部启动每个复制功能(即在具有值的最后一个单元格之后)?我已经在这个和其他董事会上尝试了很多建议而没有成功.我承认我在这方面不是很有经验.
Range("C" & Rows.Count).End(xlUp).Offset(1, 0)
Run Code Online (Sandbox Code Playgroud)
详细地:
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")
Run Code Online (Sandbox Code Playgroud)
您可以Destination在同一行中传递参数并实际绕过剪贴板(更快更清洁)
如何在粘贴功能期间连接多个列?即如果我想要它插入:A2&","B2而不是A2
假设您想引用A,B和F列 - 只需使用:
Range("A1, B1, F1").EntireColumn
Run Code Online (Sandbox Code Playgroud)
总而言之,您可以将现有代码简化为(未经测试):
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1903 次 |
| 最近记录: |