이 기사에서는 두 날짜 사이의 평일을 추출하는 매크로를 만듭니다.

이 예에서는 매크로를 실행하기 전에 시작 날짜와 종료 날짜를 지정해야합니다. 매크로는 J8 셀에서 시작 날짜 값을 선택하고 J9 셀에서 종료 날짜 값을 선택합니다. 시작 및 종료 날짜를 지정한 후 “제출”버튼을 누르거나 단축키 Alt + F8을 눌러 매크로를 실행할 수 있습니다.

ArrowMainSheet

매크로를 실행하면 새 시트에서 두 날짜 사이의 평일을 반환합니다. 새로 삽입 된 워크 시트에는 A 열의 평일과 B 열의 각 날짜가 포함됩니다. B 열의 출력 날짜는 dd.mm.yy 형식입니다.

연속 된 두 주를 구분하기 위해 매주 뒤에 빈 행이 표시됩니다.

ArrowAfterRunningMacro

논리 설명

매크로에서는 평일 기능을 사용하여 평일과 주말을 구분했습니다. 형식 기능은 필요한 형식으로 날짜를 표시하는 데 사용됩니다.

평일 기능

Weekday 함수는 요일을 나타내는 정수 값을 반환합니다.

구문

평일 (Date_Value, [First_Day_Of_Week])

Date_Value는 요일을 찾을 날짜 값을 지정합니다.

First_Day_Of_Week는주의 시작일로 간주 할 요일을 지정합니다. 정수 값 또는 FirstDayOfWeek 열거에서 선택한 값을 입력으로 사용합니다. 값을 지정하지 않으면 FirstDayOfWeek.Sunday가 기본값으로 사용됩니다.

Enumeration value

Integer value

Remarks

FirstDayOfWeek.System

0

First day of week specified in system

settings

FirstDayOfWeek.Sunday

1

Sunday (default)

FirstDayOfWeek.Monday

2

Monday

FirstDayOfWeek.Tuesday

3

Tuesday

FirstDayOfWeek.Wednesday

4

Wednesday

FirstDayOfWeek.Thursday

5

Thursday

FirstDayOfWeek.Friday

6

Friday

FirstDayOfWeek.Saturday

7

Saturday

매크로 코드에서 볼 수 있듯이 Weekday (i, 2)를 사용하여 월요일을주의 첫날로 지정했습니다.

포맷 함수

Format 함수는 날짜 식을 입력으로 받아 형식화 된 문자열로 반환합니다.

Format 함수 구문

형식 (날짜 _ 값, 형식)

Date_Value는 날짜 데이터 유형의 값을 지정합니다.

형식은 문자열 값을 사용하여 필요한 날짜 형식 유형을 지정합니다.

다음 표는 필수 날짜 / 시간 형식을 만드는 데 사용할 수있는 몇 가지 인기있는 문자를 정의합니다.

Character

Description

d

displays the day as a number without a leading zero (1–31)

dd

displays the day as a number with a leading zero (01–31)

ddd

displays the day as an abbreviation (Sun–Sat)

dddd

displays the day as a full name (Sunday–Saturday)

w

displays the day of the week as a number (1 for Sunday through 7 for

Saturday)

ww

displays the week of the year as a number (1–54)

m

displays the month as a number without a leading zero (1–12)

mm

displays the month as a number with a leading zero (01–12)

mmm

displays the month as an abbreviation (Jan–dec)

mmmm

displays the month as a full month name (January–december)

q

displays the quarter of the year as a number (1–4)

y

displays the day of the year as a number (1–366)

yy

displays the year as a 2-digit number (00–99)

yyyy

displays the year as a 4-digit number (100–9999)

h

displays the hour as a number without leading zeros (0–23)

hh

displays the hour as a number with leading zeros (00–23)

n

displays the minute as a number without leading zeros (0–59)

nn

displays the minute as a number with leading zeros (00–59)

s

