를 사용하여 정의 된 두 날짜 사이에 날짜가있는 데이터를 새 워크 시트에 복사합니다. 이 기사에서는 지정된 날짜 범위를 기반으로 원시 데이터 워크 시트에서 새 워크 시트로 데이터를 추출하는 매크로를 만듭니다.

원시 데이터는 세 개의 열로 구성됩니다. 첫 번째 열에는 날짜가, 두 번째 열에는 상담원 이름이, 세 번째 열에는 특정 날짜에 상담원이 판매 한 판매 횟수가 포함됩니다.

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.Add after : = Worksheets (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]로 문의 해주세요