Chào mọi người,
Dạo này mình làm báo cáo nhiều, cứ phải nhập đi nhập lại ngày tháng cho từng dòng nhập liệu, mà đôi khi lại quên hoặc nhập sai. Mình có tìm hiểu và thấy có cách rất hay để Excel tự động điền ngày tháng năm hiện tại vào ô khi mình bắt đầu nhập liệu cho dòng đó. Chia sẻ lại cho anh em nào cần nhé!
Cách này dùng VBA (Macros), đơn giản lắm.
- Bước 1: Mở file Excel của bạn.
- Bước 2: Nhấn
Alt + F11để mở cửa sổ VBA Editor. - Bước 3: Trong cửa sổ VBA Editor, tìm đến Sheet mà bạn muốn áp dụng (ví dụ: Sheet1). Click đúp vào đó.
- Bước 4: Dán đoạn code sau vào khung bên phải:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' Chọn cột bạn muốn áp dụng (ví dụ: cột A)
Set KeyCells = Intersect(Target.EntireRow.Cells, Me.Range("A:A"))
If Not KeyCells Is Nothing Then
' Chọn cột bạn muốn điền ngày vào (ví dụ: cột B)
On Error Resume Next
Target.Offset(0, 1).Value = Date
On Error GoTo 0
End If
End SubGiải thích code:
Worksheet_Change: Sự kiện này sẽ kích hoạt mỗi khi có sự thay đổi trên sheet.Target.EntireRow.Cells, Me.Range("A:A"): Mình đang đặt là khi bạn nhập liệu vào cột A (A:A), thì sự kiện sẽ được kích hoạt. Bạn có thể thay đổi"A:A"thành cột khác nếu muốn.Target.Offset(0, 1).Value = Date: Khi sự kiện kích hoạt ở cột A, nó sẽ điền ngày hiện tại (Date) vào ô ở cùng dòng nhưng cột kế tiếp (cột B, vìOffset(0, 1)là 0 dòng xuống, 1 cột sang phải). Bạn có thể thay đổi1thành số cột khác nếu muốn điền vào cột xa hơn.
Lưu ý:
- Sau khi dán code, bạn cần lưu file dưới dạng
.xlsm(Excel Macro-Enabled Workbook). - Nếu bạn muốn điền ngày vào chính cột bạn nhập liệu, thì thay
Target.Offset(0, 1).Value = DatethànhTarget.Value = Date(nhưng cẩn thận kẻo ghi đè dữ liệu cũ).
Hy vọng mẹo nhỏ này giúp ích cho mọi người. Ai có cách hay hơn hoặc gặp khó khăn gì thì cùng thảo luận nhé!