副本具有使用VBA两个限定的日期以新的工作表之间的最新数据
将日期在两个定义的日期之间的数据复制到新工作表中在本文中,我们将基于指定的日期范围创建一个宏,以将数据从原始数据工作表提取到新工作表。
原始数据由三列组成。第一列包含日期,第二列包含代理商名称,第三列包含代理商在特定日期的销售数量。
在运行宏之前,用户需要两个输入。用户必须定义开始和结束日期。基于指定的日期,宏会将定义的日期范围之间的数据提取到新的工作表。
指定开始日期和结束日期后,用户必须单击“提交”按钮以执行宏。
运行宏时,它将根据日期列对“ RawData”工作表中的数据进行排序,并根据指定的日期范围将数据提取到新插入的工作表中。
逻辑解释
宏分别从单元格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]