复制并粘贴到B-S列的下一个空行中的宏

时间:2019-03-05 20:04:29

标签: excel vba

我有一份连续的月度报告来说明我们的销售情况。 每天,我都会在一份报告中获得每个分支的销售额。我在单元格E1中保存了一个Vlookup公式,该公式将根据我的工作将报表中的信息移到另一张工作表中。我可以复制E1并将其粘贴到具有B-S列范围的一行中的每个单元格中,然后再次复制该行并粘贴值,以便它不会更改我的金额。第二天,我在下一行重复执行该过程,这样我可以得出每个分支机构以及整个公司每月的运行总额。我的每月图表始终围绕23行。(在Excel中为6-28行)

我需要一个可以执行以下操作的宏: 在1号,我运行宏,它将复制我的单元格E1并将其粘贴到B6-S6行中,然后复制该行并粘贴该行中的值。 然后,在每月的2号,我运行宏,然后重复执行,但在B7-S7行上。 然后,在每月的3号,我运行宏,然后重复执行,但在B8-S8行上。

这可能吗?

这就是我只录制一个宏所具有的。

Sub Charges()
'
'Charges Macro
'Run Formula for charges
'
' Keyboard Shortcut: Ctrl+Shift+C
'
    Range("E1").Select
    Selection.Copy
    Range("B8:S8").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
 End Sub

1 个答案:

答案 0 :(得分:0)

也许这样?您可以直接传输值,而无需复制和粘贴。

阅读this,了解如何通过避免选择/激活来提高代码效率。

Sub Charges()

Dim n As Long

n = WorksheetFunction.Max(6, Range("B" & Rows.Count).End(xlUp).Row + 1)

Range("B" & n & ":S" & n).Value = Range("E1").Value

End Sub

如果您要复制公式,然后用值覆盖,则可以使用此

Sub Charges()

Dim n As Long

n = WorksheetFunction.Max(6, Range("B" & Rows.Count).End(xlUp).Row + 1)

Range("E1").Copy Range("B" & n & ":S" & n)

Range("B" & n & ":S" & n).Value = Range("B" & n & ":S" & n).Value

End Sub