没有大错,但有些小问题: 1、没有申明变量,最前面最好加下个: Dim i%, endrow% endrow = Sheet1.[a65536].End(xlUp).Row 2、没有清除二表的数据: 接着上面加一个 Sheet2.Cells.ClearContents 3、如果运行程序时,如果激活工作表不是表一,就会出错: Worksheets(1).Range("2:2").Copy (Worksheets(2).Cells(3 * i - 7, 1)) '把每条数据抬头贴过去 Worksheets(1).Range(sheet1.Cells(i, 1), sheet1.Cells(i, 256)).Copy (Worksheets(2).Cells(3 * i - 6, 1)) '把数据贴过去 4、用copy不如直接取值 如果按这个思路,比较完整一点的代码: Sub a() Dim i%, endrow% endrow = Sheet1.[a65536].End(xlUp).Row Sheet2.Cells.ClearContents For i = 3 To endrow Worksheets(1).Range("2:2").Copy (Worksheets(2).Cells(3 * i - 7, 1)) '把每条数据抬头贴过去 Worksheets(1).Range(Sheet1.Cells(i, 1), Sheet1.Cells(i, 256)).Copy (Worksheets(2).Cells(3 * i - 6, 1)) '把数据贴过去 Next i End Sub |