Cách Trả Về Ngày Trong Tuần Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao

Mục lục bài viết

Mở Đầu

Trong công việc hằng ngày, từ việc lập kế hoạch, quản lý dự án, đến phân tích dữ liệu kinh doanh, Excel luôn là công cụ không thể thiếu. Một trong những nhu cầu thường gặp là xác định ngày trong tuần (Day of Week) từ một ngày tháng cụ thể. Việc này giúp chúng ta:

  • Lập lịch làm việc: Xác định ngày làm việc, ngày nghỉ, ngày lễ.
  • Phân tích xu hướng: Kiểm tra doanh thu, lượng bán hàng theo ngày trong tuần.
  • Tự động hoá báo cáo: Tạo báo cáo tuần, tháng một cách nhanh chóng.

Bài viết dưới đây sẽ cung cấp cho bạn toàn bộ kiến thức cần thiết để trả về ngày trong tuần trong Excel, bao gồm:

  1. Các hàm cơ bản (TEXT, WEEKDAY, CHOOSE, SWITCH).
  2. Cách định dạng ngày dưới dạng chữ (ví dụ: “Thứ Hai”, “Monday”).
  3. Xử lý ngày trong tuần cho lịch làm việc, ngày lễ, điểm danh.
  4. Các công thức nâng cao dùng Mảng, Power Query, VBA.
  5. Thực hành thực tế: xây dựng bảng tính tự động tính ngày trong tuần và phân nhóm dữ liệu.
  6. Mẹo tối ưu hiệu suất và tránh lỗi thường gặp.

Lưu ý: Bài viết này sẽ không chỉ dừng lại ở công thức đơn giản mà còn đi sâu vào các trường hợp phức tạp, giúp bạn trở thành “bậc thầy” trong việc xử lý ngày trong tuần trên Excel.

1. Hiểu Rõ Định Dạng Ngày Trong Excel

1.1. Kiểu Dữ Liệu Ngày

Excel lưu trữ ngày dưới dạng số nguyên tính từ 1/1/1900 (hoặc 1/1/1904 tùy phiên bản). Ví dụ:

NgàyGiá trị nội bộ
01/01/202644927
31/12/202645292

Việc này cho phép chúng ta thực hiện các phép tính cộng, trừ ngày một cách dễ dàng.

1.2. Định Dạng Hiển Thị

Mặc dù giá trị nội bộ là số, chúng ta có thể định dạng ô để hiển thị dưới dạng:

  • dd/mm/yyyy
  • mm-dd-yy
  • dddd (tên ngày đầy đủ, ví dụ: “Monday”)
  • ddd (viết tắt, ví dụ: “Mon”)

Bạn có thể thay đổi định dạng bằng cách Right‑click → Format Cells → Number → Date hoặc Custom.

2. Các Hàm Cơ Bản Để Trả Về Ngày Trong Tuần

2.1. Hàm WEEKDAY

Cú pháp: WEEKDAY(serial_number, return_type)

  • serial_number: ngày cần kiểm tra (có thể là ô chứa ngày hoặc hàm DATE).
  • return_type (tùy chọn):
  • 1 hoặc bỏ qua: trả về 1 (Chủ Nhật) → 7 (Thứ Bảy).
  • 2: trả về 1 (Thứ Hai) → 7 (Chủ Nhật).
  • 3: trả về 0 (Thứ Hai) → 6 (Chủ Nhật).

Ví dụ:

Ô A1 (Ngày)Công thứcKết quả
15/08/2026=WEEKDAY(A1)5 (Thứ Năm)
15/08/2026=WEEKDAY(A1,2)4 (Thứ Năm)
15/08/2026=WEEKDAY(A1,3)3 (Thứ Năm)

Lưu ý: Khi dùng return_type = 2, chúng ta có thể gán 1 → Thứ Hai, 2 → Thứ Ba, …, 7 → Chủ Nhật, rất tiện cho việc đánh số tuần.

2.2. Hàm TEXT

TEXT(value, format_text) cho phép chuyển đổi ngày sang chuỗi với định dạng tùy ý.

  • Định dạng dddd → Tên ngày đầy đủ (tiếng Anh).
  • Định dạng ddd → Tên viết tắt (tiếng Anh).
  • Định dạng $-vi-VNdddd → Tên ngày tiếng Việt (cần cài đặt locale).

Ví dụ:

=TEXT(A1,"dddd") // "Thursday"
=TEXT(A1,"ddd") // "Thu"
=TEXT(A1,"$-vi-VNdddd") // "Thứ Năm"

Mẹo: Đặt $-en-US hoặc $-vi-VN để chắc chắn ngôn ngữ hiển thị đúng, bất kể cài đặt vùng miền của máy.

2.3. Hàm CHOOSE

CHOOSE(index_num, value1, value2, …) trả về giá trị tương ứng với vị trí index_num.

Kết hợp WEEKDAY và CHOOSE để đổi số thành chuỗi:

=CHOOSE(WEEKDAY(A1,2),"Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy","Chủ Nhật")

2.4. Hàm SWITCH (Excel 2026 trở lên)

