Cách Tính Số Ngày 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

Excel là một trong những công cụ phổ biến nhất để xử lý dữ liệu, và tính số ngày giữa các ngày là một trong những nhu cầu thường gặp trong công việc kinh doanh, kế toán, quản lý dự án, cũng như trong đời sống cá nhân. Bài viết này sẽ cung cấp cho bạn một hướng dẫn toàn diện, chi tiết và thực tế về cách tính số ngày trong Excel, bao gồm:

  1. Các hàm cơ bản: DATEDIF, NETWORKDAYS, NETWORKDAYS.INTL, WORKDAY, WORKDAY.INTL, YEARFRAC, EDATE, EOMONTH, DATE, TODAY, NOW.
  2. Cách tính ngày làm việc vs ngày thường.
  3. Xử lý ngày lễ, ngày nghỉ cuối tuần tùy chỉnh.
  4. Các ví dụ thực tế trong các lĩnh vực như kế toán, quản lý dự án, nhân sự.
  5. Mẹo tối ưu công thức, tránh lỗi phổ biến.
  6. Sử dụng bảng dữ liệu (Table) và công cụ Power Query để tính ngày tự động.
  7. Cách tạo biểu đồ thời gian dựa trên số ngày tính được.

Bài viết được chia thành các phần rõ ràng, mỗi phần đi kèm ví dụ thực tế và hình ảnh mô phỏng (được mô tả bằng văn bản) để bạn có thể áp dụng ngay vào công việc của mình.

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

1.1. Định dạng ngày mặc định

  • Excel lưu trữ ngày dưới dạng số nguyên dương, bắt đầu từ ngày 1/1/1900 (hoặc 1/1/1904 tùy vào cài đặt hệ thống). Ví dụ: ngày 1/1/1900 có giá trị 1, ngày 2/1/1900 có giá trị 2, …
  • Thời gian (giờ, phút, giây) được lưu dưới dạng phần thập phân của ngày. Ví dụ: 0.5 tương đương 12:00 PM (nửa ngày).

1.2. Kiểm tra và chuyển đổi định dạng

  • Để kiểm tra một ô có phải là ngày hay không, bạn có thể dùng hàm ISNUMBER kết hợp với CELL("format",A1).
  • Nếu ngày được nhập dưới dạng văn bản (text), bạn cần chuyển sang ngày thực bằng hàm DATEVALUE hoặc TEXT với định dạng "dd/mm/yyyy".

Ví dụ:
Giả sử A2 chứa giá trị "15-03-2026" (văn bản). Công thức =DATEVALUE(A2) sẽ trả về số nguyên tương ứng với ngày 15/03/2026.

2. Hàm DATEDIF: Tính Khoảng Cách Giữa Hai Ngày

DATEDIF (Date Difference) là hàm ngầm trong Excel (không xuất hiện trong danh sách hàm), nhưng rất mạnh mẽ để tính khoảng thời gian giữa hai ngày theo các đơn vị: ngày, tháng, năm, hoặc kết hợp.

2.1. Cú pháp

=DATEDIF(start_date, end_date, unit)
  • start_date: ngày bắt đầu.
  • end_date: ngày kết thúc.
  • unit: đơn vị tính, các ký hiệu:
  • "Y" – số năm nguyên.
  • "M" – số tháng nguyên.
  • "D" – số ngày.
  • "MD" – số ngày còn lại sau khi đã trừ năm và tháng.
  • "YM" – số tháng còn lại sau khi đã trừ năm.
  • "YD" – số ngày còn lại sau khi đã trừ năm.

2.2. Ví dụ thực tế

A (Start)B (End)Công thứcKết quả
01/01/202615/03/2026=DATEDIF(A2,B2,"Y")2 năm
01/01/202615/03/2026=DATEDIF(A2,B2,"M")26 tháng
01/01/202615/03/2026=DATEDIF(A2,B2,"D")803 ngày
01/01/202615/03/2026=DATEDIF(A2,B2,"MD")14 ngày
01/01/202615/03/2026=DATEDIF(A2,B2,"YM")2 tháng
01/01/202615/03/2026=DATEDIF(A2,B2,"YD")74 ngày

