【发布时间】:2018-11-16 12:56:15
【问题描述】:
我的 excel 文件,有多个标签。其中一张是“已安排员工访问”,另一张是“已安排 IERWAA 查找”。这两张表具有相同的数据(A 到 J 列),但它们的来源不同(这就是为什么它们位于两个单独的表中)。标题在第 1 行,行数不固定。
我有第三个选项卡“主”,我希望这两个选项卡中的数据相互附加显示。第 1 行将有标题,这对于所有 3 张工作表都是相同的。
我写了一个宏,但它只是复制标题而不是数据。
Dim Sht As Worksheet
For Each Sht In ActiveWorkbook.Worksheets
If Sht.Name = "Employee Access Arranged" Or Sht.Name = "IERWAA Lookup
Arranged" Then
Sht.Select
LastRow = Range("A6553").End(xlUp).Row
Range("A2", Cells(LastRow, "J")).Copy
Sheets("Master").Select
Range("A6553").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Else
End If
Next Sh
有人可以帮助我如何从两个工作表而不是标题中复制数据。此外,由于行数发生变化,我希望它是动态的以自动拾取最后填充的行。
请注意:这不是另一个问题的重复。我不想只匹配两张纸上的值,而是两张纸上的所有值。此外,这个问题是独一无二的,因为在大多数情况下,最后一列“J”可能没有值,但仍需要复制整列
提前谢谢你。
【问题讨论】:
-
我无法重现 - 您从空中获取
LastRow值的列是吗? -
咳咳,你有超过 6553 行的数据吗?
-
不,我没有超过 6553 行数据。但是由于行数如此之多而不是实际数量,因此处理时间会更长,不是吗? dwirony-yes 最后一列在某些情况下可以为空,因为它更像是一个 cmets 列。
-
但由于行数如此之多而不是实际数量,因此需要更长的时间来处理,不是吗? - 不是。请改用
"A" & Rows.Count。您所做的只是获取一个单元格的Range对象,然后在其上调用.End(xlUp)。这个数字没有任何区别,除了LastRow是否正确或没有给出任意数量的行。 -
不要做
sht.Select。不要使用隐式的ActiveSheet引用(例如Range、Cells),而是使用sht变量限定它们并执行sht.Range、sht.Cells。而不是Range(...).Select,然后是ActiveSheet.Paste,而是sht.Range(...).Paste。避免使用Select和Activate,并使用显式Worksheet对象限定所有工作表成员调用。