Excel:使用VBA将行复制到另一个表中的表格

问题描述:

我目前正在Excel中处理电子表格。Excel:使用VBA将行复制到另一个表中的表格

我的目标是创建一个VBA,将具有特定条件的行复制到我的工作簿中的下一张工作表和“日志表”中。

我VBA看起来是这样的:

Sub ImportRows() 

    Dim xRg As Range 
    Dim xCell As Range 
    Dim I As Long 
    Dim J As Long 
    Dim K As Long 
    I = Worksheets("Print").UsedRange.Rows.Count 
    J = Worksheets("Store").UsedRange.Rows.Count 
    If J = 1 Then 
     If Application.WorksheetFunction.CountA(Worksheets("Store").UsedRange) = 0 Then J = 0 
    End If 
    Set xRg = Worksheets("Print").Range("I2:I" & I) 
    On Error Resume Next 
    Application.ScreenUpdating = False 
    For K = 1 To xRg.Count 
     If CStr(xRg(K).Value) = "Print" Then 

      xRg(K).EntireRow.Copy Destination:=Worksheets("Store").Range("A" & J +1) 
      xRg(K).EntireRow.Copy Destination:=Worksheets("Log").Range("A" & J +1) 
      xRg(K).EntireRow.Delete 
      If CStr(xRg(K).Value) = "Print" Then 
       K = K - 1 
      End If 
      J = J + 1 
     End If 
    Next 
    Application.ScreenUpdating = True 
End Sub 

的问题是,当我复制从Sheet1中调用打印数据在一个表,但是当我复制到了名为“存储”下一张(或日志) - 数据不会进入表格,但会出现在表格下方的第一行,无法对数据进行排序。

有关如何解决此问题的任何建议?我认为,这可能与目标范围有关,但我不确定。 “:H A”,而不是“EntireRow”当从“打印”复制到“存储”我只希望复制单元格 -


我也与数据的,我是拷贝量挣扎。


我是相当新的Excel!我感谢任何帮助!

谢谢!


我上传了一张屏幕截图,显示在运行宏后“Store”的样子。

enter image description here

http://imageshack.com/a/img922/9446/gpL9Ov.png

+0

复制范围A:H,你可以用'相交(XRG(K).EntireRow,范围(” A:H“))。复制...' – Rosetta

+0

对不起,我没有给你,是'商店'/'日志'工作表中有一个列表中,数据不会进入表?列表我的意思是我们通过INSERT菜单插入,然后在Tables组下的Table插入。 – Rosetta

+0

谢谢您的回复! “打印”工作表是一个表格,我可以在“日期”上排序 - 当我将行复制到下一个工作表(商店)时,我希望能够排序日期,因为我想要那些下一个到期日的行将位于最前面。 我希望这可以让它更清晰 – Straarup

既然你有一个列表对象表,它会容易得多。

要仅从A行的H列复制,请使用Intersect()对A:H列进行裁剪。

然后复制到一个列表对象表,目的地设置为新列表行

Intersect(xRg(K).EntireRow, Range("A:H")).Copy _ 
    Destination:=range("Table1").ListObject.ListRows.Add.Range 

表名可以发现如下,其默认为表#:

Menu

table name

+1

非常感谢你!它非常完美! – Straarup