【问题标题】:Copy row from one sheet and insert copied row under last row in another sheet从一张纸复制行并在另一张纸的最后一行下插入复制的行
【发布时间】:2015-07-09 11:59:35
【问题描述】:

我需要您的专家帮助。

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

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

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

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

我可以有多个不同的合同名称,所以我想我可能需要将文本定义为等于一张纸。所以可能是 Set BRVOIDS = Sheet.name("2781") Set BRREPAIRS = Sheet.name("2780") 等等,直到所有工作表都被定义。

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

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

【问题讨论】:

  • 您的问题是关于复制/粘贴的机制还是关于如何确定各个复制操作的目标表?我认为您的问题是关于后者的,但如果是这样,您没有提供足够的信息。你怎么知道 BRREPARS 应该针对表 2870?如果您说出这些信息的来源,那么也许我们可以提出解决方案。
  • @JohnColeman,您好,这两者都有点关系,主要是关于个人复制操作。我有一个列表,说明每个代码代表什么。

标签: vba excel


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    相关资源
    最近更新 更多