Có thể bạn quan tâm: Auto Loans For Excellent Credit: Hướng Dẫn Chi Tiết Để Bạn Đạt Được Lãi Suất Tốt Nhất Và Điều Kiện Vay Ưu Đãi
Mở đầu
Trong môi trường làm việc hiện đại, việc quản lý dữ liệu trên Excel đã trở thành một phần không thể thiếu. Đặc biệt, khi bạn làm việc với các bảng tính có yêu cầu ghi lại thời gian, ngày tháng một cách tự động, việc “auto update date” (tự động cập nhật ngày) sẽ giúp tiết kiệm thời gian, giảm thiểu sai sót và nâng cao tính chuyên nghiệp. Bài viết này sẽ cung cấp cho bạn toàn bộ kiến thức cần thiết để tự động cập nhật ngày trong Excel, bao gồm:
- Các hàm cơ bản: TODAY, NOW, DATE, TEXT.
- Sử dụng VBA (Macro) để tự động cập nhật ngày.
- Áp dụng định dạng có điều kiện để hiển thị ngày cập nhật.
- Kỹ thuật “cập nhật ngày khi mở file”.
- Giải pháp cho các trường hợp đặc biệt: ngày tạo, ngày sửa, ngày nhập dữ liệu.
- Mẹo tối ưu hoá và tránh lỗi phổ biến.
Sau khi đọc xong, bạn sẽ có thể tự tin xây dựng các bảng tính tự động ghi lại ngày tháng một cách linh hoạt và hiệu quả.
Có thể bạn quan tâm: Auto Insert Row In Excel: Hướng Dẫn Chi Tiết Tự Động Thêm Dòng Trong Bảng Tính
1. Hiểu Rõ Các Hàm Ngày Tháng Cơ Bản Trong Excel
1.1. Hàm TODAY()
- Cú pháp:
=TODAY() - Mô tả: Trả về ngày hiện tại (không kèm thời gian) dựa trên đồng hồ hệ thống của máy tính.
- Đặc điểm:
- Khi bạn mở lại file, hàm này sẽ tự động cập nhật ngày mới.
- Không cần tham số, luôn trả về giá trị ngày hiện tại.
Ví dụ: Nếu hôm nay là 25/06/2026, công thức =TODAY() sẽ hiển thị 25/06/2026.
1.2. Hàm NOW()
- Cú pháp:
=NOW() - Mô tả: Trả về ngày và thời gian hiện tại (định dạng ngày giờ).
- Đặc điểm:
- Cập nhật mỗi khi workbook được tính toán lại (recalc).
- Thích hợp khi bạn cần biết thời gian chi tiết (giờ, phút, giây).
Ví dụ: =NOW() có thể trả về 25/06/2026 14:35.
1.3. Hàm DATE(year, month, day)
- Cú pháp:
=DATE(2026,6,25) - Mô tả: Tạo một giá trị ngày dựa trên các thành phần năm, tháng, ngày.
- Ứng dụng:
- Khi bạn muốn tạo ngày cố định trong công thức.
- Kết hợp với các hàm khác để tính toán ngày.
1.4. Hàm TEXT(value, format_text)
- Cú pháp:
=TEXT(TODAY(),"dd/mm/yyyy") - Mô tả: Chuyển đổi giá trị ngày thành chuỗi theo định dạng tùy chỉnh.
- Lưu ý: Khi cần hiển thị ngày dưới dạng văn bản (ví dụ: “Ngày 25 tháng 06 năm 2026”).
Có thể bạn quan tâm: Cách Tự Động Tăng Số Liệu Trong Excel: Hướng Dẫn Chi Tiết Và Thực Hành
2. Tự Động Cập Nhật Ngày Khi Nhập Dữ Liệu
2.1. Sử Dụng Tính Năng “Ctrl + ;” và “Ctrl + Shift + ;”
- Ctrl + ;: Chèn ngày hiện tại (tĩnh) vào ô.
- Ctrl + Shift + ;: Chèn thời gian hiện tại (tĩnh) vào ô.
Lưu ý: Đây là cách tĩnh, không tự động cập nhật khi mở lại file. Tuy nhiên, kết hợp với VBA có thể biến chúng thành động.
2.2. Dùng Công Thức Kết Hợp IF và TODAY
Giả sử bạn muốn ghi lại ngày khi một ô A2 được nhập dữ liệu (ví dụ: nhập “Xong”):
=IF(A2<>"", IF(B2="", TODAY(), B2), "")
- Giải thích:
- Nếu A2 không rỗng và B2 chưa có giá trị, sẽ ghi ngày hiện tại.
- Nếu B2 đã có giá trị (đã ghi ngày trước), giữ nguyên.
- Nếu A2 rỗng, B2 để trống.
Công thức này không cập nhật lại ngày khi mở file, vì ngày đã được “cố định” trong ô B2.
3. Sử Dụng VBA Để Tự Động Cập Nhật Ngày
3.1. Khi Mở Workbook (Workbook_Open)
Bạn muốn mỗi khi mở file, ô A1 luôn hiển thị ngày hiện tại.
Private Sub Workbook_Open() Worksheets("Sheet1").Range("A1").Value = Date
End Sub
- Giải thích:
Datetrả về ngày hiện tại, không kèm thời gian. - Lưu ý: Đặt macro này trong
ThisWorkbook(không phải Module).
3.2. Khi Thay Đổi Dữ Liệu (Worksheet_Change)
Cập nhật ngày tự động trong cột B khi người dùng nhập dữ liệu vào cột A.
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Set rng = Intersect(Target, Me.Range("A:A")) ' Kiểm tra cột A If Not rng Is Nothing Then Application.EnableEvents = False Dim cell As Range For Each cell In rng If cell.Value <> "" Then cell.Offset(0, 1).Value = Date ' Ghi ngày vào cột B Else cell.Offset(0, 1).ClearContents ' Xóa ngày nếu ô A trống End If Next cell Application.EnableEvents = True End If
End Sub
- Điểm quan trọng: Tắt
EnableEventsđể tránh vòng lặp vô hạn khi macro thay đổi ô.
3.3. Khi Lưu File (Workbook_BeforeSave)
Nếu bạn muốn lưu ngày “cập nhật lần cuối” trong ô C1:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Worksheets("Sheet1").Range("C1").Value = Now
End Sub
- Kết quả: Mỗi lần lưu, C1 sẽ hiển thị thời gian và ngày hiện tại.
3.4. Tạo Macro Đánh Dấu Thời Gian (Timestamp) Cho Nhiều Ô
Nếu bạn muốn mỗi khi người dùng thay đổi bất kỳ ô nào trong một vùng (ví dụ B2:B100), một ô tương ứng ở cột C sẽ nhận timestamp.
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Set rng = Intersect(Target, Me.Range("B2:B100")) If Not rng Is Nothing Then Application.EnableEvents = False Dim cell As Range For Each cell In rng cell.Offset(0, 1).Value = Now ' Ghi timestamp vào cột C Next cell Application.EnableEvents = True End If
End Sub
4. Định Dạng Có Điều Kiện (Conditional Formatting) Để Highlight Ngày
4.1. Highlight Ngày Hôm Nay
Bạn muốn các ô chứa ngày hôm nay được tô màu xanh.
- Chọn vùng cần áp dụng (ví dụ A2:A100).
- Vào Home → Conditional Formatting → New Rule → Use a formula.
- Nhập công thức:
=AND(A2<>"", A2=TODAY())
- Chọn định dạng (màu nền xanh, chữ trắng).
4.2. Highlight Ngày Cũ Hơn 30 Ngày

