【发布时间】:2016-05-20 08:42:58
【问题描述】:
首先,我有多个带有值和公式的工作表。我使用 VBA 来提取干净的数据,效果很好。例如“Sheet1”,从第 3 行到第 100 行和第 H 列到 K 是我有值的地方。现在,我在第 3 行和 B 到 F 列有一个公式,该公式与 H 到 K 列上的值相关联。我在复制第 3 行并将公式粘贴到工作表的最后一行时遇到问题。
其次,我有 12 个工作表。它们具有与“表 1”不同的值和公式。但我希望将相同的操作应用于所有 12 张表格,例如“表格 1”。
这是我用来复制和粘贴值的代码(但它只复制一行。我希望它转到工作表底部):
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
此代码复制第一行并将其粘贴到下一行。我需要继续到最后一行。
提前致谢。对不起,很长的帖子。这是我的第一篇文章!
【问题讨论】:
-
在
Exit For块内使用Exit For代码将在第一次行和列 = "" 时退出 For 循环,从而停止代码。所以,我的第一个建议是删除Exit For -
谢谢斯科特!我已经按照你的建议做了。它有效(这让我很高兴,因为我已经研究这个问题 2 天了)!!