2.3. Lưu ý khi dùng DATEDIF

  • start_date phải không lớn hơn end_date. Nếu ngược lại, hàm sẽ trả về lỗi #NUM!.
  • Khi tính "MD" hoặc "YM" có thể nhận được kết quả âm nếu ngày cuối tháng không đủ ngày so với ngày bắt đầu (ví dụ: 31/01 -> 28/02). Để tránh, bạn có thể dùng hàm EOMONTH để chuẩn hoá.

3. Hàm NETWORKDAYS và NETWORKDAYS.INTL: Tính Ngày Làm Việc

3.1. NETWORKDAYS – Ngày làm việc tiêu chuẩn (Thứ Hai – Thứ Sáu)

Cú pháp

=NETWORKDAYS(start_date, end_date, holidays)
  • holidays (tùy chọn): một dải ô chứa danh sách ngày lễ (các ngày không làm việc).

Ví dụ

Giả sử:

  • A2 = 01/03/2026 (ngày bắt đầu)
  • B2 = 31/03/2026 (ngày kết thúc)
  • D2:D5 chứa các ngày lễ: 08/03/2026, 10/04/2026, …

Công thức:

=NETWORKDAYS(A2,B2,D2:D5)

Kết quả sẽ là số ngày làm việc trong tháng 3, trừ các ngày lễ.

3.2. NETWORKDAYS.INTL – Tùy chỉnh ngày nghỉ cuối tuần

Cú pháp

=NETWORKDAYS.INTL(start_date, end_date, weekend, holidays)
  • weekend: chuỗi 7 ký tự (“1” là ngày nghỉ, “0” là ngày làm việc) bắt đầu từ thứ Hai.
  • Ví dụ "0000011": chỉ nghỉ Thứ Bảy và Chủ Nhật (mặc định).
  • "1111110": chỉ nghỉ Chủ Nhật.
  • "0000000": không có ngày nghỉ cuối tuần (tính cả ngày cuối tuần).

Ví dụ thực tế

Bạn làm việc ở một quốc gia có ngày nghỉ là Thứ Bảy và Chủ Nhật, nhưng còn có ngày nghỉ Thứ Hai vào ngày 01/05/2026.

=NETWORKDAYS.INTL(A2,B2,"0000011",D2:D5)

Nếu muốn tính ngày làm việc khi chỉ nghỉ Chủ Nhật, dùng "1111110".

3.3. Khi nào dùng NETWORKDAYS vs WORKDAY?

  • NETWORKDAYS trả về số ngày làm việc trong khoảng.
  • WORKDAY trả về ngày làm việc tiếp theo sau một số ngày làm việc đã cho.

4. Hàm WORKDAY và WORKDAY.INTL: Tìm Ngày Làm Việc Tiếp Theo

4.1. Cú pháp WORKDAY

=WORKDAY(start_date, days, holidays)
  • days: số ngày làm việc cần cộng (có thể âm để trừ).

4.2. Ví dụ

Bạn muốn biết ngày làm việc thứ 10 sau ngày 01/04/2026, trừ các ngày lễ trong cột D.

=WORKDAY(DATE(2026,4,1),10,D2:D10)

Kết quả có thể là 15/04/2026 (tùy vào ngày lễ).

4.3. WORKDAY.INTL – Tùy chỉnh cuối tuần

Cú pháp tương tự WORKDAY nhưng thêm tham số weekend.

=WORKDAY.INTL(start_date, days, weekend, holidays)

Ví dụ: công ty chỉ nghỉ Chủ Nhật, bạn muốn tính ngày làm việc thứ 5:

=WORKDAY.INTL(DATE(2026,5,1),5,"1111110")

5. Hàm YEARFRAC: Tính Phần Thập Phân Năm Giữa Hai Ngày

YEARFRAC trả về số năm dưới dạng thập phân giữa hai ngày, hữu ích trong tính lãi suất, khấu hao, hoặc tính thời gian công tác.

Cú pháp

=YEARFRAC(start_date, end_date, basis)
  • basis: cách tính ngày (0 = US (NASD) 30/360, 1 = Actual/Actual, 2 = Actual/360, 3 = Actual/365, 4 = European 30/360).

Ví dụ

=YEARFRAC(DATE(2026,1,1), DATE(2026,12,31), 1)

Kết quả: 0.99726 (vì năm 2026 là năm nhuận, có 366 ngày).

6. Các Hàm Hỗ Trợ Khác

Cách Tính Số Ngày Trong Excel
Cách Tính Số Ngày Trong Excel
HàmMô tảVí dụ
EDATE(start_date, months)Thêm hoặc trừ số tháng=EDATE(A2,3) → 3 tháng sau ngày A2
EOMONTH(start_date, months)Ngày cuối cùng của tháng=EOMONTH(A2,0) → cuối tháng của A2
DATE(year, month, day)Tạo ngày từ các thành phần=DATE(2026,2,29) → 29/02/2026 (năm nhuận)
TODAY()Ngày hiện tại=TODAY()
NOW()Ngày + giờ hiện tại=NOW()
TEXT(value, format_text)Định dạng ngày thành text=TEXT(A2,"dd/mm/yyyy")
DATEVALUE(text)Chuyển text thành ngày=DATEVALUE("15/03/2026")

7. Ứng Dụng Thực Tế

7.1. Kế toán: Tính Số Ngày Còn Nợ

Giả sử cột A chứa Ngày phát sinh, cột B chứa Ngày thanh toán. Bạn muốn tính số ngày chậm trả (nếu có).

=MAX(0, B2 - A2)

Nếu muốn trừ ngày nghỉ cuối tuần và ngày lễ:

=NETWORKDAYS(A2,B2,HolidayRange) - 1

(Trừ 1 vì NETWORKDAYS tính cả ngày bắt đầu).

7.2. Quản Lý Dự Án: Tính Thời Gian Hoàn Thành

Dòng công việc có Ngày bắt đầu (C2) và Ngày dự kiến kết thúc (D2). Để tính thời gian thực tế (ngày làm việc):

=NETWORKDAYS(C2,D2,HolidayRange)

Nếu muốn biết ngày hoàn thành dự kiến khi có số ngày làm việc (E2):

=WORKDAY.INTL(C2,E2,"0000011",HolidayRange)

7.3. Nhân Sự: Tính Thâm Niên

Thâm niên (số năm) tính theo ngày vào làm (F2) và ngày hiện tại:

=DATEDIF(F2,TODAY(),"Y") & " năm " & DATEDIF(F2,TODAY(),"YM") & " tháng"

Kết quả: 3 năm 2 tháng.

8. Xử Lý Ngày Lễ và Ngày Nghỉ Cuối Tuần Tùy Chỉnh

8.1. Tạo danh sách ngày lễ

  1. Nhập ngày lễ vào một cột (ví dụ: Holiday!A2:A20).
  2. Đảm bảo các ô được định dạng là Ngày.
  3. Khi dùng hàm NETWORKDAYS hoặc WORKDAY, truyền dải này vào tham số holidays.

8.2. Định dạng ngày lễ bằng công thức

Nếu ngày lễ thay đổi mỗi năm (ví dụ: Tết Nguyên Đán), bạn có thể tạo công thức tự động:

=DATE(YEAR(TODAY()),1,1) + 30 // Giả sử ngày lễ là 30 ngày sau ngày 1/1

Hoặc dùng hàm CHOOSE và WEEKDAY để tính Ngày Lễ Di Động (ví dụ: Lễ Phục Sinh).

8.3. Đánh dấu ngày cuối tuần trong bảng

Bạn có thể dùng Conditional Formatting để tô màu các ngày cuối tuần:

  • Chọn dải ngày.
  • Vào Home > Conditional Formatting > New Rule > Use a formula.
  • Công thức: =WEEKDAY(A1,2)>5 (trong đó 2 đưa tuần bắt đầu từ Thứ Hai).
  • Đặt màu nền.

9. Tối Ưu Công Thức và Tránh Lỗi Thông Thường

Lỗi thường gặpNguyên nhânCách khắc phục
#VALUE!Định dạng ngày không đúng (text)Dùng DATEVALUE hoặc -- để chuyển.
#NUM!start_date > end_date trong DATEDIFĐảo lại thứ tự hoặc dùng ABS.
Kết quả âm trong DATEDIF(...,"MD")Tháng không đủ ngàyDùng EOMONTH để chuẩn hoá.
Sai ngày nghỉ cuối tuầnKhông chỉ định đúng weekend trong NETWORKDAYS.INTLKiểm tra chuỗi 7 ký tự, bắt đầu từ Thứ Hai.
Không tính ngày lễDanh sách ngày lễ không khớp định dạngĐảm bảo cột ngày lễ là dạng Date, không có khoảng trắng.

9.1. Sử dụng -- để ép kiểu nhanh

