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”的样子。
答
既然你有一个列表对象表,它会容易得多。
要仅从A行的H列复制,请使用Intersect()
对A:H列进行裁剪。
然后复制到一个列表对象表,目的地设置为新列表行:
Intersect(xRg(K).EntireRow, Range("A:H")).Copy _
Destination:=range("Table1").ListObject.ListRows.Add.Range
表名可以发现如下,其默认为表#:
+1
非常感谢你!它非常完美! – Straarup
复制范围A:H,你可以用'相交(XRG(K).EntireRow,范围(” A:H“))。复制...' – Rosetta
对不起,我没有给你,是'商店'/'日志'工作表中有一个列表中,数据不会进入表?列表我的意思是我们通过INSERT菜单插入,然后在Tables组下的Table插入。 – Rosetta
谢谢您的回复! “打印”工作表是一个表格,我可以在“日期”上排序 - 当我将行复制到下一个工作表(商店)时,我希望能够排序日期,因为我想要那些下一个到期日的行将位于最前面。 我希望这可以让它更清晰 – Straarup