VBA Excel脚本用于复制包含来自一个工作表的数据的行;粘贴到另一个没有覆盖

时间:2011-05-13 13:37:00

标签: excel-vba excel-2007 vba excel

Excel 2007

我正在尝试运行一个VBA脚本,该脚本将从一个标题为MSL的工作表中复制销售分类帐列表,其中包括DATE,INVOICE NO,COMPANY NAME,TOTAL,SUB-TOTAL,NETT,VAT。

我遇到的第一个问题是我只想复制包含记录的第2行及以后的行,这个数字每个月都会根据销售额而变化。

e.g。 Jan有30排      2月有24排      Mar有40行

接下来,我需要将数据粘贴到标题为“SalesDB”的新工作表中,其中包含相同的列DATE,INVOICE NO,COMPANY NAME,TOTAL,SUB-TOTAL,NETT,VAT。

我遇到的下一个问题是数据被覆盖。

感谢您的帮助 将在下一个小时从学校收集孩子

2 个答案:

答案 0 :(得分:1)

假设Worksheet MLS如下所示,Worksheet SalesDB格式相同:

    A      B           C               D       E           F       G 
1   Date   Invoice No  Company Name    Total   Sub-Total   Nett    VAT  
2   

此代码将从MLS获取数据,并考虑到条目数并添加到SalesDB并避免覆盖。

 Sub CopyPasteSales
     Dim salesData as range, targetRng as range

     Set salesData = Worksheets("MLS").Range("A2:G" & Range("A1").end(xlDown).Row)

     If Worksheets("SalesDB").Range("A2") = vbNullString Then
          Set targetRng = Worksheets("SalesDB").Range("A2") //If no data in SalesDB start in row 2
     Else
          Set targetRng = Worksheets("SalesDB").Range("A1").end(xlDown).Offset(1,0) //If data already in SalesDB, find next free row
     End if

     salesData.Copy Destination:= targetRng
 End Sub

答案 1 :(得分:0)

短而动态:(未经测试,可能包含拼写错误)

Sub CopyData()
    Dim src As Range, dest As Range
    'set source, exclude first row
    Set src = Worksheets("MLS").Range("A2").CurrentRegion.Offset(1, 0)
    'destination is one row below last row
    Set dest = Worksheets("SalesDB").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    src.Copy Destination:=dest
End Sub