Hướng dẫn

Hàm Ngày Tháng Google Sheets: DATE, TODAY, DATEDIF, NETWORKDAYS [10 Ví Dụ 2026]

Tuân HoangTuân Hoang
9 tháng 6, 2026
8 phút đọc
Ảnh minh họa bài viết: Hàm Ngày Tháng Google Sheets: DATE, TODAY, DATEDIF, NETWORKDAYS [10 Ví Dụ 2026]

Tại Sao Hàm Ngày Tháng Quan Trọng Trong Google Sheets?

Hầu hết các bảng tính quản lý nghiêm túc — hợp đồng, nhân sự, kho hàng, bán hàng — đều phụ thuộc vào ngày tháng. Tính sai ngày đến hạn hợp đồng, tính nhầm tuổi nhân viên, hay bỏ sót ngày lễ khi đếm ngày làm việc đều dẫn đến sai lệch trong toàn bộ báo cáo.

Google Sheets cung cấp một bộ hàm ngày tháng mạnh mẽ: TODAY, NOW, DATE, DATEDIF, NETWORKDAYS, EDATE, EOMONTH, WEEKDAYTEXT. Khi kết hợp đúng cách, những hàm này giải quyết được 90% bài toán liên quan đến thời gian trong công việc thực tế.

Bài viết này trình bày 10 ví dụ thực tế — mỗi ví dụ có công thức cụ thể, dữ liệu mẫu và kết quả — để bạn có thể áp dụng ngay vào bảng tính của mình.

Nguyên Tắc Cơ Bản: Sheets Lưu Ngày Như Thế Nào?

Trước khi đi vào từng hàm, cần hiểu một nguyên tắc quan trọng: Google Sheets lưu trữ ngày dưới dạng số nguyên. Ngày 1/1/1900 tương đương với số 1, và mỗi ngày tiếp theo tăng thêm 1.

Điều này có nghĩa là:

  • Bạn có thể cộng/trừ ngày như cộng/trừ số thông thường
  • B2 - A2 sẽ cho ra số ngày giữa hai ngày
  • TODAY() + 30 sẽ cho ngày 30 ngày sau hôm nay
  • Ô hiển thị "15/07/2026" hay số "45847" là cùng một giá trị — chỉ khác định dạng hiển thị

Nếu ô của bạn hiển thị một số nguyên lạ thay vì ngày, hãy định dạng ô theo Format → Number → Date.

10 Ví Dụ Thực Tế Với Hàm Ngày Tháng

1. TODAY & NOW — Lấy Ngày/Giờ Hiện Tại

Hai hàm đơn giản nhưng xuất hiện trong hầu hết mọi bảng tính có liên quan đến thời gian.

=TODAY()   → Ngày hôm nay (không có giờ)
=NOW()     → Ngày + giờ hiện tại

Dataset mẫu và kết quả:

Công thứcKết quả (ví dụ ngày 09/06/2026)
=TODAY()09/06/2026
=NOW()09/06/2026 08:30
=TODAY()+716/06/2026 (7 ngày sau)
=TODAY()-3010/05/2026 (30 ngày trước)

Ứng dụng thực tế: Cột "Ngày cập nhật cuối" tự động, kiểm tra deadline ("Còn X ngày"), tính số ngày từ ngày ký đến hôm nay.

Lưu ý quan trọng: TODAY()NOW() cập nhật tự động mỗi khi file được mở lại hoặc tính toán lại. Nếu cần "đóng băng" ngày, hãy dùng Ctrl+; (Windows) hoặc Cmd+; (Mac) để chèn ngày tĩnh.

2. DATE — Tạo Ngày Từ Năm, Tháng, Ngày Riêng Lẻ

Hàm DATE(năm, tháng, ngày) tạo ra một ngày cụ thể từ ba thành phần số. Đặc biệt hữu ích khi dữ liệu ngày của bạn bị tách thành các cột riêng.

=DATE(2026,7,15)                        → 15/07/2026
=DATE(YEAR(A2),MONTH(A2)+3,1)-1         → Ngày cuối quý tiếp theo
=DATE(YEAR(TODAY()),MONTH(TODAY()),1)   → Ngày đầu tháng này

Dataset mẫu:

A (Năm)B (Tháng)C (Ngày)D (Kết quả =DATE(A2,B2,C2))
202671515/07/2026
2026123131/12/2026
20251101/01/2025

Mẹo: Hàm DATE xử lý thông minh các giá trị vượt biên. =DATE(2026,13,1) sẽ tự động trả về 01/01/2027, và =DATE(2026,1,0) trả về 31/12/2025 (ngày cuối tháng 12 năm trước). Đây là cách tính ngày cuối tháng trước rất tiện dụng.

3. DATEDIF — Tính Khoảng Cách Giữa Hai Ngày

Đây là hàm mạnh nhất để tính hiệu giữa hai ngày. DATEDIF là hàm "ẩn" — không có gợi ý autocomplete — nhưng vẫn hoạt động hoàn hảo trong Google Sheets.

=DATEDIF(ngày_bắt_đầu, ngày_kết_thúc, đơn_vị)

Các đơn vị quan trọng:

Đơn vịÝ nghĩaVí dụ
"Y"Số năm đầy đủTính tuổi nhân viên
"M"Số tháng đầy đủThời gian làm việc (tháng)
"D"Số ngàySố ngày từ ngày ký đến hôm nay
"YM"Số tháng lẻ (sau khi đã trừ năm)Dùng kết hợp với "Y"
"MD"Số ngày lẻ (sau khi đã trừ tháng)Hiển thị "X năm Y tháng Z ngày"

Công thức tính tuổi đầy đủ:

=DATEDIF(A2,TODAY(),"Y")&" tuổi "&DATEDIF(A2,TODAY(),"YM")&" tháng"

Dataset mẫu (A2 = Ngày sinh, B2 = Hôm nay 09/06/2026):

A (Ngày sinh)Số năm ("Y")Số tháng ("M")Số ngày ("D")Tuổi đầy đủ
15/03/1990364341323436 tuổi 2 tháng
01/01/200026317965526 tuổi 5 tháng
20/06/1985404911496440 tuổi 11 tháng

Quan trọng: Ngày đầu tiên (ngày_bắt_đầu) phải nhỏ hơn hoặc bằng ngày_kết_thúc. Nếu ngược lại, hàm trả về lỗi.

4. NETWORKDAYS — Số Ngày Làm Việc (Loại Thứ 7, Chủ Nhật)

Hàm NETWORKDAYS tính số ngày làm việc giữa hai ngày, tự động bỏ qua Thứ Bảy và Chủ Nhật.

=NETWORKDAYS(ngày_bắt_đầu, ngày_kết_thúc)
=NETWORKDAYS(ngày_bắt_đầu, ngày_kết_thúc, danh_sách_ngày_lễ)

Dataset mẫu:

A (Bắt đầu)B (Kết thúc)=NETWORKDAYS(A2,B2)=NETWORKDAYS(A2,B2,NgayLe!A:A)
01/06/202630/06/20262222 (không có lễ tháng 6)
01/04/202630/04/20262221 (trừ 30/4)
01/01/202631/01/20262217 (trừ 1/1 và Tết Âm lịch)

Ứng dụng: Tính SLA (Service Level Agreement), deadline hợp đồng dự án, thời gian xử lý đơn hàng, số ngày công thực tế trong tháng.

Biến thể NETWORKDAYS.INTL: Nếu doanh nghiệp bạn làm việc 6 ngày/tuần (không nghỉ Thứ Bảy), dùng =NETWORKDAYS.INTL(A2,B2,11) — tham số 11 chỉ loại Chủ Nhật.

5. EDATE — Ngày Sau N Tháng

Hàm EDATE(ngày_bắt_đầu, số_tháng) trả về ngày cách ngày bắt đầu một số tháng nhất định. Không cần lo về việc tháng có 28, 29, 30 hay 31 ngày.

=EDATE(A2, 12)    → 1 năm sau ngày ký hợp đồng
=EDATE(A2, -3)    → 3 tháng trước (kiểm tra thử việc)
=EDATE(A2, 6)     → 6 tháng kể từ ngày đặt cọc

Dataset mẫu (A = Ngày ký, B = Số tháng HĐ, C = Ngày hết hạn =EDATE(A2,B2)):

A (Ngày ký)B (Số tháng)C (Ngày hết hạn)
15/01/20261215/01/2027
28/02/2026628/08/2026
31/03/2026330/06/2026

Cảnh báo hết hạn kết hợp:

=IF(EDATE(A2,B2)-TODAY()<=30,"⚠️ Sắp hết hạn","✅ Còn hạn")

6. EOMONTH — Ngày Cuối Tháng

Hàm EOMONTH(ngày_bắt_đầu, số_tháng) trả về ngày cuối cùng của tháng, tính từ ngày_bắt_đầu cộng thêm số_tháng tháng. Khi số_tháng = 0 là tháng hiện tại.

=EOMONTH(TODAY(), 0)    → Ngày cuối tháng này
=EOMONTH(TODAY(), 1)    → Ngày cuối tháng sau
=EOMONTH(TODAY(), -1)+1 → Ngày đầu tháng này (cuối tháng trước + 1 ngày)

Kết quả mẫu (hôm nay 09/06/2026):

Công thứcKết quả
=EOMONTH(TODAY(),0)30/06/2026
=EOMONTH(TODAY(),1)31/07/2026
=EOMONTH(TODAY(),-1)+101/06/2026
=EOMONTH(TODAY(),-1)31/05/2026

Ứng dụng: Tự động tạo kỳ thanh toán cuối tháng, lọc dữ liệu trong tháng hiện tại, tính ngày chốt sổ kế toán.

7. WEEKDAY — Xác Định Thứ Trong Tuần

Hàm WEEKDAY(ngày, kiểu) trả về số thứ tự của ngày trong tuần. Tham số kiểu = 2 phù hợp nhất với Việt Nam (1 = Thứ Hai, 7 = Chủ Nhật).

=WEEKDAY(A2, 2)    → Số từ 1-7 (1=T2, 2=T3, ..., 7=CN)
=TEXT(A2, "dddd")  → Tên ngày bằng tiếng Anh ("Monday", "Tuesday"...)
=CHOOSE(WEEKDAY(A2,2),"T2","T3","T4","T5","T6","T7","CN")

Dataset mẫu:

A (Ngày)=WEEKDAY(A2,2)=CHOOSE(WEEKDAY...)=TEXT(A2,"dddd")
09/06/20262T3Tuesday
13/06/20266T7Saturday
14/06/20267CNSunday
15/06/20261T2Monday

Ứng dụng thực tế: Kiểm tra xem ngày giao hàng có rơi vào cuối tuần không, lọc chỉ các giao dịch ngày thường, tạo lịch tự động với tên thứ.

8. TEXT — Định Dạng Ngày Thành Chuỗi Text

Hàm TEXT(giá_trị, định_dạng) chuyển đổi ngày thành chuỗi ký tự theo định dạng tùy chọn. Cực kỳ hữu ích khi cần ghép ngày vào câu văn bản hoặc xuất dữ liệu sang hệ thống khác.

=TEXT(TODAY(),"dd/mm/yyyy")           → "09/06/2026"
=TEXT(TODAY(),"dd/mm/yyyy HH:mm")     → "09/06/2026 08:30"
=TEXT(TODAY(),"mmmm yyyy")            → "June 2026"
=TEXT(TODAY(),"dd-mmm-yy")            → "09-Jun-26"

Ghép ngày vào câu:

="Hợp đồng ký ngày "&TEXT(A2,"dd/mm/yyyy")&", hết hạn ngày "&TEXT(B2,"dd/mm/yyyy")

Kết quả: "Hợp đồng ký ngày 15/01/2026, hết hạn ngày 15/01/2027"

Kết quả mẫu các định dạng phổ biến:

Định dạngKết quả với ngày 09/06/2026
"dd/mm/yyyy"09/06/2026
"d/m/yyyy"9/6/2026
"dd-mm-yy"09-06-26
"yyyy-mm-dd"2026-06-09
"mmmm dd, yyyy"June 09, 2026

9. Số Ngày Còn Lại Đến Deadline

Một trong những ứng dụng phổ biến nhất: hiển thị cảnh báo khi deadline đang đến gần hoặc đã qua.

=B2-TODAY()    → Số ngày còn lại (âm nếu đã trễ)

=IF(B2<TODAY(),
  "Trễ "&(TODAY()-B2)&" ngày",
  "Còn "&(B2-TODAY())&" ngày"
)

Dataset mẫu (B = Ngày deadline):

A (Tên việc)B (Deadline)=B2-TODAY()Trạng thái
Báo cáo Q230/06/202621Còn 21 ngày
Nộp thuế VAT20/05/2026-20Trễ 20 ngày
Gia hạn domain09/06/20260Còn 0 ngày

Cảnh báo 3 mức màu sắc: Kết hợp với Conditional Formatting:

  • Đỏ: =B2<TODAY() — Đã trễ
  • Vàng: =AND(B2>=TODAY(),B2-TODAY()<=7) — Còn dưới 7 ngày
  • Xanh: =B2-TODAY()>7 — Còn nhiều thời gian

10. Tính Ngày Kết Thúc Hợp Đồng + Cảnh Báo Sắp Hết Hạn

Bài toán quản lý hợp đồng hoàn chỉnh: từ ngày ký và số tháng, tự động tính ngày hết hạn và gắn cờ cảnh báo 30 ngày trước khi hết hạn.

Ngày hết hạn:  =EDATE(A2,C2)
Số ngày còn:   =EDATE(A2,C2)-TODAY()
Cảnh báo:      =IF(EDATE(A2,C2)-TODAY()<=0,"🔴 Đã hết hạn",
                 IF(EDATE(A2,C2)-TODAY()<=30,"⚠️ Sắp hết hạn",
                 "✅ Còn hạn"))

Dataset mẫu hoàn chỉnh:

A (Ngày ký)B (Tên đối tác)C (Số tháng)D (Ngày hết hạn)E (Trạng thái)
15/01/2025Công ty ABC1815/07/2026⚠️ Sắp hết hạn
01/06/2024Nhà cung cấp XYZ2401/06/2026🔴 Đã hết hạn
01/09/2025Đối tác DEF1201/09/2026✅ Còn hạn

Bảng Ngày Lễ Việt Nam 2026 Dùng Với NETWORKDAYS

Để hàm NETWORKDAYS trả về kết quả chính xác, bạn cần một sheet riêng chứa danh sách ngày lễ. Tạo sheet tên NgayLe và điền các ngày sau:

NgàyTên ngày lễGhi chú
01/01/2026Tết Dương lịchNghỉ 1 ngày
28/01/202629 Tháng Chạp Bính NgọTết Âm lịch (dự kiến)
29/01/202630 Tháng Chạp Bính NgọGiao thừa
30/01/2026Mùng 1 Tết Đinh MùiTết chính thức
31/01/2026Mùng 2 Tết Đinh MùiTết
01/02/2026Mùng 3 Tết Đinh MùiTết
02/02/2026Mùng 4 Tết Đinh MùiTết
30/04/2026Ngày Giải phóng miền NamNghỉ lễ
01/05/2026Ngày Quốc tế Lao độngNghỉ lễ
02/09/2026Quốc khánhNghỉ 2 ngày (2-3/9)
03/09/2026Quốc khánh (bù)Nghỉ kéo dài

Cách dùng trong công thức:

=NETWORKDAYS(A2,B2,NgayLe!A:A)

Hoặc nếu ngày lễ nằm trong sheet hiện tại từ E2:E20:

=NETWORKDAYS(A2,B2,$E$2:$E$20)

Lỗi Thường Gặp Và Cách Xử Lý

Lỗi #VALUE!

Nguyên nhân: Ô ngày được nhập dưới dạng text (thường thấy khi copy từ Excel hoặc hệ thống khác). Sheets không nhận ra chuỗi "09/06/2026" như một ngày — nó chỉ là text.

Cách sửa:

  • Chọn ô → Format → Number → Date để đổi định dạng
  • Dùng =DATEVALUE("09/06/2026") để chuyển text thành ngày
  • Hoặc nhân với 1: =A2*1 rồi định dạng lại thành ngày

DATEDIF Trả Về Số Âm Hoặc Lỗi

Nguyên nhân: Ngày đầu tiên lớn hơn ngày thứ hai. DATEDIF yêu cầu ngày_bắt_đầu ≤ ngày_kết_thúc.

Cách sửa: Dùng MINMAX để tự động sắp xếp:

=DATEDIF(MIN(A2,B2), MAX(A2,B2), "D")

TODAY() Không Cập Nhật Tự Động

Nguyên nhân: Cài đặt tính toán lại đang ở chế độ thủ công.

Cách sửa: Vào File → Settings → Calculation → chọn "On change and every minute". File sẽ tự cập nhật TODAY() theo thời gian thực.

NETWORKDAYS Đếm Cả Ngày Lễ

Nguyên nhân: Chưa truyền tham số ngày lễ vào hàm.

Cách sửa: Tạo sheet NgayLe với danh sách ngày lễ, rồi tham chiếu vào công thức: =NETWORKDAYS(A2,B2,NgayLe!A:A)

Ngày Hiển Thị Dạng Số (Ví Dụ: 46021)

Nguyên nhân: Ô chưa được định dạng kiểu ngày — đang hiển thị số nguyên bên dưới.

Cách sửa: Chọn ô → Format → Number → Date hoặc chọn định dạng ngày tùy chọn.

Kết Hợp Các Hàm: Công Thức Quản Lý Nhân Sự Hoàn Chỉnh

Đây là ví dụ thực tế kết hợp nhiều hàm ngày tháng trong một bảng quản lý nhân sự:

Cột A: Họ tên nhân viên
Cột B: Ngày vào làm
Cột C: Ngày sinh
Cột D: Loại hợp đồng (6 tháng / 12 tháng / vô thời hạn)

E2: Thâm niên      =DATEDIF(B2,TODAY(),"Y")&" năm "&DATEDIF(B2,TODAY(),"YM")&" tháng"
F2: Tuổi           =DATEDIF(C2,TODAY(),"Y")
G2: HĐ hết hạn    =IF(D2="vô thời hạn","Vĩnh viễn",TEXT(EDATE(B2,IF(D2="6 tháng",6,12)),"dd/mm/yyyy"))
H2: Trạng thái    =IF(D2="vô thời hạn","✅",IF(EDATE(B2,IF(D2="6 tháng",6,12))-TODAY()<=30,"⚠️ Gia hạn","✅"))

Kết Luận

Chín hàm và 10 ví dụ trong bài này bao phủ hầu hết mọi bài toán liên quan đến ngày tháng mà bạn gặp trong công việc thực tế. Điểm quan trọng cần nhớ:

  • TODAY() + phép trừ cho mọi bài toán "còn bao nhiêu ngày"
  • DATEDIF cho khoảng cách chính xác tính theo năm/tháng/ngày
  • NETWORKDAYS khi cần loại trừ cuối tuần và ngày lễ
  • EDATE + EOMONTH cho ngày hết hạn và đầu/cuối tháng
  • TEXT khi cần ghép ngày vào câu văn bản

Bước tiếp theo: chọn 1-2 ví dụ phù hợp nhất với công việc của bạn — quản lý hợp đồng, tính lương, theo dõi deadline — và thử áp dụng ngay vào bảng tính thực tế. Chỉ cần 15 phút thiết lập, bạn sẽ tiết kiệm hàng giờ tính toán thủ công mỗi tháng.

Xem thêm: Hàm IF trong Google Sheets | Hàm VLOOKUP và HLOOKUP

Chia sẻ bài viết:

Tuân Hoang

Tuân Hoang

Đội ngũ SheetStore

Google SheetsGoogle Apps ScriptCRMAutomationPhần mềm quản lý doanh nghiệp

Google Workspace Certified, 5+ years experience

Bạn thấy bài viết hữu ích?

Đăng ký nhận thông báo khi có bài viết mới.

Nhận thông báo khi có bài viết mới. Không spam, hứa luôn! 😊

Bình luận (0)

Vui lòng đăng nhập để tham gia thảo luận