创建VBA以根据指定日期复制和粘贴数据

时间:2017-04-04 19:31:03

标签: excel vba excel-vba

如何编写可在同一工作簿中自动将数据从一个工作表复制并粘贴到另一个工作表的VBA?我有7列:提交者,提交日期,hcp号,hcp名称,FRN,免除类型(表B中的表单类型),程序类型和行号。工作表A自动刷新,因此数据始终是最新的。唯一需要注意的是,拉入表B的数据必须基于提交的日期实时进行。我知道我必须刷新工作表B来更新其数据。没关系。

Sheet A

Sheet B

例如:

今天是2017年4月4日。我希望从提交日期4/4/2017的7列(来自表A)中提取所有数据,并将它们添加到表B中。这必须在我单击刷新所有数据时发生。

VBA也应提取周末提交的数据。

这是我到目前为止所做的:



Sub Refresh()
    Dim i As Long
    Dim x As Double
    Dim Worksheet1 As Worksheet
    Dim Worksheet2 As Worksheet
    Dim ColumnB As Long
    Dim ColumnC As Long
    Dim ColumnD As Long
    Dim ColumnE As Long
    Dim ColumnF As Long
    Dim ColumnG As Long
    Dim ColumnH As Long
    Dim ColumnI As Long

    Set Worksheet1 = ActiveWorkbook.Worksheets("AUTOTRACK") ' Change name of sheet if necessary 
    Set Worksheet2 = ActiveWorkbook.Worksheets("Tracking Sheet") ' Change name of sheet if necessary
    ColumnB = 1  ' Change if you want other columns, 1 = A-column, 2 = B etc
    ColumnC = 2
    ColumnD = 3
    ColumnE = 4
    ColumnF = 5
    ColumnG = 6
    ColumnH = 7
    ColumnI = 8

    For i = 1 To Worksheet1.UsedRange.Rows.Count
        If Worksheet1.Cells(i, ColumnB).Value = DateAdd(
“d”, -1,  Then
            x = Worksheet1.Cells(i, ColumnA).Value
            Exit For
        End If
    Next




日期不完整,因为我不想拥有日期范围。它应该根据今天的日期 - 1天提取数据。另一个问题是列不匹配。总共有8个,表A中的表H在表B中不相同。

2 个答案:

答案 0 :(得分:1)

MsgBox "Job Done!"

此代码将sheetA中的A1到A7的单元格复制到SheetB。 您可以根据需要提供范围作为来源和目的地

答案 1 :(得分:-1)

我发布了一个示例代码,它将帮助您解决问题。

Sub copypaste()

Dim r As Range, filt As Range, d1 As Long, d2 As Long

With Worksheets("sheet1") 
d1 = .Range("F1").Value 
d2= .Range("G1").Value .Range("A1").CurrentRegion.AutoFilter field:=.Range("A1").Column, Criteria1:=">=" & CDate(d1) _ , Operator:=xlAnd, Criteria2:="<=" & CDate (d2)

 = .Range("a1").CurrentRegion.SpecialCells(xlCellTypeVisible)

With Worksheets("sheet2") .Cells.Clear filt.Copy .Range("a1").PasteSpecial

End Sub