Cách Tính Số Ngày Giữa Hai Ngày Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao

Trong môi trường làm việc hiện đại, việc quản lý thời gian, lập kế hoạch hay theo dõi tiến độ dự án đều đòi hỏi chúng ta phải biết cách tính toán số ngày giữa các mốc thời gian. Microsoft Excel, với tính năng mạnh mẽ và linh hoạt, là công cụ hỗ trợ đắc lực cho công việc này. Bài viết dưới đây sẽ cung cấp cho bạn một hướng dẫn toàn diện, chi tiết từ những kiến thức cơ bản nhất cho đến các phương pháp nâng cao, giúp bạn nhanh chóng và chính xác tính số ngày giữa hai ngày trong Excel.

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

1. Nhập và Định Dạng Ngày Tháng Trong Excel

1.1. Định Dạng Ngày Cơ Bản

Khi nhập dữ liệu ngày tháng vào Excel, bạn chỉ cần gõ theo một trong các định dạng chuẩn như:

  • dd/mm/yyyy (ví dụ: 25/12/2026)
  • mm/dd/yyyy (ví dụ: 12/25/2026)
  • yyyy-mm-dd (ví dụ: 2026-12-25)

Sau khi nhập, Excel sẽ tự động nhận dạng và hiển thị dưới dạng ngày tháng. Để chắc chắn rằng ô đã được định dạng là ngày, bạn có thể thực hiện:

  1. Chọn ô → Nhấn chuột phải → Format Cells.
  2. Chọn Category → Date và chọn định dạng mong muốn.

1.2. Kiểm Tra Định Dạng

Nếu Excel không nhận dạng đúng, bạn sẽ thấy giá trị được hiển thị dưới dạng số (ví dụ: 45234). Đó là số serial (số ngày tính từ 1/1/1900). Để chuyển lại thành dạng ngày:

  • Chọn ô → Ctrl + 1 → Date → Chọn định dạng.

2. Công Thức Cơ Bản Nhất: Dùng Dấu Trừ (-)

2.1. Cách Thực Hiện

Giả sử:

  • Ô A2 chứa ngày bắt đầu (01/01/2026).
  • Ô B2 chứa ngày kết thúc (15/01/2026).

Công thức:

=B2-A2

Kết quả sẽ trả về 14 – số ngày chênh lệch (không bao gồm ngày đầu).

2.2. Bao Gồm Ngày Đầu và Ngày Cuối

Nếu muốn tính cả ngày đầu và ngày cuối, chỉ cần cộng 1:

=B2-A2+1

Kết quả trong ví dụ trên sẽ là 15 ngày.

3. Sử Dụng Hàm DATEDIF (DATEDIF)

3.1. Giới Thiệu Hàm DATEDIF

DATEDIF là hàm ẩn trong Excel (không xuất hiện trong danh sách hàm), nhưng vẫn rất hữu ích để tính khoảng cách giữa hai ngày theo các đơn vị: ngày, tháng, năm. 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 ("d" – ngày, "m" – tháng, "y" – năm, "ym" – tháng còn lại, "md" – ngày còn lại, "yd" – ngày còn lại trong năm).

3.2. Ví Dụ Cụ Thể

Công thứcMô tảKết quả
=DATEDIF(A2,B2,"d")Số ngày chênh lệch (không bao gồm ngày đầu)14
=DATEDIF(A2,B2,"d")+1Bao gồm ngày đầu15
=DATEDIF(A2,B2,"m")Số tháng trọn0
=DATEDIF(A2,B2,"y")Số năm trọn0
=DATEDIF(A2,B2,"ym")Số tháng còn lại sau khi trừ năm0
=DATEDIF(A2,B2,"md")Số ngày còn lại sau khi trừ tháng và năm14

3.3. Lưu Ý Khi Dùng DATEDIF

  • start_date phải nhỏ hơn end_date. Nếu ngược lại, hàm sẽ trả về lỗi #NUM!.
  • Hàm không tính cả ngày cuối nếu không cộng thêm 1.
  • Đối với khoảng cách tính theo tháng ("m"), hàm chỉ tính số tháng tròn (không xét ngày).

4. Hàm NETWORKDAYS và NETWORKDAYS.INTL

4.1. Mục Đích

Khi làm việc trong môi trường doanh nghiệp, thường cần tính số ngày làm việc (không tính cuối tuần và ngày lễ). Excel cung cấp hàm NETWORKDAYS và NETWORKDAYS.INTL để thực hiện điều này.

