如何用VBA将多行非空交易数据复制到新表空白行?
批量复制客户卡交易数据的VBA解决方案
原代码仅固定复制了AA11:AD11单行数据,要实现批量复制所有交易行,需要添加循环逻辑遍历所有有数据的行,具体修改如下:
Sub CopyTransactions() Application.ScreenUpdating = False Dim TransactionsSheet As Worksheet Dim lastRow As Long Dim i As Long Dim targetRow As Long Set TransactionsSheet = Worksheets("CardPaymentsLog") ' 获取AA列有数据的最后一行行号 lastRow = TransactionsSheet.Cells(TransactionsSheet.Rows.Count, "AA").End(xlUp).Row ' 获取A列目标区域的起始空白行 targetRow = TransactionsSheet.Cells(TransactionsSheet.Rows.Count, "A").End(xlUp).Offset(1, 0).Row ' 从第11行开始遍历所有交易行(假设数据从第11行开始) For i = 11 To lastRow ' 复制当前行AA到AD列的数据到目标行 TransactionsSheet.Range("AA" & i & ":AD" & i).Copy TransactionsSheet.Cells(targetRow, 1).PasteSpecial xlPasteValues ' 目标行下移一行 targetRow = targetRow + 1 Next i Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
关键修改说明:
- 新增
lastRow变量:获取AA列数据的最后一行,确定需要遍历的总行数 - 新增循环逻辑:用
For...Next遍历从第11行到最后一行的所有交易数据 - 动态更新
targetRow:每次复制后将目标行下移,确保数据依次粘贴到空白行
如果你的交易数据起始行不是11,只需修改循环的起始值i = 11为实际的起始行号即可。
内容的提问来源于stack exchange,提问作者am_excel
相关产品推荐
相关产品推荐