SWITCH(expression, value1, result1, value2, result2, …, default)

=SWITCH(WEEKDAY(A1,2), 1,"Thứ Hai", 2,"Thứ Ba", 3,"Thứ Tư", 4,"Thứ Năm", 5,"Thứ Sáu", 6,"Thứ Bảy", 7,"Chủ Nhật")

Ưu điểm: Đọc dễ, không cần lặp lại WEEKDAY nhiều lần.

3. Định Dạng Ngày Trong Tuần Bằng Tiếng Việt

3.1. Sử Dụng TEXT Với Locale

=TEXT(A1,"$-vi-VNdddd") // "Thứ Năm"

Nếu Excel của bạn chưa hỗ trợ locale Vietnamese, bạn có thể tạo bảng tra cứu:

SốTên tiếng Việt
1Chủ Nhật
2Thứ Hai
3Thứ Ba
4Thứ Tư
5Thứ Năm
6Thứ Sáu
7Thứ Bảy

Sau đó dùng VLOOKUP hoặc XLOOKUP:

=XLOOKUP(WEEKDAY(A1,1),{1,2,3,4,5,6,7},{"Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"})

3.2. Tự Động Đánh Dấu Ngày Làm Việc / Ngày Nghỉ

Giả sử Thứ Hai – Thứ Sáu là ngày làm việc, Thứ Bảy – Chủ Nhật là ngày nghỉ.

=IF(WEEKDAY(A1,2)<=5,"Ngày làm việc","Ngày nghỉ")

Bạn có thể mở rộng bằng cách đọc danh sách ngày lễ từ một bảng riêng và dùng COUNTIF để kiểm tra.

4. Xây Dựng Bảng Thời Gian Tự Động Xác Định Ngày Trong Tuần

4.1. Bước 1: Tạo Dòng Ngày

Giả sử ô B2 chứa ngày bắt đầu, ví dụ 01/01/2026. Để tạo danh sách ngày liên tục trong cột B:

  • B2: =DATE(2026,1,1) (hoặc nhập trực tiếp).
  • B3: =B2+1
  • Kéo công thức xuống tới số ngày mong muốn (ví dụ 365 ngày).

4.2. Bước 2: Thêm Cột “Ngày Trong Tuần”

Ở cột C, nhập công thức:

=TEXT(B2,"$-vi-VNdddd")

Kéo xuống đầy đủ.

4.3. Bước 3: Gắn Nhãn “Ngày Làm Việc / Nghỉ”

Cột D:

=IF(WEEKDAY(B2,2)<=5,"Làm việc","Nghỉ")

4.4. Bước 4: Kiểm Tra Ngày Lễ (Ví Dụ: 1/5/2026)

  • Tạo bảng Ngày Lễ ở một vùng (ví dụ H2:H10).
  • Cột E (Ngày Lễ?):
=IF(COUNTIF($H$2:$H$10,B2)>0,"Ngày Lễ","")

4.5. Bước 5: Tổng Hợp Thông Tin

Excel Return Day Of Week
Excel Return Day Of Week

Cột F (Trạng Thái):

=IF(E2="Ngày Lễ","Ngày Lễ",D2)

Kết quả cuối cùng: mỗi ngày sẽ hiển thị Tên ngày, Làm việc/Nghỉ, và có phải ngày lễ hay không.

5. Phân Tích Dữ Liệu Theo Ngày Trong Tuần

5.1. PivotTable

Bạn có thể nhanh chóng tổng hợp doanh thu hoặc số lượng bán hàng theo ngày trong tuần:

  1. Chọn dữ liệu (cột ngày, doanh thu, …).
  2. Insert → PivotTable.
  3. Kéo trường Ngày vào Rows, chọn Group → Days → Days hoặc Months.
  4. Trong Rows, right‑click → Group → Days và choose “Days” để nhóm theo ngày trong tuần.
  5. Kéo Doanh thu vào Values và đặt Sum.

5.2. Công Thức SUMIFS Với WEEKDAY

Nếu không dùng PivotTable, bạn có thể dùng SUMIFS:

=SUMIFS(DoanhThuRange,DateRange,">="&StartDate,DateRange,"<="&EndDate,WEEKDAY(DateRange,2),1) // Thứ Hai

Bạn có thể sao chép công thức cho các ngày khác bằng cách thay 1 thành 2,3,…,7.

6. Sử Dụng Power Query Để Xử Lý Ngày Trong Tuần

Power Query (Get & Transform) cho phép xử lý dữ liệu lớn mà không làm chậm bảng tính.

6.1. Nhập Dữ Liệu

  • Data → Get Data → From Table/Range.

6.2. Thêm Cột “Day of Week”

Trong Power Query Editor:

  1. Add Column → Date → Day → Day of Week (sẽ trả về 0‑6, bắt đầu từ Chủ Nhật).
  2. Đổi tên cột thành DayOfWeek.
  3. Để hiển thị tên ngày tiếng Việt, Add Column → Custom Column với công thức:
= {"Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"}{DayOfWeek}

6.3. Lọc Ngày Lễ