4.2. Cú Pháp Cơ Bản

=NETWORKDAYS(start_date, end_date, holidays)
  • holidays (tùy chọn): danh sách ngày lễ (có thể là một dải ô).

4.3. Ví Dụ

ÔGiá trị
A201/01/2026 (Ngày bắt đầu)
B231/01/2026 (Ngày kết thúc)
D2:D502/01/2026; 03/01/2026; 09/01/2026; 23/01/2026 (Ngày lễ)

Công thức:

=NETWORKDAYS(A2,B2,D2:D5)

Kết quả: 20 ngày làm việc (trừ ngày cuối tuần và các ngày lễ).

4.4. Tùy Chỉnh Ngày Cuối Tuần Với NETWORKDAYS.INTL

Mặc định, cuối tuần là Thứ Bảy và Chủ Nhật. Nếu công ty của bạn có lịch làm việc khác (ví dụ: nghỉ Chủ Nhật và Thứ Hai), dùng NETWORKDAYS.INTL.

=NETWORKDAYS.INTL(start_date, end_date, weekend, holidays)
  • weekend là một chuỗi 7 ký tự (“1” là ngày nghỉ, “0” là ngày làm) bắt đầu từ Thứ Hai.
  • Ví dụ: "0000011" – nghỉ Thứ Bảy và Chủ Nhật (mặc định).
  • "1000001" – nghỉ Chủ Nhật và Thứ Hai.

4.4.1. Ví Dụ Thực Tế

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

Kết quả sẽ tính số ngày làm việc, chỉ nghỉ Chủ Nhật và Thứ Hai, đồng thời trừ ngày lễ đã liệt kê.

5. Hàm WORKDAY và WORKDAY.INTL (Tính Ngày Kết Thúc Dựa Trên Số Ngày Làm Việc)

5.1. Khi Nào Dùng?

Bạn có một dự án bắt đầu vào ngày X và dự tính sẽ mất N ngày làm việc. Bạn muốn biết ngày kết thúc dự án (không tính ngày nghỉ).

5.2. Cú Pháp

=WORKDAY(start_date, days, holidays)
  • days: số ngày làm việc cần thiết (có thể âm nếu muốn tính ngày trước).

5.3. Ví Dụ

ÔGiá trị
A201/02/2026 (Ngày bắt đầu)
D2:D502/02/2026; 15/02/2026 (Ngày lễ)

Công thức tính ngày kết thúc sau 10 ngày làm việc:

=WORKDAY(A2,10,D2:D5)

Kết quả: 15/02/2026 (vì 02/02 là ngày lễ, nên được bỏ qua).

5.4. Tùy Chỉnh Cuối Tuần Với WORKDAY.INTL

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

weekend có cùng định dạng như trong NETWORKDAYS.INTL.

6. Tính Khoảng Cách Thời Gian Chi Tiết (Năm, Tháng, Ngày)

Đôi khi bạn cần biết độ tuổi, thời gian làm việc, hoặc khoảng thời gian chi tiết. Kết hợp DATEDIF với một số phép tính đơn giản sẽ cho ra kết quả dạng “X năm Y tháng Z ngày”.

Count Days Between Dates Excel
Count Days Between Dates Excel

6.1. Công Thức Tổng Hợp

Giả sử:

  • A2 = ngày sinh (01/03/1990).
  • B2 = ngày hiện tại (25/06/2026).
=DATEDIF(A2,B2,"y") & " năm " &
DATEDIF(A2,B2,"ym") & " tháng " &
DATEDIF(A2,B2,"md") & " ngày"

Kết quả: 36 năm 3 tháng 24 ngày.

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

Mục ĐíchCông ThứcMô Tả
Tính tuổi=DATEDIF(A2,TODAY(),"y")Số năm tròn.
Thời gian làm việc (chi tiết)Như công thức trênKết quả dạng “X năm Y tháng Z ngày”.
Thời gian còn lại đến ngày cuối dự án=DATEDIF(TODAY(), end_date, "d")Số ngày còn lại.

7. Sử Dụng TODAY() và NOW() Để Tự Động Cập Nhật

  • TODAY() trả về ngày hiện tại (không có thời gian).
  • NOW() trả về ngày và giờ hiện tại.

Khi kết hợp với các hàm trên, bạn có thể tạo bảng tự động cập nhật.

7.1. Ví Dụ Đếm Ngày Đến Hạn

ÔNội dung
A215/07/2026 (Ngày hết hạn)
B2=A2-TODAY() (Số ngày còn lại)

