有没有办法让一个简单的粘贴宏,通过匹配日期粘贴到单元格?

时间:2015-02-26 15:09:47

标签: excel excel-vba vba

enter image description here enter image description here

我有一个写有宏的excel工作簿。它从一张纸上获取信息并将其粘贴到另一张纸上。但是每个月数据范围都会发生变化。目前跟踪12个月的滚动。因此,当前月份是2月,我们使用2014年2月至2015年1月的数据。

据说两张纸都有当前日期。有没有办法添加到我预先存在的宏,以将其粘贴到与正确的日期范围对齐的正确单元格中。或者将12行数据并将其粘贴到当前月份范围内的另一张表中?

Sub Paste_to_UnitProfile()
'
' Paste_to_UnitProfile Macro
'

'
    Range("D2:D13").Select
    Selection.Copy
    ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
    Sheets("Unit Profile").Select
    Range("G151").Select
    ActiveSheet.Paste

End Sub

我正在添加我试图使用的INDEX / MATCH,但我是新手,我确信有一些小东西我正在搞砸:

=INDEX(PS250-'1EngineHours'!D2:D13,MATCH(E151,UnitProfile!G151:G170,0))

1 个答案:

答案 0 :(得分:0)

我将此添加到开头以获取要读取的第一行和要写入的第一行。

i = 1
Do Until IsEmpty(Cells(i, 4).Value)
    i = i + 1
Loop
StartRead = i - 12
EndRead = i - 1

i = 9
Do Until Sheets("Unit profile").Cells(i, 4).Value = Sheets("Unit profile").Cells(5, 2).Value
        i = i + 1
Loop
StartWrite =  i

然后只需将粘贴代码更改为:

Range(Cells(StartRead, 4), Cells(EndRead, 4)).Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Unit Profile").Select
Cells(StartWrite, 5).Select
ActiveSheet.Paste

我还要添加到开头:

Application.ScreenUpdating = False

然后到最后:

Application.CutCopyMode = False
Application.ScreenUpdating = True

只是为了让它更整洁