Có thể bạn quan tâm: Cách Tự Động Điều Chỉnh Kích Thước Ô Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
=A2< (TODAY()-30)
Áp dụng màu nền đỏ để cảnh báo dữ liệu đã cũ.
5. Các Trường Hợp Đặc Biệt
5.1. Ghi Ngày Tạo (Creation Date) Cho Mỗi Dòng
Excel không có “date created” cho từng dòng, nhưng bạn có thể dùng VBA:
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Set rng = Intersect(Target, Me.Range("A:A")) ' Cột A là cột nhập dữ liệu If Not rng Is Nothing Then Application.EnableEvents = False Dim cell As Range For Each cell In rng If cell.Value <> "" Then If cell.Offset(0, 4).Value = "" Then ' Giả sử cột E lưu ngày tạo cell.Offset(0, 4).Value = Date End If End If Next cell Application.EnableEvents = True End If
End Sub
- Cột E sẽ được ghi ngày tạo lần đầu khi người dùng nhập dữ liệu ở cột A. Nếu dữ liệu được sửa lại, ngày tạo không thay đổi.
5.2. Ghi Ngày Sửa (Last Modified Date) Cho Mỗi Dòng
Thay đổi một chút trong macro trên:
cell.Offset(0, 5).Value = Now ' Ghi vào cột F mỗi khi ô A thay đổi
Cột F sẽ luôn chứa thời gian sửa cuối cùng.
5.3. Ngày Tự Động Cập Nhật Khi Dòng Được Đánh Dấu Hoàn Thành
Giả sử cột D là “Trạng thái” (có giá trị “Hoàn thành” hoặc “Chưa”). Khi chuyển sang “Hoàn thành”, muốn ghi ngày hoàn thành vào cột G.
Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range Set rng = Intersect(Target, Me.Range("D:D")) If Not rng Is Nothing Then Application.EnableEvents = False Dim cell As Range For Each cell In rng If LCase(cell.Value) = "hoàn thành" Then cell.Offset(0, 3).Value = Date ' Ghi vào cột G Else cell.Offset(0, 3).ClearContents ' Xóa nếu không hoàn thành End If Next cell Application.EnableEvents = True End If
End Sub
6. Tối Ưu Hóa và Tránh Các Lỗi Phổ Biến
6.1. Vấn Đề “Circular Reference”
Khi sử dụng công thức để ghi ngày tự động (ví dụ trong cùng ô), Excel sẽ báo lỗi vòng lặp. Cách giải quyết:
- Không đặt công thức trong ô muốn ghi ngày.
- Dùng VBA để ghi giá trị trực tiếp (như các macro trên).
6.2. Đảm Bảo Định Dạng Ô
- Khi dùng
TODAY()hoặcNOW(), Excel mặc định định dạng là ngày/giờ. Nếu muốn hiển thị “dd/mm/yyyy”, chọn Format Cells → Number → Custom và nhậpdd/mm/yyyy. - Khi dùng VBA, bạn có thể định dạng ngay trong macro:
cell.Offset(0,1).NumberFormat = "dd/mm/yyyy"
6.3. Tốc Độ Tính Toán Khi Có Nhiều Macro
Nếu workbook có hàng ngàn dòng và macro được gọi trên mỗi thay đổi, tốc độ sẽ chậm. Giải pháp:
- Giới hạn vùng áp dụng (ví dụ
Range("A2:A1000")thay vì toàn cột). - Sử dụng Application.ScreenUpdating = False và Application.Calculation = xlCalculationManual trong thời gian chạy macro, sau đó bật lại.
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'... code ...
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
6.4. Bảo Mật Macro
- Khi chia sẻ file, người nhận cần bật macro (Enable Content). Nếu không, các tính năng tự động cập nhật ngày sẽ không hoạt động.
- Đặt mật khẩu cho VBA nếu muốn bảo vệ logic.
7. Các Kịch Bản Thực Tế Ứng Dụng
7.1. Theo Dõi Hợp Đồng
- Cột A: Mã hợp đồng.
- Cột B: Ngày ký (được nhập thủ công).
- Cột C: Ngày hết hạn (tự động tính:
=EDATE(B2,12)cho hợp đồng 12 tháng). - Cột D: Ngày nhắc nhở (30 ngày trước ngày hết hạn):
=C2-30. - Cột E: Ngày cập nhật cuối (macro
Workbook_BeforeSave).
Sử dụng Conditional Formatting để tô đỏ các hợp đồng sắp hết hạn.
7.2. Quản Lý Dự Án
- Cột A: Nhiệm vụ.
- Cột B: Người chịu trách nhiệm.
- Cột C: Trạng thái (Chưa bắt đầu, Đang thực hiện, Hoàn thành).
- Cột D: Ngày bắt đầu (được ghi khi trạng thái chuyển sang “Đang thực hiện”).
- Cột E: Ngày hoàn thành (được ghi khi trạng thái chuyển sang “Hoàn thành”).
Macro Worksheet_Change sẽ kiểm tra thay đổi ở cột C và tự động điền ngày tương ứng.
7.3. Bảng Theo Dõi Nhân Viên
- Cột A: Mã nhân viên.
- Cột B: Tên.
- Cột C: Ngày vào công ty (được nhập một lần).
- Cột D: Ngày làm việc cuối (tự động cập nhật mỗi khi có ghi chú công việc trong cột E).
Macro sẽ ghi Now vào cột D mỗi khi người dùng nhập nội dung vào cột E.
8. Tổng Kết
Việc tự động cập nhật ngày trong Excel không chỉ giúp giảm khối lượng công việc thủ công mà còn tăng độ chính xác và tính nhất quán của dữ liệu. Từ các hàm đơn giản như TODAY() và NOW() cho tới các giải pháp mạnh mẽ hơn bằng VBA, bạn có thể tùy chỉnh để đáp ứng hầu hết các nhu cầu thực tế:
- Hàm: Dễ dùng, tự động cập nhật khi mở lại file.
- Công thức IF + TODAY: Ghi ngày một lần khi dữ liệu được nhập.
- VBA:
Workbook_Openđể cập nhật ngày khi mở file.Worksheet_Changeđể ghi ngày khi dữ liệu thay đổi.Workbook_BeforeSaveđể lưu thời gian sửa cuối cùng.- Conditional Formatting: Highlight các ngày quan trọng, cảnh báo dữ liệu cũ.
- Kỹ thuật tối ưu: Giới hạn vùng, tắt ScreenUpdating, tránh vòng lặp.
Bằng cách áp dụng các kỹ thuật trên, bạn sẽ tạo ra các bảng tính thông minh, tự động ghi lại lịch sử ngày tháng, hỗ trợ quyết định nhanh chóng và chính xác hơn. Hãy thử ngay trong dự án của mình và cảm nhận sự khác biệt!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