Khi mở file vào ngày 10/07/2026, B2 sẽ hiển thị 5.

7.2. Cảnh Báo Hết Hạn

Bạn có thể dùng Conditional Formatting để làm nổi bật ô khi ngày còn lại ≤ 0:

  1. Chọn ô B2 → Conditional Formatting → New Rule → Use a formula.
  2. Nhập công thức: =B2<=0.
  3. Đặt màu nền đỏ.

8. Xử Lý Ngày Với Định Dạng Văn Bản (Text)

Có lúc dữ liệu ngày được nhập dưới dạng văn bản (text), ví dụ "2026/01/01" dưới dạng chuỗi. Để tính toán, cần chuyển sang ngày thực.

8.1. Hàm DATEVALUE

=DATEVALUE(text_date)

Nếu A2 chứa "2026/01/01":

=DATEVALUE(A2)

Kết quả là 44927 (số serial), sau đó định dạng lại thành ngày.

8.2. Kết Hợp LEFT, MID, RIGHT

Khi chuỗi không phải định dạng chuẩn, bạn có thể tách ra:

=DATE(RIGHT(A2,4), MID(A2,4,2), LEFT(A2,2))

Giả sử A2 = "25-12-2026" (định dạng dd-mm-yyyy).

9. Tính Khoảng Cách Ngày Đối Với Nhiều Dòng Dữ Liệu (Array)

Khi có một danh sách cột Start Date và End Date, bạn muốn tính số ngày cho từng dòng và tổng hợp.

9.1. Cột Công Thức

Giả sử:

  • Cột A: Start Date.
  • Cột B: End Date.

Ở cột C (công thức cho dòng 2):

=B2-A2

Sau khi kéo công thức xuống, bạn sẽ có cột C chứa số ngày cho mỗi dòng.

9.2. Tổng Số Ngày

=SUM(C2:C100)

Nếu muốn tính tổng số ngày làm việc (trừ cuối tuần, ngày lễ) cho toàn bộ danh sách, bạn có thể dùng công thức mảng (Excel 365/2026):

=SUM(NETWORKDAYS(A2:A100, B2:B100, holidays))

Lưu ý: Hàm NETWORKDAYS không chấp nhận dải mảng trực tiếp trong các phiên bản cũ; bạn cần dùng SUMPRODUCT hoặc Công Thức Mảng:

=SUMPRODUCT(NETWORKDAYS(A2:A100, B2:B100, holidays))

10. Xử Lý Lỗi Thường Gặp Khi Tính Ngày

LỗiNguyên NhânCách Khắc Phục
#VALUE!Ô chứa giá trị không phải ngày hoặc chuỗi không chuyển đổi được.Kiểm tra định dạng, dùng DATEVALUE hoặc chuyển đổi bằng DATE.
#NUM!start_date > end_date trong DATEDIF, NETWORKDAYS.Đảo lại thứ tự ngày hoặc dùng ABS(end_date-start_date).
#NAME?Gõ sai tên hàm (đặc biệt là DATEDIF).Kiểm tra chính tả, nhớ rằng DATEDIF không hiển thị trong danh sách hàm.
#### (ô hiển thị dải ô)Cột không đủ rộng hoặc ngày âm.Mở rộng cột, hoặc kiểm tra lại công thức.

11. Tự Động Hóa Với VBA (Macro)

Đối với các dự án lớn, việc lặp lại công thức có thể gây chậm và khó bảo trì. Sử dụng VBA để tính ngày nhanh chóng.

11.1. Macro Đếm Ngày Giữa Hai Ô

Function DaysBetween(StartDate As Date, EndDate As Date, _ Optional IncludeBoth As Boolean = False) As Long If IncludeBoth Then DaysBetween = EndDate - StartDate + 1 Else DaysBetween = EndDate - StartDate End If
End Function
  • Đặt đoạn mã vào Module.
  • Sử dụng trong ô: =DaysBetween(A2,B2,TRUE).

11.2. Macro Tính Ngày Làm Việc Với Ngày Lễ

Function WorkDaysEx(StartDate As Date, EndDate As Date, _ Holidays As Range) As Long WorkDaysEx = Application.WorksheetFunction.NetworkDays(StartDate, EndDate, Holidays)
End Function
  • Gọi: =WorkDaysEx(A2,B2,$D$2:$D$10).

