首先,我有多张带有值和公式的表格。我已经使用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
此代码复制第一行并将其粘贴到下一行。我需要继续写完最后一行。
提前致谢。对不起,很长的帖子。这是我的第一篇文章!
答案 0 :(得分:4)
除了上面的评论之外,我还想提供一种替代方法,如果我正确理解你要做的事情,那么这种方法更简单,更快速,更容易维护(在给定长度的列中复制公式)行)。
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