簡體   English   中英

VBA - 在最后一個工作日復制和粘貼

[英]VBA - Copy and paste in last workday

我只想將某個范圍的一些值復制到特定行(Excel)。 值在 B2:F2 范圍內這些值應該復制到昨天的行中,但前提是今天是工作日。 如果今天是星期一,則應將值復制到星期五的行。

我在 A2:A3500 中有格式為“dd.mm.yyyy”的日期值。 這些值應復制到 Bx:Fx 中。

如何做到這一點?

我已經嘗試過了,但它不起作用......

Dim sv, sq, k As Long, zl
With Sheets("tblGeneral")
sv = .Cells(6, 1).CurrentRegion.Resize(, 6)
sq = .Cells(2, 2).Resize(, 5)
zl = Application.Match(CLng(Date), .Columns(1), 0)
  If Not IsError(zl) Then
       For k = 2 To 6
         sv(zl - 7, k) = sq(1, k - 1)
       Next k
     .Cells(6, 1).CurrentRegion.Resize(, 6) = sv
  End If

End With

我認為這樣的事情對你有用:

Sub tgr()

    Dim ws As Worksheet
    Dim rTarget As Range
    Dim rCopy As Range
    Dim dtCompare As Date
    Dim dtTarget As Date
    Dim sDateFormat As String

    Set ws = ActiveWorkbook.Worksheets("tblGeneral")
    Set rCopy = ws.Range("B2:F2")
    dtCompare = Date
    sDateFormat = ws.Range("A2").NumberFormat

    Select Case Format(dtCompare, "ddd")
        Case "Mon": dtTarget = dtCompare - 3
        Case "Sun": dtTarget = dtCompare - 2
        Case Else:  dtTarget = dtCompare - 1
    End Select

    Set rTarget = ws.Columns("A").Find(Format(dtTarget, sDateFormat), , xlValues, xlWhole)
    If Not rTarget Is Nothing Then
        rTarget.Offset(, 1).Resize(rCopy.Rows.Count, rCopy.Columns.Count).Value = rCopy.Value
    Else
        MsgBox "Target date [" & Format(dtTarget, sDateFormat) & "] not found.", , "Error"
    End If

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM