1

我有一个每天更新的工作簿,并且该工作簿的副本保存为该日期。我要做的是为一年中的每个日期制作一个包含一列的表格,并将数据保存到正确的日期列中,以便获得每日记录和运行总计。

我使用了 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
4

1 回答 1

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
于 2012-08-23T15:46:14.293 回答