Liệt kê và thêm ngày của tháng trong một khoảng thời gian nhất định bằng VBA trong Microsoft Excel
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”.
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.
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]