我有一个每日更新的工作簿,该工作簿的副本将保存为该日期。我要做的是为一年中的每个日期都有一个包含列的工作表,并将数据保存到正确的日期列中,以便获得每日记录和运行总计。
我使用了IF功能,除非您更改日期时未保存上一列日期,否则它的效果很好。我想我需要一个宏,但不知道从哪里开始。
提前感谢您的帮助!
这是我的代码:
Sub KPI()
Dim lct As Long
lct = Application.WorksheetsFunction.Match(Worksheets("KPI").Range("A1"), Worksheets("KPI").Range("H2:BP2"), 0)
Worksheets("Shift Summary").Activate
Range("F15").Select
If Range("A4") = "I2" Then
Worksheets("KPI").Activate Cells(lct, 3).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A4") = "J2" Then
Worksheets("KPI").Activate Cells(lct, 21).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
End If
End Sub
答案 0 :(得分:0)
好的,这段代码应该让你入门。
我已将两个范围命名为Shift Summary
工作表
Date = Range("B1")
Safety = Range("F13:F22")
下面的代码应该为您提供一个很好的开始,以获得您可能需要的所有其他元素。在错误检查等方面可能还有更多要补充的内容,但就目前而言,这应该可以帮助您顺利完成。
Sub UpdateSummary()
Dim wksShift As Worksheet, wksSummary As Worksheet
Dim myDate As Date
Set wksShift = Sheets("Shift Summary")
myDate = wksShift.Range("Date")
Set wksSummary = Sheets("KPI")
With wksSummary
Dim myRange As Range
Set myRange = .Rows("2:2").Find(myDate, LookAt:=xlWhole, LookIn:=xlFormulas)
If Not myRange Is Nothing Then
wksShift.Range("Safety").Copy
myRange.Offset(1).PasteSpecial xlPasteValues
End If
End With
End Sub