【发布时间】:2013-02-05 22:12:39
【问题描述】:
我有一个计算 Z 列差异的电子表格。在月底,我想将这些值复制并粘贴到同一电子表格的另一列中,以跟踪每月的差异。
我有一个宏要从 Z 列复制到 BK 列。
我希望每次运行宏时都从 Z 列复制值并使用以下时间表将其粘贴到新列中:
- 第 1 个月 = 值应粘贴到 BK 列中
- 第 2 个月 = 值应粘贴到 BL 列中
- 第 3 个月 = 值应粘贴到 BM 列中
- 第 4 个月 = 值应粘贴到 BN 列中
- 第 5 个月 = 值应粘贴到 BO 列中
- 第 6 个月 = 值应粘贴到 BP 列中
- 第 7 个月 = 值应粘贴到 BQ 列中
- 第 8 个月 = 值应粘贴到 BR 列中
- 第 9 个月 = 值应粘贴到 BS 列中
- 第 10 个月 = 值应粘贴到 BT 列中
- 第 11 个月 = 值应粘贴到 BU 列中
- 第 12 个月 = 值应粘贴到 BV 列中
第 12 次迭代后,我希望将 Z 列中的值复制到 BK 列(起点)。我相信这可以使用循环来完成?
我很难想出循环逻辑/编码。
Sub copyCurrentToPrevious()
Dim ans As String
On Error Resume Next
Application.ScreenUpdating = False
Sheets("Direct Materials").Activate
ans = MsgBox("Are you sure you want to copy Previous Month Variance to YTD Variance Tracking? This action can not be undone." & vbNewLine _
& vbNewLine & "Select Yes to proceed with the copy/paste operation or Select No to cancel.", vbYesNo + vbExclamation, "Product Costing")
If ans = vbNo Then Exit Sub
Range("Z9:Z220").Copy
Range("BK9").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("Z226:Z306").Copy
Range("BK226").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("Z311:Z471").Copy
Range("BK311").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("Z476:Z524").Copy
Range("BK476").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
MsgBox "Copy / paste operation is complete. Select OK to continue.", vbOKOnly + vbInformation, "Product Costing"
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
你很好,只需将
MONTH和OFFSET一起用于右列选择。祝你好运,我的努力 +1! -
谢谢彼得!问题......但这将如何工作?它是否需要通过一个循环,以便在每次运行宏时自动增加 1 列?
-
不,只需阅读偏移量的工作原理 - 您需要的只是从第一列 BK 开始的班次(在您的情况下是月份数)。您需要将
Range("BK9")替换为Cells([number], [column BK + offset to the right])。所有详细信息都在 VBA 帮助中)