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ワークシートに2つの範囲の名前を付けました

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 に答える