如何根据当前系统日期复制单元格?

时间:2017-10-27 10:22:08

标签: excel vba excel-vba

我将我的表附在屏幕截图中。基于包含日期的A列,我想从sheet1中只选择一个从B和C列中得到的值并将其粘贴到sheet2。 日期必须是当前系统日期。帮助ME PLZ

enter image description here

2 个答案:

答案 0 :(得分:1)

使用基于Excel公式的方法非常简单:

enter image description here

尝试以下公式:

=INDEX(B:B,MATCH(TODAY(),A:A,0))

当然,此公式可以在任何其他工作表上,并且不必与上述数据值在同一工作表上。只需确保A列中的日期是没有时间的日期。有关详细信息,您可能需要阅读:http://stackoverflow.com/a/38001028/1153513

更新

根据评论中提出的其他问题详细说明答案。

如果您要查找的日期与Today()不同,则可以使用Date()函数构建。此功能适用于2017年10月30日:

=Date(2017, 10, 30)

与功能YearMonthDay一起,您可以将今天的日期重写为:

=DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY()))

像这样,您可以根据今天的日期动态调整您要搜索的日期。因此,如果您要比提前一年查找完全相同的日期:

=DATE(YEAR(TODAY())-1,MONTH(TODAY()),DAY(TODAY()))

因此,上面针对单元格E24发布的调整后的公式将是(搜索过去一年的今天日期):

=INDEX(B:B,MATCH(DATE(YEAR(TODAY())-1,MONTH(TODAY()),DAY(TODAY())),A:A,0))

答案 1 :(得分:0)

那么你现在没有指定你希望粘贴数据的sheet2上的位置,所以我只是把它们放在A1:A2

Sub test()
Dim lLastUsed As Long
Dim ws1 As Worksheet
Dim ws2 As Worksheet
lLastUsed = Cells(1048576, 1).End(xlUp).Row

Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")

For i = 2 To lLastUsed
    If Replace(Date, "-", ".") = Range("A" & i).Value Then
        ws1.Range("B" & i & ":C" & i).Copy
    End If
Next i

ws2.Range("A1").PasteSpecial
End Sub