VBA trong tuần | Hướng dẫn từng bước về Hàm ngày trong tuần trong VBA

Hàm Excel VBA trong tuần

Weekday trong VBA là một hàm ngày và giờ được sử dụng để xác định ngày trong tuần của một ngày cụ thể với điều kiện là giá trị đầu vào, hàm này trả về một giá trị nguyên từ 1 đến 7 phạm vi, có một đối số tùy chọn được cung cấp cho hàm này là ngày đầu tiên của tuần nhưng nếu chúng ta không cung cấp ngày đầu tiên trong tuần thì theo mặc định, hàm sẽ giả định Chủ nhật là ngày đầu tiên của tuần.

Chúng ta có thể biết số ngày trong tuần bằng cách nhìn vào một ngày cụ thể không? Có, chúng tôi có thể cho biết số ngày trong tuần đó tùy thuộc vào ngày bắt đầu của tuần. Trong các hàm trang tính thông thường, chúng ta có một hàm được gọi là WEEKDAY trong excel để cho biết số tuần cho một ngày cụ thể. Trong VBA cũng vậy, chúng ta có cùng một chức năng để tìm điều tương tự.

Chức năng ngày trong tuần làm gì?

Hàm Weekday trả về số ngày của ngày đã cung cấp trong tuần. Ví dụ: nếu bạn có các ngày từ ngày 1 tháng 4 đến ngày 7 tháng 4 và nếu bạn muốn biết ngày của ngày 5 tháng 4 nếu ngày bắt đầu của tuần là từ thứ Hai thì đó là ngày thứ 5.

Để tìm điều này, chúng ta có cùng một chức năng “Ngày trong tuần” trong một trang tính cũng như trong VBA. Dưới đây là cú pháp của hàm.

Ngày: Chúng tôi đang cố gắng tìm ngày trong tuần cho ngày nào. Đây phải là một ngày thích hợp với định dạng chính xác.

[Ngày đầu tiên trong tuần]: Để xác định ngày trong tuần của Ngày đã cung cấp, chúng ta cần đề cập đến ngày đầu tiên trong tuần là ngày nào. Theo mặc định, VBA coi “Thứ Hai” là ngày bắt đầu trong tuần. Ngoài ra, chúng tôi có thể cung cấp những ngày dưới đây.

Các ví dụ

Bạn có thể tải xuống Mẫu Excel hàm VBA WeekDay này tại đây - Mẫu Excel hàm VBA WeekDay

Ví dụ 1

Để bắt đầu quá trình tố tụng, hãy để tôi bắt đầu với một ví dụ đơn giản trước. Bây giờ chúng tôi sẽ cố gắng tìm ngày trong tuần cho ngày “10 tháng 4 năm 2019”.

Bước 1: Định nghĩa biến là Chuỗi

Mã:

 Sub Weekday_Example1 () Dim k As String End Sub 

Bước 2: Gán giá trị cho biến

Gán giá trị cho biến “k” bằng cách áp dụng hàm WEEKDAY.

Mã:

 Sub Weekday_Example1 () Dim k As String k = Weekday (End Sub 

Bước 3: Nhập ngày vào hàm

Ngày chúng tôi đang thử nghiệm ở đây là "10 tháng 4 năm 2019", vì vậy hãy chuyển ngày là "10 tháng 4 năm 2019".

Mã:

 Sub Weekday_Example1 () Dim k As String k = Weekday ("10-April-2019" End Sub 

Bước 4: Hiển thị giá trị của biến trong MsgBox

Theo mặc định, ngày đầu tiên của tuần là "Thứ Hai", vì vậy hãy bỏ qua phần này. Đóng dấu ngoặc. Trong dòng tiếp theo, hiển thị giá trị của biến “k” trong hộp thông báo VBA.

Mã:

 Sub Weekday_Example1 () Dim k As String k = Weekday ("10-April-2019") MsgBox k End Sub 

Ok, chúng tôi đã hoàn thành.

Nếu chúng tôi chạy mã, chúng tôi sẽ nhận được kết quả là "4" vì bắt đầu từ Chủ nhật, ngày được cung cấp (10 tháng 4 năm 2019) rơi vào ngày thứ 4 trong tuần.

Lưu ý: Ngày bắt đầu trong tuần của hệ thống của tôi là "Chủ nhật".

Tương tự, nếu bạn thay đổi ngày bắt đầu của tuần thì ngày đó sẽ thay đổi. Dưới đây là một dòng ví dụ cho điều tương tự.

Mã:

k = Ngày trong tuần ("10 tháng 4 năm 2019", vbMonday) 'Điều này trả về 3 k = Ngày trong tuần ("10 tháng 4 năm 2019", vbTuesday)' Điều này trả về 2 k = Ngày trong tuần ("10 tháng 4 năm 2019", vbWednesday) 'Điều này trả về 1 k = Ngày trong tuần ("10-Tháng 4-2019", vbThursday)' Điều này trả về 7 k = Ngày trong tuần ("10-Tháng 4-2019", vbFriday) 'Điều này trả về 6 k = Ngày trong tuần ("10-Tháng 4-2019 ", vbSaturday) 'Điều này trả về 5 k = Ngày trong tuần (" 10-Tháng 4-2019 ", vbSunday)' Điều này trả về 4 

Ví dụ # 2 - Đến Cho dù Ngày là Cuối tuần hay Không

Giả sử bạn có một ngày như bên dưới và bạn muốn tìm ngày cuối tuần tiếp theo thì chúng ta có thể sử dụng hàm WEEKDAY để đến kết quả.

Chúng ta cần sử dụng WEEKDAY với điều kiện IF và các vòng lặp để đi đến kết quả. Tôi đã viết mã để bạn đọc từng dòng một để có được logic.

Mã:

 Sub Weekend_Dates () Dim k As Integer For k = 2 to 9 If Weekday (Cells (k, 1) .Value, vbMonday) = 1 Then Cells (k, 2) .Value = Cells (k, 1) + 5 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 2 Then Cells (k, 2) .Value = Cells (k, 1) + 4 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 3 Then Cells (k, 2) .Value = Cells (k, 1) + 3 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 4 Then Cells (k, 2) .Value = Cells (k, 1) + 2 ElseIf Weekday (Cells (k, 1) .Value, vbMonday) = 5 Then Cells (k, 2) .Value = Cells (k, 1) + 1 Else Cells (k, 2) .Value = "Đây thực sự là ngày cuối tuần Ngày "Kết thúc Nếu Tiếp theo k Kết thúc Sub 

Điều này sẽ đến trong kết quả bên dưới.

Nhìn vào ô B6 & B7, chúng tôi nhận được kết quả là “Đây thực sự là ngày cuối tuần” vì ngày “04-05-2019” và “06-04-2019” thực sự là các ngày cuối tuần, vì vậy không cần hiển thị ngày cuối tuần cho những ngày cuối tuần. Theo mặc định, chúng tôi nhận được kết quả như thế này.


$config[zx-auto] not found$config[zx-overlay] not found