Christine cần một cách để tính ngày thứ Ba đầu tiên của bất kỳ tháng nào.

Vì vậy, đã cho một tháng và một năm, cô ấy cần lấy ngày của thứ Ba đầu tiên đó.

Có khá nhiều công thức khác nhau mà bạn có thể sử dụng để đạt được kết quả mong muốn. Hầu hết các phương pháp sử dụng hàm WEEKDAY theo một cách nào đó vì nó có thể trả về một giá trị số đại diện cho ngày trong tuần cho bất kỳ ngày nào đã cho. Giả sử rằng bạn đặt một tháng vào ô A1 (từ 1 đến 12) và một năm có bốn chữ số trong ô A2, thì tất cả các công thức sau sẽ trả về một ngày cho Thứ Ba đầu tiên trong tháng. (Tôi đã sắp xếp các công thức theo thứ tự độ dài, từ dài nhất đến ngắn nhất.)

=DATE(A2,A1,1)+IF(WEEKDAY(DATE(A2,A1,1))=3,0,IF(WEEKDAY(DATE(A2,A1,1))>3,7-WEEKDAY(DATE(A2,A1,1))+3,3-WEEKDAY(DATE(A2,A1,1))))

=IF(3-WEEKDAY(DATE(A2,A1,1))>=0,DATE(A2,A1,1)+3-WEEKDAY(DATE(A2,A1,1)),DATE(A2,A1,1)+7+3-WEEKDAY(DATE(A2,A1,1)))

=DATE(A2,A1,1)+IF(3-WEEKDAY(DATE(A2,A1,1))>=0,3-WEEKDAY(DATE(A2,A1,1)),10-WEEKDAY(DATE(A2,A1,1)))

=DATE(A2,A1,1)-WEEKDAY(DATE(A2,A1,1),1)+3+IF(WEEKDAY(DATE(A2,A1,1),1)>3,7,0)

=DATE(A2,A1,1)+8-DAY(DATE(A2,A1,1))-WEEKDAY(DATE(A2,A1,1)-DAY(DATE(A2,A1,1))-2)

=DATE(A2,A1,1)+3-WEEKDAY(DATE(A2,A1,1))+(1-(3>=WEEKDAY(DATE(A2,A1,1))))*7 =DATEVALUE(A2&"/"&A1&"/1")+MOD(10-WEEKDAY(DATEVALUE(A2&"/"&A1&"/1")),7)

=DATE(A2,A1,MATCH(TRUE,WEEKDAY(DATE(A2,A1,{1,2,3,4,5,6,7}))=3,0))

=DATE(A2,A1,MOD(10-WEEKDAY(DATE(A2,A1,1)),7)+1)

=DATE(A2,A1,1)+MOD(3-WEEKDAY(DATE(A2,A1,1)),7)

=DATE(A2,A1,1)+7-WEEKDAY(DATE(A2,A1,1),13)

=DATE(A2,A1,8-WEEKDAY(DATE(A2,A1,1),13))

=DATE(A2,A1,7)-MOD(DATE(A2,A1,7)-3,7)

=DATE(A2,A1,8-WEEKDAY(DATE(A2,A1,5)))

=DATE(A2,A1,8)-WEEKDAY(DATE(A2,A1,5))

Nếu bạn thấy thuận tiện hơn khi chỉ định một ngày trong tháng bạn muốn đánh giá, thì bạn có thể sửa đổi công thức để tính đến điều đó. Sau đây chỉ là một số công thức bạn có thể sử dụng nếu bạn đặt ngày thực tế vào ô A1:

=DATE(YEAR(A1),MONTH(A1),MATCH(TRUE,WEEKDAY(DATE(YEAR(A1),MONTH(A1),{1,2,3,4,5,6,7}))=3,0))

=DATE(YEAR(A1),MONTH(A1),MOD(10-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),7)+1)

=DATE(YEAR(A1),MONTH(A1),1)+MOD(3-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),7)

=DATE(YEAR(A1),MONTH(A1),1)+7-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),13)

=DATE(YEAR(A1),MONTH(A1),8-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),13))

=DATE(YEAR(A1),MONTH(A1),7)-MOD(DATE(YEAR(A1),MONTH(A1),7)-3,7)

=DATE(YEAR(A1),MONTH(A1),8-WEEKDAY(DATE(YEAR(A1),MONTH(A1),5)))

=DATE(YEAR(A1),MONTH(A1),8)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),5))

=A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-1,3)

Cuối cùng, bạn có thể muốn xem xét một cách tiếp cận dựa trên vĩ mô. Sau đây là một hàm do người dùng định nghĩa sẽ nhanh chóng tìm ra thứ ba đầu tiên:

Function FirstTuesday(M As Integer, Y As Integer) As Date     Dim dResult As Date

dResult = DateSerial(Y, M, 1)

Do While Weekday(dResult) <> vbTuesday         dResult = DateAdd("d", 1, dResult)

Loop     FirstTuesday = dResult End Function

Tất cả những gì bạn cần làm trong trang tính của mình là chuyển cho hàm do người dùng định nghĩa tháng và năm bằng số mà bạn muốn:

=FirstTuesday(6,2018)

Nếu muốn, bạn có thể chỉ định tháng và năm trong một ô:

=FirstTuesday(A2,A1)

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (13540) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.