excel - VBA代码将集合值从主表复制到多张表的最后一行
问题描述
我对使用 VBA 还很陌生,但我会尽量让我的问题清晰简洁。
我有一组常规数据(85 行),我将其复制到 Excel 上的“主工作表”中。
我想编写一个代码,将主工作表的每一行复制到单独工作表(85 张)上的下一个空行上。
我知道如何在任何给定的工作表上查找和设置最后一行,但我无法锻炼如何粘贴到目标工作表的最后一行,而不必分别“设置”/定义每张工作表的最后一行。
为了更好地解释:
我想从“主工作表”上的 A2:A4 中获取值并将它们粘贴到工作表“Aa”的下一个空行然后从“主工作表”上的 B2:B4 中复制值并将它们粘贴到下一个空行中工作表“Bb”的行然后来自“主工作表”上C2:C4的值并粘贴到工作表“Cc”的下一个空行......(依此类推)
您可以提供的任何帮助将不胜感激。
解决方案
我问了一些问题,但没有回复...试试看,请下一个代码。它被设计为在同一个工作簿 (ThisWorkbook) 上工作,但评论使用不同的工作簿。该代码使用通用范围,包括最后 K 列,但可以通过简单地将 K 替换为最后一列字母来扩展它。它还假设所有列都具有相同的行数。
该代码使用数组并在内存中工作,应该足够快。请对其进行测试并给我们一些反馈:
Sub pasteRangeFromMasterSheet()
Dim sh As Worksheet, ws As Worksheet, wb As Workbook, lastRow As Long, lastR As Long, rngArr As Variant
Set sh = ActiveSheet 'you have to use here your 'master sheet'
lastRow = sh.Range("A" & Rows.count).End(xlUp).Row 'master sheet last row
rngArr = sh.Range("A2:K" & lastRow).value 'you have to use your last column letter instead of 'K'
Set wb = ThisWorkbook 'in case of a different workbook, you must set it here
For Each ws In wb.Worksheets
If ws.Name <> sh.Name Then 'in case of copying in sheets of the same workbook
lastR = ws.Range("A" & Rows.count).End(xlUp).Row + 1 'last (empty) row
'Drop the values in the last empty row:
ws.Range("A" & lastR).Resize(UBound(rngArr, 1), UBound(rngArr, 2)).value = rngArr
End If
Next
End Sub
如果是空工作表(ws),该代码也可以适应复制列标题。
推荐阅读
- vue.js - 按下分配的相应键时,@keyup 事件根本不会触发
- javascript - Nodemon没有重新加载页面
- pytorch - Word2vec CBOW 模型实现,与原算法的偏差
- reactjs - 在 reactjs 中使用嵌套路由时,路由没有使用后退和前进浏览器按钮响应
- c# - 将异步方法传递给 Action 参数时结果不完整
- haskell - 我如何在haskell中实现[x if func(x,lst) for x in list]?
- excel - 查找并查找下一个函数
- r - R:跨多个数据帧的ifelse循环
- java - 如何序列化 JSON 并将其写入文件?
- java - Elasticsearch Java 客户端 SearchResponse 无法识别聚合/存储桶