复制并粘贴带公式的行和列,并在VBA中向下复制到最后一行

4
首先,我有多个带有值和公式的工作表。我已经使用VBA提取了干净的数据,这很好用。例如,“Sheet1”,从第3行到第100行和H到K列是我拥有值的地方。现在,在第3行和B到F列上有一个公式,与H到K列上的值相关联。我无法将第3行复制并将公式粘贴到工作表的最后一行。
其次,我有12个工作表。它们与“Sheet1”具有不同的值和公式。但我希望所有12个工作表都像“Sheet1”一样执行相同的操作。
以下是我用来复制和粘贴我的值的代码(但它只复制一行。我希望它可以到达工作表的底部):
Sub formula_format (data_sheet As String, row_num_start As Integer, column_num_start As Integer, row_num_end As Integer, column_num_end As Integer)

Sheets(data_sheet).Select

 For Row = row_num_start To row_num_end

    If Cells(Row, column_num_start).Value2 = "" Then

       Range(Cells(Row - 1, column_num_start), Cells(Row - 1, column_num_end)).Copy
       ActiveSheet.Cells(Row, column_num_start).Select
       ActiveCell.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
       ActiveCell.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

       Exit For

    End If

Next Row

End Sub

这段代码将第一行复制并粘贴到下一行。我需要继续执行到工作表的最后一行。

提前致谢。抱歉帖子有点长,这是我第一次发帖!


如果在您的IF块中使用了Exit For,那么代码将在第一次行和列等于""时退出For循环,从而停止代码。因此,我的第一个建议是删除Exit For - Scott Holtzman
谢谢Scott!我已经按照你的建议做了。它起作用了(这让我很高兴,因为我一直在解决这个问题已经两天了)!! - James Jordan
1个回答

5

除了我上面的评论,如果我正确理解您要做的事情(在给定的行数中向下复制公式),我想提供一种替代方法,它更简单、更快速和更易于维护。

Sub formula_format(data_sheet As String, row_num_start As Integer, column_num_start As Integer, row_num_end As Integer, column_num_end As Integer)

With Sheets(data_sheet)

    .Range(.Cells(row_num_start, column_num_start), .Cells(row_num_start, column_num_end)).AutoFill _
        Destination:=.Range(.Cells(row_num_start, column_num_start), .Cells(row_num_end, column_num_end))

End With


End Sub

你是对的!通过在我的IF语句中删除“Exit for”,它可以工作,但速度非常慢。因此,我尝试了你的新代码。但出于某种原因,什么也没有发生。 - James Jordan
右端和左端的数字是固定的,因为我将在所有其他工作表中使用此模块。也许它没有调用相关的工作表。但如果是这种情况,你的第一个解决方案也不会起作用。 - James Jordan
@JamesJordan - 很难说。我测试过了,它运行得很好。你是对的,你需要确保传递正确的工作表。如果你逐行调试,你可以看到变量被分配为避免填充的内容,并且你可以使用.Select语句等进行测试,以确保识别的范围是正确的。 - Scott Holtzman
如果你四处搜索,会发现有很多书籍和在线资源可供使用。我脑海中首先想到的是WalkenbachContexturesPeltier - Scott Holtzman
让我们在聊天中继续这个讨论 - James Jordan
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接