在特定日期范围内运行宏

时间:2014-12-02 17:23:27

标签: excel vba excel-vba

我有一个宏从几个日常记录表中提取信息,并在主工作簿中编译该信息。在同一个宏中,我操纵数据,以便填充多个图表和图形。我遇到的问题是,如果我可以建立一个我想要查看的日期范围并且仅提取该数据,那么信息将是最有用的。例如,如果我想查看从9/9/14到11/9/14所有机器创建的废料数量。有没有办法可以将它添加到我已经创建的宏的开头?我正在使用的信息看起来像我下面的内容。

Machine     Operator      Date    Production    Scrap
A             w          9/9/14      300          15
B             x          9/9/14      400          0
C             y         9/12/14      150          50
D             z         10/9/14      200          3

2 个答案:

答案 0 :(得分:0)

非常广泛,但我会选择:

  1. 宏的开头调用InputBox作为日期范围(1表示开始1 结束)和商店作为日期变量)
  2. 仅循环遍历行 如果日期单元格的值在定义的变量范围内,则复制 第1步

答案 1 :(得分:0)

这是经过测试的。它将使用不断变化的长度表,您可以根据需要调整其中的概念。玩得开心。

Sub ScrapCount()

Dim str_dateMin As String
Dim str_dateMax As String
Dim dateMin As Date
Dim dateMax As Date
Dim lastRow As Long
Dim subTotal As Double
Dim lookupDate As Date

Dim lRow As Long

lastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
subTotal = 0

str_dateMin = InputBox("Input beginning date, mm/dd/yyyy:")
str_dateMax = InputBox("Input end date, mm/dd/yyyy:")
dateMin = CDate(str_dateMin)
dateMax = CDate(str_dateMax)

For lRow = 2 To lastRow

    lookupDate = Sheets("Sheet1").Cells(lRow, "C").Value

    If dateMin <= lookupDate And lookupDate <= dateMax Then
        subTotal = subTotal + Sheets("Sheet1").Cells(lRow, "E").Value
    End If

Next lRow

MsgBox ("Total scrap for date range = " & subTotal)

End Sub

Input1 Input2 Solution