Nếu bạn có bảng ngày lễ, dùng Merge Queries để đánh dấu.

6.4. Tải Kết Quả Về Excel

  • Home → Close & Load.

Power Query sẽ tạo một bảng kết nối có cột ngày, ngày trong tuần, và các trường bổ trợ, rất phù hợp cho báo cáo định kỳ.

7. Tự Động Hóa Bằng VBA

Khi cần điểm danh hàng ngàn nhân viên hoặc tạo lịch làm việc tự động, VBA là giải pháp mạnh.

7.1. Hàm VBA Trả Về Tên Ngày Tiếng Việt

Function TenNgayViet(Ngay As Date) As String Dim arr As Variant arr = Array("Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy") TenNgayViet = arr(Weekday(Ngay, vbSunday) - 1)
End Function

Cách dùng trong ô Excel:

=TenNgayViet(A2)

7.2. Macro Tạo Lịch 12 Tháng

Sub TaoLich12Thang() Dim ws As Worksheet, startDate As Date, i As Long, r As Long Set ws = ThisWorkbook.Sheets("Lich") ws.Cells.Clear startDate = DateSerial(Year(Date), 1, 1) ' Bắt đầu từ 01/01 năm hiện tại r = 2 ws.Range("A1").Value = "Ngày" ws.Range("B1").Value = "Ngày trong tuần" ws.Range("C1").Value = "Trạng thái" For i = 0 To 364 ws.Cells(r, 1).Value = startDate + i ws.Cells(r, 2).Value = TenNgayViet(startDate + i) If Weekday(startDate + i, vbMonday) <= 5 Then ws.Cells(r, 3).Value = "Làm việc" Else ws.Cells(r, 3).Value = "Nghỉ" End If r = r + 1 Next i ws.Columns("A:C").AutoFit
End Sub

Chạy macro sẽ tự động tạo bảng lịch 365 ngày với thông tin ngày trong tuần và trạng thái làm việc/nghỉ.

8. Các Trường Hợp Thực Tế và Giải Pháp

8.1. Xác Định Ngày Đầu Tuần Của Một Tháng

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

Công thức trả về Thứ Hai đầu tiên của tháng chứa ngày trong A1.

8.2. Đếm Số Ngày Làm Việc Trong Khoảng Thời Gian

=NETWORKDAYS(A2,B2,HolidayRange)

NETWORKDAYS tính số ngày làm việc (Thứ Hai – Thứ Sáu) trừ ngày lễ trong HolidayRange.

8.3. Tính Ngày Đầu Tiên Của Tuần Tiếp Theo

= A1 + (8 - WEEKDAY(A1,2))

Nếu A1 là ngày bất kỳ, công thức trả về Thứ Hai của tuần kế tiếp.

8.4. Xác Định Tuần Của Năm (ISO 8601)

=ISOWEEKNUM(A1)

Hoặc dùng công thức thủ công nếu phiên bản Excel không hỗ trợ:

=INT((A1 - DATE(YEAR(A1),1,4) - WEEKDAY(DATE(YEAR(A1),1,4),2) + 10)/7)

8.5. Đánh Dấu Ngày Cuối Tuần (Saturday, Sunday)

=IF(WEEKDAY(A1,2)>5,"Cuối tuần","Ngày thường")

9. Mẹo Tối Ưu Hiệu Suất Khi Xử Lý Ngày

  1. Tránh lặp công thức trong cột lớn: dùng một lần WEEKDAY và lưu vào cột phụ, sau đó dùng VLOOKUP/XLOOKUP.
  2. Sử dụng Table (Ctrl + T) để công thức tự mở rộng khi thêm dòng mới.
  3. Tắt tính toán tự động (Formulas → Calculation Options → Manual) khi làm việc với bảng dữ liệu > 100k dòng, sau đó F9 để cập nhật.
  4. Power Query thường nhanh hơn so với công thức mảng trong Excel truyền thống.
  5. Tránh định dạng ngày bằng văn bản (text) vì sẽ làm mất khả năng tính toán.

10. Tổng Kết

Trong suốt bài viết, chúng ta đã:

  • Hiểu cách Excel lưu trữ và hiển thị ngày.
  • Sử dụng các hàm WEEKDAY, TEXT, CHOOSE, SWITCH để trả về ngày trong tuần.
  • Định dạng tiếng Việt và tạo bảng lịch tự động.
  • Phân tích dữ liệu theo ngày trong tuần bằng PivotTable, SUMIFS.
  • Tận dụng Power Query và VBA cho các nhu cầu phức tạp.
  • Áp dụng các công thức thực tế như NETWORKDAYS, ISOWEEKNUM và các mẹo tối ưu.

Bây giờ, bạn có thể tự tin xây dựng bất kỳ báo cáo, lịch làm việc, hay phân tích xu hướng nào dựa trên ngày trong tuần trong môi trường Excel. Hãy thực hành với các ví dụ trên, tùy chỉnh cho phù hợp với quy trình công việc của mình và khám phá thêm những khả năng mới mà Excel mang lại.

Chúc bạn thành công!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận