Courses
Trong bài viết này, tôi sẽ hướng dẫn bạn một số cách thực tiễn để xử lý ngày tháng. Chúng ta sẽ đi từ phép trừ đơn giản đến các hàm nâng cao như NETWORKDAYS() và DATEDIF(). Kết thúc bài, bạn sẽ biết cách tính số ngày giữa hai ngày, theo dõi ngày làm việc, và xử lý các tình huống cụ thể như bỏ qua cuối tuần hoặc ngày nghỉ lễ. Nhưng nếu bạn mới bắt đầu với Excel, hãy xem khóa học Introduction to Excel của chúng tôi để nắm vững nền tảng.
Tìm hiểu hệ thống ngày tháng của Excel
Trước hết, hãy nói ngắn gọn về hệ thống ngày tháng của Excel. Điều quan trọng nhất cần biết là Excel lưu mỗi ngày như một con số duy nhất. Ví dụ, ngày 1 tháng 1 năm 1900 là số 1, ngày 2 tháng 1 năm 1900 là số 2, v.v.
Để tránh làm mọi thứ quá phức tạp, tôi cũng muốn nhắc thêm hai điểm. Thứ nhất, Excel thực ra dùng hai hệ: hệ 1900 và hệ 1904. Hệ 1900 bắt đầu với ngày 1/1/1900 là ngày 1, còn hệ 1904 bắt đầu với ngày 1/1/1904 là ngày 0. Chênh lệch giữa hai hệ là 1.462 ngày, tức khoảng 4 năm và 1 ngày nhuận. Ngoài ra, định dạng ngày cũng có thể khác nhau theo vùng. Chẳng hạn, 02/03/2025 có thể là 3 tháng 2 hoặc 2 tháng 3 tùy nơi bạn ở. Nếu chúng ta không nhất quán về định dạng ngày, Excel có thể hiểu sai dữ liệu và cho ra kết quả không chính xác.
Những điều này sẽ không gây vấn đề nếu bạn chỉ tính số ngày giữa hai ngày, nhưng vẫn đáng biết. Hãy theo học lộ trình Excel Fundamentals để thực sự trở thành chuyên gia.
Cách tìm số ngày giữa hai ngày trong Excel
Có vài phương pháp khác nhau để tìm số ngày giữa hai ngày trong Excel. Về chức năng thì phần lớn giống nhau. Tôi sẽ trình bày từng cách để bạn chọn cách mình thích nhất.
Cách 1: Phép trừ đơn giản
Phép trừ đơn giản là một trong những cách dễ và nhanh nhất để tìm số ngày giữa các ngày. Nó trừ một ngày khỏi một ngày khác. Cú pháp là:
New date - Old date
Ở đây, tôi có một tập dữ liệu với các ngày ở ô A2 và B2, và tại ô C2, tôi nhập công thức sau:
=B2-A2

Tìm số ngày giữa hai ngày bằng phương pháp trừ. Ảnh: Tác giả.
Cách 2: Hàm DAYS()
Một cách khác tôi hay dùng là hàm DAYS(), được thiết kế riêng cho mục đích này. Cú pháp:
=DAYS(end_date, start_date)
Tại ô C2, tôi nhập công thức sau:
=DAYS(B2,A2)
Giống như phép trừ, nếu ngày kết thúc sau ngày bắt đầu, kết quả là số dương. Nếu ngày kết thúc trước, kết quả là số âm.

Tìm số ngày giữa hai ngày bằng hàm DAYS(). Ảnh: Tác giả.
Cách 3: Hàm DATEDIF()
Giống hàm DAYS(), DATEDIF() cũng trừ ngày, nhưng thứ tự đối số đảo ngược. Cú pháp:
=DATEDIF(start_date, end_date, "d"))
Đối số thứ ba chỉ định đơn vị thời gian. Ví dụ, d là ngày, y là năm, và m là tháng.
Tại ô C2, tôi nhập công thức sau:
=DATEDIF(A2, B2, "d")
Tuy nhiên, khi tôi nhấn Enter, tôi nhận lỗi #NUM! ở hàng thứ ba. Đó là vì công thức cố trừ một ngày mới hơn (end_date) từ một ngày cũ hơn (start_date) và hàm DATEDIF() không cho phép điều này. Vậy nên dù DATEDIF() linh hoạt hơn vì cho phép các đơn vị thời gian khác nhau, nó cũng kém linh hoạt ở chỗ không trả về kết quả âm.
Lưu ý thêm rằng DATEDIF() là hàm ẩn, nên Excel sẽ không gợi ý khi bạn gõ. Điều này có nghĩa bạn phải tự nhập thủ công toàn bộ khi dùng hàm này.

Tìm số ngày giữa các ngày bằng hàm DATEDIF(). Ảnh: Tác giả.
Cách 4: Các hàm NETWORKDAYS() và NETWORKDAYS.INTL()
Các hàm NETWORKDAYS() và NETWORKDAYS.INTL() chỉ tính ngày làm việc và loại trừ cuối tuần, ngày nghỉ lễ. Giả sử bạn muốn biết số ngày làm việc giữa hai ngày và loại trừ cuối tuần. Khi đó, bạn có thể dùng hàm NETWORKDAYS() để tự động bỏ qua Thứ Bảy và Chủ Nhật. Cú pháp:
NETWORKDAYS(start_date, end_date, [holidays])
Ví dụ, nếu tôi không chỉ định ngày nghỉ lễ, hàm chỉ loại trừ cuối tuần. Tại ô C2, tôi nhập công thức sau:
=NETWORKDAYS(A2,B2)
Điều này cho tôi số ngày làm việc giữa các ngày ở A2 và B2, bỏ qua cuối tuần.
Tìm số ngày giữa các ngày bằng hàm NETWORKDAYS(). Ảnh: Tác giả.
Nếu tôi cũng muốn loại trừ ngày nghỉ lễ, tôi liệt kê các ngày đó ở một cột riêng như E2 đến E5. Sau đó, tôi tham chiếu phạm vi đó ở đối số thứ ba như sau:
=NETWORKDAYS(A2,B2,$E$3:$E$4)
Giờ đây, hàm tính ngày làm việc, loại trừ cả cuối tuần và các ngày nghỉ lễ tôi đã liệt kê. Cách này giúp có được số ngày làm việc chính xác rất dễ dàng.

Sử dụng hàm NETWORKDAYS(). Ảnh: Tác giả.
Đôi khi, cuối tuần của tôi không phải mặc định là Thứ Bảy và Chủ Nhật. Khi đó, tôi dùng hàm NETWORKDAYS.INTL(). Hàm này cho phép xác định cuối tuần tùy chỉnh. Cú pháp:
NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])
Với đối số weekend, tôi có thể dùng một số để chọn bộ cuối tuần có sẵn (như 1 cho Thứ Bảy-Chủ Nhật hoặc 7 cho Thứ Sáu-Thứ Bảy) hoặc thậm chí dùng chuỗi văn bản tùy chỉnh như 0000011, trong đó mỗi chữ số đại diện cho một ngày trong tuần (bắt đầu từ Thứ Hai). 1 là ngày cuối tuần, 0 là ngày làm việc.
Giả sử cuối tuần của tôi là Thứ Sáu và Thứ Bảy. Khi đó, tôi sẽ dùng công thức này:
=NETWORKDAYS.INTL(A2, B2, 7, $E$2:$E$3)
Tìm số ngày giữa các ngày bằng NETWORKDAYS.INTL(). Ảnh: Tác giả.
Cách 5: Hàm TODAY()
Nếu tôi muốn tính có bao nhiêu ngày đã trôi qua kể từ một ngày cụ thể hoặc còn bao nhiêu ngày đến một ngày trong tương lai, tôi luôn dùng hàm TODAY(). Hàm này trả về ngày hiện tại, nên tôi không phải cập nhật hàng ngày. Cú pháp:
=TODAY() - past_date
Giả sử ngày trong quá khứ ở ô A3. Vậy, tôi nhập công thức này tại ô B3:
=TODAY()-A3

Tìm số ngày đã trôi qua kể từ ngày đó bằng hàm TODAY(). Ảnh: Tác giả.
Nếu tôi cần biết còn bao nhiêu ngày đến một ngày trong tương lai, tôi chỉ cần đảo ngược công thức:
=Future_date - TODAY()
Vậy nó sẽ thành:
=A3 - TODAY()

Tìm số ngày còn lại đến ngày đó bằng hàm TODAY(). Ảnh: Tác giả.
Suy nghĩ của tôi: So sánh nhanh các hàm
| Phương pháp | Điểm tôi thích | Điểm tôi không thích |
|---|---|---|
| Phép trừ đơn giản | Nhanh và dễ | Không tính đến cuối tuần hoặc ngày nghỉ lễ |
| DAYS() | Cú pháp rõ ràng, có cấu trúc | Chỉ hoạt động với đơn vị ngày |
| DATEDIF() | Linh hoạt với ngày, tháng hoặc năm | Báo lỗi khi giá trị âm |
|
NETWORKDAYS() NETWORKDAYS.INTL() |
Loại trừ cuối tuần và ngày nghỉ lễ | Cần thiết lập thêm cho ngày nghỉ lễ |
| TODAY() | Tự động cập nhật mỗi ngày | Chỉ dùng cho phép tính liên quan đến ngày hiện tại |
Kỹ thuật nâng cao
Ngoài những điều cơ bản, nếu bạn xử lý các kịch bản phức tạp, đây là một số kỹ thuật nâng cao:
Xử lý giá trị âm
Khi thứ tự ngày bị đảo, chúng ta nhận giá trị âm. Để khắc phục, tôi bọc hàm DAYS() trong hàm ABS() như sau:
=ABS(DAYS(B2,A2))
Và bạn có thể xem kết quả trong hình dưới đây:

Dùng hàm ABS() để xử lý giá trị âm. Ảnh: Tác giả.
Xử lý lỗi
Dưới đây là các lỗi ngày tháng trong Excel mà tôi thường gặp và cách tôi khắc phục.
-
Lỗi #VALUE!: Điều này xảy ra khi hệ thống của tôi đặt định dạng ngày là mm/dd/yyyy, nhưng công thức lại dùng dd/mm/yyyy. Tôi khắc phục bằng cách cập nhật ngày trong công thức để khớp định dạng hệ thống.
-
Lỗi #NUM!: Tôi gặp lỗi này khi dùng hàm
DAYS(), vì một trong các ngày có giá trị số nằm ngoài phạm vi hợp lệ. Để tránh điều này, hãy đảm bảo giá trị nằm trong phạm vi hợp lệ. -
Lỗi #NAME?: Thường là do gõ sai (
DATEIF()thay vìDATEDIF()). Để tránh, hãy kiểm tra lại chính tả.
Kết hợp các hàm
Đôi khi một hàm ngày tháng không đủ cho tác vụ phức tạp, nên tôi kết hợp nhiều hàm để tạo công thức động xử lý nhiều kịch bản.
Giả sử tôi muốn biết còn bao nhiêu ngày học trước kỳ thi. Với việc này, tôi dùng NETWORKDAYS() để đếm ngày làm việc và thêm IFERROR() để xử lý ngày không hợp lệ. Khi đó, công thức sẽ như sau:
=IFERROR(NETWORKDAYS(TODAY(), A2, $B$3:$B$4), "Check Dates")

Kết hợp IFERROR() với NETWORKDAYS. Ảnh: Tác giả.
Khi nào bạn có thể cần tính số ngày giữa hai ngày trong Excel
Tôi chia sẻ vài ví dụ thực tế về cách tôi gần đây đã dùng các hàm này trong dự án của mình.
Tính tuổi
Tôi nhận một danh sách ngày để tính tuổi dựa trên ngày sinh. Để làm vậy, tôi dùng hàm DATEDIF(). Bạn có thể xem tập dữ liệu mẫu dưới đây. Ở ô B2, tôi nhập
=DATEDIF(A2,TODAY(),"Y")
Công thức này tính số năm tròn giữa ngày ở ô A2 (ngày sinh) và ngày hôm nay.

Tìm tuổi bằng hàm DATEDIF(). Ảnh: Tác giả.
Nếu tôi cần chi tiết hơn, như tổng số tháng hoặc ngày, tôi có thể điều chỉnh công thức như sau:
-
mđể tìm số tháng kể từ khi sinh. -
dđể tìm số ngày.
Theo dõi tiến độ dự án
Tôi cũng theo dõi số ngày làm việc còn lại cho một dự án bằng hàm NETWORKDAYS(). Tôi nhập ngày bắt đầu và kết thúc ở ô A2 và B2, và liệt kê ngày nghỉ lễ ở ô C2:C5. Sau đó, để tính ngày làm việc của dự án, tôi nhập công thức ở ô D2:
=NETWORKDAYS(A2,B2,$C$3:$C$5)

Tìm số ngày còn lại cho dự án bằng hàm NETWORKDAYS(). Ảnh: Tác giả.
Bất cứ khi nào mốc thời gian dự án thay đổi, tôi chỉ cần cập nhật ngày, và công thức sẽ tự điều chỉnh. Nhờ vậy, tôi dễ dàng theo dõi hạn chót.
Phân tích tài chính
Có lần tôi phải theo dõi nhiều hạn hợp đồng. Tôi thiết lập một hệ thống đơn giản trong Excel để dễ nhận biết hạn đã hết hay còn hiệu lực.
Tôi chỉ cần nhập công thức này ở ô C2:
=IF(B2 < TODAY(), "Expired", "Active")
Công thức này tự động gắn nhãn cho mỗi hợp đồng dựa trên việc ngày hết hạn đã qua hay chưa.
Tôi còn dùng định dạng có điều kiện để tô màu các ô theo trạng thái cho dễ nhìn. Hợp đồng Active được tô xanh lá, còn hợp đồng Expired được tô đỏ.
Để làm vậy, tôi chọn New Rule trong mục Conditional Formatting, và chọn Use a formula to determine which cells to format. Sau đó, tôi nhập lần lượt các công thức =B2="Expired" và =B2="Active". Nhờ vậy, tôi xác định được hợp đồng nào cần chú ý.

Theo dõi hạn hợp đồng. Ảnh: Tác giả.
Giờ đây, mọi thứ tự động cập nhật. Công thức điều chỉnh ngay khi tôi thêm hợp đồng mới hoặc cập nhật ngày hết hạn.
Khoảng gián đoạn cấp thuốc
Bạn cũng có thể tính khoảng trống giữa các lần nhận thuốc theo đơn trong Excel. Giả sử bố mẹ bạn nhận 30 ngày thuốc vào 1/1/2025, nhưng hôm nay là 5/2/2025, và bạn muốn biết họ đã gián đoạn bao lâu.
Trong tập dữ liệu dưới đây, ô A2 cho biết lần nhận thuốc gần nhất. Ta chỉ cần lấy hôm nay trừ đi ngày đó và cộng 30. (Đây chỉ là ví dụ để luyện tập hàm Excel; với tình huống y tế, hãy tham khảo ý kiến bác sĩ.)
=TODAY()-(A3+30)

Tìm lần cấp thuốc gần nhất. Ảnh: Tác giả
Bằng cách này, tôi dễ dàng theo dõi số ngày từ mỗi lần nhận thuốc và lên kế hoạch lần tiếp theo mà không cần phỏng đoán.
Mẹo và thực hành tốt
Dưới đây là vài mẹo và thực hành tốt để hỗ trợ bạn:
-
Tôi luôn đảm bảo các ô ngày tháng được định dạng đúng. Nếu không, Excel có thể không nhận diện là ngày, dẫn đến tính toán sai. Vì vậy, tôi luôn kiểm tra lại các ô được đặt dạng Date trong thẻ Home tại nhóm Name (định dạng).
-
Tôi giữ công thức đơn giản và rõ ràng. Thay vì ghi cứng ngày như
=DAYS("1/10/2025", "1/1/2025"), tôi luôn dùng tham chiếu ô như A2 và B2. Như vậy, nếu cần cập nhật ngày, tôi chỉ đổi giá trị ô mà không đụng vào công thức. -
Khi dùng hàm
TODAY(), tôi luôn đảm bảo ô được định dạng Number — nếu không sẽ hiển thị lỗi #### hoặc ngày không đúng.
Tổng kết
Tôi đã chia sẻ một số cách hay nhất để làm việc với ngày tháng trong Excel, từ phép trừ đơn giản đến các hàm nâng cao như DAYS(), DATEDIF(), NETWORKDAYS() và TODAY(). Những hàm này rất hữu ích để theo dõi mốc thời gian và quản lý ngày nghỉ lễ.
Cách tốt nhất để quen tay là luyện tập. Hãy thử chúng trong bảng tính của bạn và xem chúng có thể đơn giản hóa công việc thế nào.
Nếu bạn sẵn sàng nâng cao kỹ năng hơn nữa, tôi khuyên bạn học các khóa Data Analysis in Excel , Data Preparation in Excel và Data Visualization in Excel. Các khóa này bao quát những tính năng và chiến lược nâng cao giúp bạn làm việc hiệu quả hơn nữa.
Tôi là một chiến lược gia nội dung, yêu thích việc đơn giản hóa các chủ đề phức tạp. Tôi đã giúp các công ty như Splunk, Hackernoon và Tiiny Host tạo nội dung hấp dẫn và giàu thông tin cho khán giả của họ.
Câu hỏi thường gặp
Làm thế nào để tính chênh lệch giữa hai thời điểm theo giờ, phút và giây đồng thời bỏ qua các đơn vị khác?
Bạn có thể dùng các công thức sau:
-
Giờ:
=HOUR(B2-A2) -
Phút:
=MINUTE(B2-A2) -
Giây:
=SECOND(B2-A2)
Lưu ý: Kết quả sẽ không vượt quá 24 giờ hoặc 60 phút/giây.
Làm thế nào để tính số giờ giữa hai thời điểm trong Excel?
Để tính giờ ở dạng thập phân, dùng =(B2-A2)*24, và để lấy số giờ tròn, dùng =INT((B2-A2)*24).
Các phím tắt để nhanh chóng chèn ngày hoặc giờ hiện tại trong Excel là gì?
Bạn có thể làm như sau:
- Nhấn Ctrl + ; để chèn ngày hiện tại.
- Nhấn Ctrl + Shift + ; để chèn thời gian hiện tại.
Làm thế nào để tính số tuần giữa hai ngày?
Để tính số tuần giữa hai ngày, hãy chia số ngày cho 7. Bạn có thể dùng công thức: = (End_Date - Start_Date) / 7.