11.3. Lưu Ý Khi Dùng VBA

  • Bật Macro trong Trust Center.
  • Đặt Option Explicit để tránh lỗi biến.
  • Kiểm tra ngày nhập vào đúng định dạng Date.

12. Ứng Dụng Thực Tiễn Trong Doanh Nghiệp

NgànhỨng DụngCông Thức/Tool
Nhân sựTính tuổi, thâm niên, ngày nghỉ còn lại.DATEDIF, NETWORKDAYS, TODAY()
Dự ánXác định ngày kết thúc dự án dựa trên số ngày làm việc.WORKDAY, WORKDAY.INTL
Kế toánTính số ngày tính lãi suất, trả nợ.DATEDIF + công thức lãi.
Bán hàngĐếm ngày giao hàng, thời gian giao hàng trung bình.AVERAGE, NETWORKDAYS
Giáo dụcTính số ngày học, nghỉ lễ.NETWORKDAYS.INTL với cấu hình cuối tuần tùy chỉnh.

13. Tổng Kết – Các Bước Nhắc Nhở Khi Tính Ngày Trong Excel

  1. Đảm bảo dữ liệu ngày được định dạng đúng (đối với ngày và văn bản).
  2. Chọn công thức phù hợp:
  3. Dấu trừ (-) cho tính nhanh.
  4. DATEDIF cho độ tuổi, khoảng thời gian chi tiết.
  5. NETWORKDAYS / NETWORKDAYS.INTL cho ngày làm việc.
  6. WORKDAY / WORKDAY.INTL để tính ngày kết thúc dự án.
  7. Xử lý ngày lễ bằng cách liệt kê trong một dải ô và đưa vào hàm.
  8. Sử dụng TODAY() hoặc NOW() để tạo bảng tự cập nhật.
  9. Kiểm tra lỗi (#VALUE!, #NUM!) và sửa định dạng.
  10. Nếu cần tự động hoá, viết hàm VBA tùy chỉnh.

14. Câu Hỏi Thường Gặp (FAQ)

Q1: Tại sao DATEDIF không xuất hiện trong danh sách hàm?
A: DATEDIF là hàm còn lại từ các phiên bản Lotus 1‑2‑3, vì vậy không hiển thị trong danh sách hàm, nhưng vẫn hoạt động trong Excel.

Q2: Làm sao tính ngày giữa hai ngày nếu ngày cuối tuần là Thứ Năm và Thứ Sáu?
A: Dùng NETWORKDAYS.INTL với weekend = "0011100" (Thứ Hai, Ba, Tư = ngày làm; Thu, Fri = nghỉ).

Q3: Tôi muốn tính số ngày làm việc nhưng không tính ngày lễ quốc tế, chỉ tính ngày lễ công ty.
A: Liệt kê ngày lễ công ty trong một dải ô (ví dụ D2:D20) và đưa vào hàm NETWORKDAYS hoặc NETWORKDAYS.INTL làm đối số holidays.

Q4: Excel trả về số ngày là âm, tôi muốn luôn nhận giá trị dương.
A: Dùng ABS(end_date-start_date) hoặc =IF(end_date<start_date, start_date-end_date, end_date-start_date).

Q5: Khi nhập ngày tháng dạng dd/mm/yyyy, Excel lại chuyển thành mm/dd/yyyy.
A: Kiểm tra Regional Settings của Windows hoặc thay đổi định dạng ngày trong File → Options → Advanced → When calculating this workbook.

15. Kết Luận

Việc tính số ngày giữa hai ngày trong Excel không chỉ là một kỹ năng cơ bản mà còn là nền tảng cho nhiều quy trình quản lý thời gian, dự án và tài chính trong doanh nghiệp. Bằng việc nắm vững các công thức cơ bản (dấu trừ, DATEDIF) và các hàm nâng cao (NETWORKDAYS, WORKDAY, NETWORKDAYS.INTL), bạn có thể đáp ứng hầu hết các yêu cầu thực tiễn, từ tính tuổi cá nhân đến lập kế hoạch dự án chi tiết.

Nếu công việc của bạn đòi hỏi tính toán phức tạp, tự động hoá hay tích hợp ngày lễ tùy chỉnh, hãy khám phá thêm các hàm INTL và thậm chí viết macro VBA để tối ưu hoá quy trình. Hy vọng bài viết đã cung cấp cho bạn một bộ công cụ đầy đủ, chi tiết và thực tiễn để làm chủ việc tính ngày trong Excel. Hãy áp dụng ngay và trải nghiệm sự nhanh chóng, chính xác mà Excel mang lại!

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