excel同一工作簿的不同工作表,怎么把这些工作表的不同行数据分别复制到各自工作表的同一行呢?
在 VBA 中,可以使用以下代码将 Excel 不同工作表的不同行数据复制到各自的同一行:
Sub CopyDataFromWorksheets()
Dim sourceSheet As Worksheet, targetSheet As Worksheet
Dim sourceRange As Range, targetRange As Range
'设置源工作表和目标工作表
Set sourceSheet = ThisWorkbook.Worksheets("Sheet1") '源工作表
Set targetSheet = ThisWorkbook.Worksheets("Sheet2") '目标工作表
'设置源工作表中需要复制的行区域
Set sourceRange = sourceSheet.Range("A2:F2") '设置需要复制的行区域
'设置目标工作表的起始行数,每次复制后自动加 1
targetRow = 2
'循环从源工作表复制所有行数据
For i = 1 To 10
'设置目标工作表的目标行区域
Set targetRange = targetSheet.Range("A" & targetRow)
'在目标行区域中粘贴源工作表中的行数据
sourceRange.Copy targetRange
'将目标行数加 1
targetRow = targetRow + 1
'设置下一个要复制的源工作表的行号
Set sourceRange = sourceSheet.Range("A" & i + 2 & ":F" & i + 2)
Next i
'释放对象变量
Set sourceSheet = Nothing
Set targetSheet = Nothing
Set sourceRange = Nothing
Set targetRange = Nothing
End Sub
上述代码中,需要替换源工作表名称、目标工作表名称和需要复制的行区域。
其中,Set sourceSheet = ThisWorkbook.Worksheets("Sheet1") 表示设置源工作表为当前活动工作簿(ThisWorkbook)中名为 “Sheet1” 的工作表。Set targetSheet = ThisWorkbook.Worksheets("Sheet2") 表示设置目标工作表为当前活动工作簿中名为 “Sheet2” 的工作表。
Set sourceRange = sourceSheet.Range("A2:F2") 表示设置需要从源工作表中复制的行区域为第 2 行的 A 列到 F 列。在上述代码中,循环复制 10 次,从源工作表中取第 2 行至第 11 行的数据并复制到目标工作表中。具体数据范围可以根据实际需求进行修改。
Set targetRange = targetSheet.Range("A" & targetRow) 表示设置目标工作表的目标行区域为目标工作表中的第 targetRow 行的 A 列至最后一列。
最后将目标行数加 1,以便复制下一行数据。