从一个工作表复制行并在另一个工作表的最后一行下插入复制的行

时间:2015-07-09 11:59:36

标签: excel vba excel-vba

我需要您的专业协助。

我正在尝试编写一些代码来复制行并将复制的行插入另一张表的最后一行。

我有一张全局工作表,其中包含我将要复制的数据。它需要查看Q列。

我认为问题是在尝试复制数据时,G列中的数据是合同代码的文本名称。但是这些工作表是Number版本的名称。

例如我有一行在Q列中有BRREPAIRS,我需要将其复制到Sheet 2870,然后我有一行在Q列中有BRVOIDS,我需要将其复制到Sheet 2781。

我可以有多个不同的合同名称,所以我认为我可能需要将文本定义为相等的工作表。所以也许Set BRVOIDS = Sheet.name("2781") Set BRREPAIRS = Sheet.name("2780")等等,直到定义了所有工作表。

当数据被复制时,我需要它来查找包含数据的列a中的最后一行,当发现它将复制的行插入到工作表中时。例如EntireRow.Insert Shift:=xlDown

我目前没有任何代码。我非常感谢所有的帮助。

1 个答案:

答案 0 :(得分:0)

您不需要执行Set BRVOIDS = Sheet.name("2781")之类的操作。事实上,这将是有害的,因为那时你需要通过一个可能很大的Select语句来运行Q列中的数据,以了解要使用的变量。相反,你可以写一个像

这样的函数
Function TargetSheet(ContractName As String) As Worksheet
    'code which uses your secret list to determine target sheet
    'Maybe a Select statement, Maybe a Vlookup -- who knows?
    Set TargetSheet = 'sheet your code determined
End Function

听起来您的代码将向下扫描Q列,确定将相应行复制到的位置。一旦你完成上述功能,你可以将它与这样的结合起来:

Function LastRow(TargetCol As Variant, Optional ws As Variant) As Range
    'assumes TargetCol is something like 1 or "A"
    Dim n As Long

    If IsMissing(ws) Then Set ws = ActiveSheet
    n = ws.Cells(1, TargetCol).EntireColumn.Rows.Count
    Set LastRow = ws.Cells(n, TargetCol).End(xlUp).EntireRow
End Function

在指定工作表的指定列(默认为活动工作表)中,返回包含数据的最后一行(如果列为空,则为第1行)作为范围返回。

你没有给予足够的继续,但是

LastRow("A",TargetSheet(Range("Q" & i).Value)).Insert Shift := xlDown

你可能正在寻找什么。一旦你有一些实际的代码,你为什么不尝试解决它并提出另一个问题(如果需要的话)?