我对 VBA 和宏非常陌生,所以如果这很简单,我深表歉意。我找到了类似的帖子,但没有一个能够针对我的问题进行调整。我发现代码可以为工作簿中列表中的每个新条目创建一个新的工作表,效果很好。如果 BT 列中的值与新工作表的名称匹配,我想将主表上的每一行复制到上面宏中创建的相应选项卡中。我发现了以下代码,我以为我已经正确调整了它,但是运行它时出现“编译错误 - 未定义子函数或函数”。我的主表名为“final”,BT 列包含与其他工作表名称匹配的值。我对 -71 的理解是它是被引用列左侧的列数。
Sub copyPasteData()
Dim strSourceSheet As String
Dim strDestinationSheet As String
Dim lastRow As Long
strSourceSheet = "final"
Sheets(strSourceSheet).Visible = True
Sheets(strSourceSheet).Select
Range("BT3").Select
Do While ActiveCell.Value <> ""
strDestinationSheet = ActiveCell.Value
ActiveCell.Offset(0, -71).Resize(1, ActiveCell.CurrentRegion.Columns.Count).Select
Selection.Copy
Sheets(strDestinationSheet).Visible = True
Sheets(strDestinationSheet).Select
lastRow = LastRowInOneColumn("A")
Cells(lastRow + 1, 1).Select
Selection.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Sheets(strSourceSheet).Select
ActiveCell.Offset(0, 2).Select
ActiveCell.Offset(1, 0).Select
Loop
End Sub
每个月我都需要将新数据粘贴到主表上,并希望其他工作表也随之更改。非常感谢任何帮助,这将使我免于多次筛选并将数据复制粘贴到每个选项卡中。我使用了 2007 和 2010 标签,因为我必须能够在这两个标签中运行它。
答案1
lastRow = LastRowInOneColumn("A")
替换上面的行,我认为 LastRowInOneColumn 不是定义的函数,
lastRow = Sheets(strDestinationSheet).Range("A1").End(xlDown).Row
它给出 A 列的最后一行