Trong bài viết này, chúng tôi sẽ tạo macro để liệt kê các tháng giữa khoảng thời gian đã xác định và cả số ngày trong tháng cụ thể đó. Nó cũng sẽ hiển thị tổng số ngày giữa khoảng thời gian đã xác định.

Chúng tôi đã tạo macro “DaysInPeriod” để liệt kê các tháng và số ngày trong một tháng. Macro có thể được thực hiện bằng cách nhấp vào nút “Gửi”.

Trước khi chạy macro, người ta phải cung cấp đầu vào cho ngày bắt đầu và ngày kết thúc. Nó nhận giá trị trong ô “G6” là ngày bắt đầu và giá trị trong ô “G7” là ngày kết thúc. Đầu ra sẽ được hiển thị bên dưới trong ô “F9”.

RawInput

Khi nhấp vào nút gửi, macro sẽ hiển thị tên của tháng trong cột F và số ngày trong tháng đó trong cột G. Hàng cuối cùng sẽ hiển thị tổng số ngày giữa khoảng thời gian được chỉ định.

AfterRunningMacro

Giải thích logic

Trong macro, chúng tôi bắt đầu lặp từ ngày bắt đầu đến ngày kết thúc được chỉ định. Trong khi lặp lại, chúng tôi kiểm tra ngày cuối cùng của tháng. Nếu gặp phải ngày cuối cùng của tháng, thì tên tháng và số ngày trong tháng đó được hiển thị trong cột F và G. Tương tự, chúng tôi cũng kiểm tra ngày kết thúc. Khi gặp ngày kết thúc, mục nhập cho tháng trước và số ngày trong tháng đó sẽ được hiển thị.

Vui lòng theo dõi bên dưới để biết mã

Option Explicit

Sub DaysInPeriod()

Dim StartDate, EndDate As Date

Dim intRow As Integer, intDays As Integer

'Clearing previous content

Range("F10:G1048576").ClearContents

'Getting start and end date

StartDate = Range("G6")

EndDate = Range("G7")

'Initializing the variable to starting row number

intRow = 10

'Listing the months and number of days from starting date to end date

Do



intDays = intDays + 1



'Checking for last date of the month or when StartDate is equal to EndDate

If (Month(StartDate) <> Month(StartDate + 1)) Or StartDate = EndDate Then

'Inserting the month name

Cells(intRow, 6) = Format(StartDate, "mmmm")

'Inserting number of days in the month

Cells(intRow, 7) = intDays

'Moving to next row

intRow = intRow + 1

intDays = 0

End If



'Moving to next date

StartDate = StartDate + 1

Loop Until StartDate > EndDate

'Getting the sum in the last row

Cells(intRow, 6) = "Total Days"

Cells(intRow, 7) = Application.Sum(Range("G10:G" & intRow))



End Sub

Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]