繁体   English   中英

从一张纸复制行,并将复制的行插入另一张纸的最后一行下方

[英]Copy row from one sheet and insert copied row under last row in another sheet

我需要您的专家协助。

我正在尝试编写一些代码,这些代码将复制行并将复制的行插入另一张纸的最后一行下方。

我有一个包含要复制数据的全局工作表。 它需要查看Q列。

我认为问题将出在试图复制数据时,G列中的数据是合同代码的文本名称。 但是工作表是用数字版本命名的。

例如,我在Q列中有一个包含BRREPAIRS的行,我需要将此复制到工作表2870,然后我在Q列中有一个具有BRVOIDS的行,我需要将其复制到工作表2781。

我可能有多个不同的合同名称,所以我认为我可能需要定义文本以等于一张纸。 因此,也许Set BRVOIDS = Sheet.name("2781") Set BRREPAIRS = Sheet.name("2780")依此类推,直到定义了所有图纸为止。

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

我目前没有任何代码。 我将非常感谢您的协助。

您不需要执行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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM