将日期在两个定义的日期之间的数据复制到新工作表中在本文中,我们将基于指定的日期范围创建一个宏,以将数据从原始数据工作表提取到新工作表。

原始数据由三列组成。第一列包含日期,第二列包含代理商名称,第三列包含代理商在特定日期的销售数量。

ArrowRawData

在运行宏之前,用户需要两个输入。用户必须定义​​开始和结束日期。基于指定的日期,宏会将定义的日期范围之间的数据提取到新的工作表。

指定开始日期和结束日期后,用户必须单击“提交”按钮以执行宏。

ArrowMainSheet

运行宏时,它将根据日期列对“ RawData”工作表中的数据进行排序,并根据指定的日期范围将数据提取到新插入的工作表中。

ArrowAfterRunningMacro

ArrowOutputSheet

逻辑解释

宏分别从单元格J8和J9获取开始日期和结束日期的输入。该宏首先基于列A的升序对“ RawData”工作表中的数据进行排序。我们已根据日期值对数据进行了排序,以便在为定义的范围应用过滤器后,可以将数据复制到单个范围内。

排序数据后,在其上应用过滤器。应用的过滤器基于两个条件,第一个条件是A列中的值应大于或等于开始日期,第二个条件是A列中的值应小于或等于结束日期。

应用过滤器后,将插入新工作表,然后将过滤后的数据复制并粘贴到其中。

代码说明

Range(“ A1”)。CurrentRegion.Sort key1:= Range(“ A1”),order1:= xlAscending,Header:= xlYes上面的代码用于对定义范围内的数据进行排序。 Key1指定将根据其对数据进行排序的列。排序顺序由order1提供。我们已经定义了升序。要定义降序,可以使用xlDescending常量。标头用于指定数据范围是否包含标头。

Range(“ A1”)。CurrentRegion.AutoFilter字段:= 1,Criteria1:=“> =”&StartDate,运算符:= xlAnd,Criteria2:=“ ⇐”&EndDate上面的代码用于在数据范围内应用过滤器。 Field1指定将在其上应用过滤器的列号。 Criteria1和Criteria2根据要过滤的数据定义条件。

运算符指定运算符,将在两个条件之间使用。

在以下位置添加工作表:=工作表(Worksheets.Count)

上面的代码用于在工作簿中的最后一个工作表之后插入新工作表。

因为我已经在宏中添加了注释和代码,所以人们可以轻松理解代码。

请遵循以下代码

Sub CopyDataBasedOnDate()

'Disabling screen updates

Application.ScreenUpdating = False

'Declaring two variables of Date data type

Dim StartDate, EndDate As Date

'Declaring variable for worksheet object

Dim MainWorksheet As Worksheet

'Initializing the Date variables with starting date from cell J8

'and end date from cell J9 of "Macro" sheet

StartDate = Sheets("Macro").Range("J8").Value

EndDate = Sheets("Macro").Range("J9").Value

'Initializing worksheet object with "RawData" worksheet

Set MainWorksheet = Worksheets("RawData")

'Activating the worksheet object

MainWorksheet.Activate

'Sorting the data by date in column A in ascending order

Range("A1").CurrentRegion.Sort _

key1:=Range("A1"), order1:=xlAscending, _

Header:=xlYes

'Filter the data based on date range between starting date and end date

Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= _

">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate

'Copy the filter data

ActiveSheet.AutoFilter.Range.Copy

'Inserting new worksheet after the last worksheet in the workbook

Worksheets.Add after:=Worksheets(Worksheets.Count)

'Pasting the copied data

ActiveSheet.Paste

'Auto adjusting the size of selected columns

Selection.Columns.AutoFit

Range("A1").Select



'Activating the "RawData" sheet

MainWorksheet.Activate

'Removing filter from the worksheet which we applied earlier

Selection.AutoFilter

Sheets("Macro").Activate

End Sub

如果您喜欢此博客,请在Facebook和Facebook上与您的朋友分享。

我们很希望收到您的来信,请让我们知道我们如何才能改善我们的工作并使您的工作更好。写信给我们[email protected]