displays the second as a number without leading zeros (0–59)

ss

displays the second as a number with leading zeros (00–59)

매주 마지막에 빈 행을 남기기 위해 weekday 함수를 사용하여 일요일을 확인하고 “StartingRow”변수 값을 1 씩 증가시켜 다음 행이 비어 있도록합니다.

매크로 코드에서 볼 수 있듯이 Format 함수를 다른 방식으로 두 번 사용했습니다. 첫째, 우리는 평일을 얻기 위해 Format (i, “ddd”)를 사용했고, 둘째, dd.mm.yyyy 형식으로 날짜를 얻기 위해 Format (i, “dd.mm.yy”)를 사용했습니다.

코드 설명

Dim NewWorksheet As Worksheet Set NewWorksheet = Worksheets.Add Above 코드는 Worksheet 개체 이름을 “NewWorksheet”로 선언하는 데 사용됩니다.

Worksheets.Add 메서드는 Worksheets 컬렉션에 새 워크 시트를 추가하는 데 사용됩니다. Set 문은 새로 삽입 된 시트로 선언 된 개체를 초기화하는 데 사용됩니다.

For i = StartDate To EndDate FOR 루프는 시작 날짜에서 종료 날짜까지 반복하는 데 사용됩니다.

If Weekday (i, 2) <6 그러면 IF 문을 사용하여 조건을 확인하고 조건에 따라 코드를 실행합니다. 위의 조건은 Weekday 기능에 의해 반환 된 값을 확인합니다. 6보다 작 으면 IF 조건이 true를 반환하고 IF 문 내부의 코드가 실행됩니다. 그렇지 않으면 건너 뜁니다.

StartingRow = 1 StartingRow = StartingRow + 1 StartingRow 변수는 워크 시트의 행 사이를 이동하는 데 사용됩니다. 시작시 변수는 첫 번째 행으로 초기화됩니다. IF 문을 성공적으로 실행할 때마다 변수 값이 1 씩 증가하여 시트의 다음 행으로 이동합니다.

셀 (StartingRow, 1)

Cells 속성은 워크 시트의 특정 셀을 참조하는 데 사용됩니다.

Cells (row_number, column_number)는 특정 행 번호와 열 번호를 매개 변수로 입력하여 워크 시트의 모든 셀을 참조하는 데 사용할 수 있습니다. 코드 Cells (StartingRow, 1)에서 1은 첫 번째 열을 지정하고 변수 “StartingRow”는 행 번호를 정의합니다.

매크로에 코드와 함께 주석을 포함했기 때문에 코드를 쉽게 이해할 수 있습니다.

아래 코드를 따르세요

Option Explicit

Sub ExtractWeekdays()

'Declaring two variables of Date data type

Dim StartDate As Date, EndDate As Date

'Declaring worksheet variable

Dim NewWorksheet As Worksheet

Dim StartingRow, i As Long



'Getting start date and end date values from worksheet

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

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

'Initializing the starting row number for output

StartingRow = 1

'Inserting new worksheet

Set NewWorksheet = Worksheets.Add

For i = StartDate To EndDate



'Using Weekday method to check whether it is Weekday or weekand

If Weekday(i, 2) < 6 Then



'Inserting value on newly inserted worksheet

'Format method is used for formatting the date value

NewWorksheet.Cells(StartingRow, 2) = Format(i, "dd.mm.yy")

NewWorksheet.Cells(StartingRow, 1) = Format(i, "ddd")



'Updating StartingRow variable value for moving to next row

StartingRow = StartingRow + 1

End If



'Inserting blank row for weekend

If Weekday(i, 2) = 7 Then

StartingRow = StartingRow + 1

End If

Next i

Set NewWorksheet = Nothing

End Sub

이 블로그가 마음에 들면 Facebook 및 Facebook에서 친구들과 공유하십시오.

여러분의 의견을 듣고 싶습니다. 작업을 개선하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]로 문의 해주세요