【问题标题】:Extracting data between to dates and paste to new sheet提取日期之间的数据并粘贴到新工作表
【发布时间】:2015-10-02 17:25:36
【问题描述】:

我有一些 excel 文件,每个文件都包含过去 30 年一年中每一天的 3 行数据(日期 (A1)、AVG (B1)、CV (C1))。现在,我想将它们除以收集它们的年份(例如,过去 20 年、过去 10 年、去年,甚至过去 6 个月)。所以,我用几行将开始和结束日期放在两个单元格中,并过滤掉这两个日期之间的数据(单元格)。

Dim lngStart As Long, lngEnd As Long
lngStart = Range("E1").Value 'assume this is the start date
lngEnd = Range("E2").Value 'assume this is the end date
Range("A2:A4000").AutoFilter field:=1, _
    Criteria1:=">=" & lngStart, _
    Operator:=xlAnd, _
    Criteria2:="<=" & lngEnd

`

再添加几行以将这些数据复制到新工作表中。

`Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste´

但是,我有几个这样的工作表,我必须在每个工作表中为过去 30 年、20 年、10 年、5 年、3 年、1 年、6 个月、3 个月和 1 个月制作单独的工作表。 我想知道是否有机会有一个宏来提取所有这些时间段(例如,根据数据库中的最后一个日期,最后 10 年)并将它们复制到由其自己的特定时间段(例如“10 年”)标记的新工作表中一次!? 因此,结果将是 9 个新标记的工作表,每个工作表有三列(日期 (A1)、AVG (B1)、CV (C1))! 对不起,长篇大论:)
非常感谢您的帮助,期待您的回音!

最好, Neos116

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    Morpheus:我正在努力解放你的思想,Neo。但我只能给你看门。你是必须经历它的人。

    让我们看看我们在这里得到了什么... 1 勺“即时添加新工作表”:

        ActiveWorkbook.Sheets.Add Before:=Worksheets(Sheets.Count)
        ActiveSheet.Name = "blabla"
    

    一杯“寻边”:

    i=2 'Assuming your first row contains column names
    Do While CDate(Cells(i, "A")) >= DateAdd("m", Now, -1) 'to get last month dates only
        i = i + 1
    loop
    'At this point i holds the row number of the very first record earlier then last 1 month
    

    只需一点点“复制和粘贴您的范围”:

    Range(Cells(2, "A"), Cells(i-1, "C")).Copy
    Sheets("1m").Select
    Cells(2, "A").PasteSpecial xlPasteAll
    

    你得到了食谱,你得到了一个原料,现在试着自己做饭。

    祝你好运! :)

    【讨论】:

    • 非常感谢!我喜欢你的解决方案:)
    • 如果您遇到问题,请随时向我询问任何详细信息 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多