Dưới đây chúng ta sẽ xem xét một chương trình trong Excel VBA tính toán số ngày trong tuần giữa hai ngày.

Các ngày trong tuần là: Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm và Thứ Sáu.

Tình huống:

Weekdays in Excel VBA

Lưu ý: Ngày ở Định dạng Hoa Kỳ. Tháng đầu tiên, ngày thứ hai. Loại định dạng này phụ thuộc vào cài đặt khu vực cửa sổ của bạn.

  1. Đầu tiên, chúng ta khai báo năm biến. date1 thuộc loại Date, date2 thuộc loại Date, dateToC Kiểm tra loại Date, ngày Giữa loại Integer, các ngày trong tuần thuộc loại Integer và i thuộc loại Integer.

Dim date1 As Date, date2 As

Date, dateToCheck As Date

Dim daysBetween As Integer, weekdays As Integer, i As Integer
  1. Chúng tôi khởi tạo bốn biến. Chúng ta sử dụng hàm DateDiff để khởi tạo biến daysBetween. Hàm này có ba đối số.

Chúng tôi điền vào “d” cho đối số đầu tiên vì chúng tôi muốn số ngày giữa date1 và date2.

weekdays = 0

date1 = Range("B2")

date2 = Range("B3")

daysBetween = DateDiff("d", date1, date2)
  1. Chúng ta cần kiểm tra từng ngày giữa date1 và date2 (bao gồm date1 và date2) xem ngày đó có phải là ngày trong tuần hay không. Nếu có, chúng tôi tăng các ngày trong tuần lên 1. Chúng tôi sẽ sử dụng vòng lặp For Next.

For i = 0 To daysBetween
  1. Chúng tôi sử dụng chức năng DateAdd để lấy từng ngày chúng tôi cần kiểm tra. Hàm này có ba đối số. Chúng ta điền vào “d” cho đối số đầu tiên vì chúng ta muốn thêm ngày, i cho đối số thứ hai và date1 cho đối số thứ ba vì chúng ta muốn thêm i ngày vào date1. Bằng cách này, Excel VBA có thể kiểm tra từng ngày giữa date1 và date2 bắt đầu bằng date1. Thêm dòng mã sau:

dateToCheck = DateAdd("d", i, date1)

Ví dụ: đối với i = 3, Excel VBA kiểm tra date1 + 3 ngày.

  1. Tiếp theo, chúng ta sử dụng hàm Weekday (hàm dựng sẵn) để kiểm tra dateToCheck có phải là ngày trong tuần hay không. Hàm Weekday trả về 1 cho Chủ nhật và 7 cho thứ bảy. Do đó, chúng tôi chỉ tăng các ngày trong tuần có thể thay đổi nếu Ngày trong tuần (dateToCheck) không bằng 1 và không bằng 7 (<> nghĩa là không bằng). Các dòng mã sau đây hoàn thành công việc.

If (Weekday(dateToCheck) <> 1 And Weekday(dateToCheck) <> 7) Then

weekdays = weekdays + 1

End If
  1. Đừng quên đóng vòng lặp.

Next i
  1. Cuối cùng, chúng tôi hiển thị số ngày trong tuần bằng MsgBox. Chúng tôi sử dụng toán tử & để nối (nối) hai chuỗi. Mặc dù các ngày trong tuần không phải là một chuỗi nó hoạt động ở đây.

MsgBox weekdays & " weekdays between these two dates"
  1. Đặt macro của bạn vào một nút lệnh và kiểm tra nó.

Kết quả:

Weekdays Result