Nếu ô A2 chứa ngày dạng text "15/03/2026", công thức sau sẽ ép kiểu:

=--A2

Kết quả là số nguyên ngày trong Excel, có thể dùng ngay trong các hàm tính ngày.

9.2. Kết hợp IFERROR để tránh lỗi hiển thị

=IFERROR(DATEDIF(A2,B2,"D"),"Ngày không hợp lệ")

10. Sử Dụng Power Query Để Tự Động Tính Ngày

Power Query (Get & Transform) cho phép bạn xử lý dữ liệu lớn và tự động tính ngày mà không cần viết công thức trong các ô.

10.1. Các bước cơ bản

  1. Import dữ liệu: Data > Get Data > From Table/Range.
  2. Trong Power Query Editor, chọn cột ngày bắt đầu và ngày kết thúc.
  3. Vào Add Column > Custom Column và nhập công thức M:
Duration.Days(EndDate - StartDate)
  1. Đặt tên cột mới là SốNgày.
  2. Nếu muốn tính ngày làm việc, dùng hàm List.Dates và List.Count kết hợp với danh sách ngày lễ.

10.2. Ví dụ tính ngày làm việc trong Power Query

Giả sử bạn có bảng Holiday chứa ngày lễ.

let Source = Excel.CurrentWorkbook(){Name="Data"}Content, AddDays = Table.AddColumn(Source, "NgàyLàmViệc", each List.Count( List.Select( List.Dates(StartDate, Duration.Days(EndDate-StartDate)+1, #duration(1,0,0,0)), each not List.Contains(HolidayDate, _) and Date.DayOfWeek(_, Day.Monday) < 5 ) ))
in AddDays

Công thức trên:

  • Tạo danh sách các ngày trong khoảng.
  • Loại bỏ ngày lễ (HolidayDate).
  • Loại bỏ ngày cuối tuần (DayOfWeek < 5 tương đương Thứ Hai – Thứ Sáu).
  • Đếm số phần tử còn lại → số ngày làm việc.

Sau khi Close & Load, bảng mới sẽ có cột NgàyLàmViệc tính tự động.

11. Tạo Biểu Đồ Thời Gian Dựa Trên Số Ngày

Khi đã có cột Số ngày hoặc Ngày kết thúc, bạn có thể vẽ biểu đồ Gantt để hiển thị tiến độ dự án.

11.1. Các bước nhanh

  1. Chuẩn bị dữ liệu: Cột Task, StartDate, Duration (số ngày làm việc).
  2. Chọn Insert > Bar Chart > Stacked Bar.
  3. Đặt StartDate làm Series 1, Duration làm Series 2.
  4. Định dạng Series 1 (StartDate) với màu Không màu (No Fill) để chỉ hiển thị thanh Duration.
  5. Đảo trục Y để hiển thị nhiệm vụ từ trên xuống dưới.

Kết quả: biểu đồ Gantt hiển thị thời gian thực hiện từng công việc, dựa trên ngày tính được.

12. Tổng Kết

  • Excel cung cấp một loạt hàm mạnh mẽ để tính ngày: DATEDIF, NETWORKDAYS, WORKDAY, YEARFRAC, và các hàm hỗ trợ (EDATE, EOMONTH, DATE, TODAY, NOW).
  • Ngày làm việc và ngày nghỉ cuối tuần có thể tùy chỉnh bằng các phiên bản mở rộng (NETWORKDAYS.INTL, WORKDAY.INTL).
  • Ngày lễ cần được quản lý trong một danh sách riêng, và luôn định dạng đúng để các hàm nhận diện.
  • Khi làm việc với dữ liệu lớn, Power Query giúp tự động hoá tính toán ngày mà không cần công thức ô.
  • Để tránh lỗi, luôn kiểm tra định dạng ngày, sử dụng IFERROR, và kiểm tra thứ tự ngày trong DATEDIF.
  • Cuối cùng, biểu đồ Gantt và các báo cáo thời gian giúp truyền đạt kết quả tính ngày một cách trực quan.

Hy vọng bài viết này đã cung cấp cho bạn một cẩm nang toàn diện về cách tính số ngày trong Excel, từ những nhu cầu cơ bản đến những yêu cầu nâng cao và tự động hoá. Hãy áp dụng ngay vào công việc của mình và tận dụng tối đa sức mạnh của Excel!

⚠️
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