Ghi Lại Thời Gian Nhập Liệu Trong Excel

Nếu bạn và các đòng nghiệp cùng làm việc trên 1 file Excel thì việc nội dung thường được chỉnh sửa nhiều lần trong các khoảng thời gian khác nhau. Nhưng làm thế nào để quản lý, kiểm soátthông tin về thời gian tạo, chỉnh sửa file gần nhất? Cách đơn giản làtạo code VBA tự động ghi nhận thời gian dữ liệu được nhập vào file Excel, từ đó thời gian nhập liệu của tất cả nội dungđều được ghi lại và hiển thị ngay trong Excel. Hãy cùng tiennghich.mobi tìm hiểu cách làm trong bài viết này nhé!

Biến Excel thành công cụ phân tích dữ liệu chuyên sâu.

Bạn đang xem: Ghi lại thời gian nhập liệu trong excel

Hướng dẫn cách viết code tự động ghi nhận thời gian nhập dữ liệu bằng VBA

Sử dụng hàm NOW trong Excel

Hàm NOW trong Excel có chức năng xác định thời điểm hiện tại, hàm NOW sẽ trả kết quả bao gồm cả ngày/tháng/năm và giờ/phút/giây theo thời gian thực. Cũng chính vì thế màbất kỳ khi nào Excel thực hiện tính toán thì kết quả hàm NOW sẽ tự động thay đổi. Tuy nhiên, nhiệm vụ của chúng ta là ghi nhận thời điểm kết thúc nhập dữ liệu vào Excel, như vậy kết quả đó không được thay đổi.

*

Để xem xét thời gian kết thúc nhập dữ liệu bằng hàm NOW trong Excel bạn làm theo các bước sau:

Bước 1: Viết hàm NOW với cú pháp: =NOW()Bước 2: Sao chép kết quả của hàmBước 3: Dán kết quả của hàm để hàm không tự động cập nhật.

Xem thêm:

*

2. Sự kiện cho WorksheetLà các sự kiện gắn liền đến 1 sheet trong file Excel (Worksheet trong Workbook), các đối tượng trong sự kiện Worksheet ít hơn trong Workbook, nó thường liên quan đến sự thay đổi trong tính toán, lựa chọn hay cập nhật dữ liệu trong sheet.

*

Tiếp tục với ví dụ của chúng ta: Nếu bạn thay đổi dữ liệu tại ô A3 thuộc Sheet1 thì bạn phải thực hiện gọi sự kiện Worksheet_Change tại Sheet1 và gắn câu lệnh hàm NOW vào như sau:

- Tại cửa sổ Project, nháy đúp chuột vào Worksheet cần tọa sự kiện (Sheet1)

- Chọn Worksheet, sau đó chọn sự kiện Change

- Từ đó Sub Worksheet_Change được tạo tự động

- Tiếp theo bạn nhập đoạn mã VBA sau:

*
Trong đó:

If Not Application.Intersect(Range(“A3”), Target) Is Nothing Then....End If

- Xét xem tại ô A3 có xảy ra thay đổi dữ liệu không

ActiveSheet.Range(“B3”).Value = Now

- Gán kết quả hàm NOW vào ô B3Bây giờ khi bạn nhập dữ liệu tại ô A3 trong Excel, kết quả sẽ tự động trả về ô B3.

Bước 3: Tối ưu phạm vi tác động của câu lệnh

Như vậy là bạn đã thực hiện thành công việcghi nhận thời gian nhập dữ liệu tự động bằng VBA trên 1 ô tính trong Excel. Bây giờ chúng ta hãy thử áp dụng câu lệnh với 1 vùng rộng hơn từ A2 đến A100 hay cả cột A nhé!

Đoạn mã VBA để kết quả hàm NOW được trả về cột B với tất cả các ô cột A tương ứng được nhập dữ liệu như sau:

If Not Application.Intersect(Range(“A2:A100”), Target) Is Nothing Then If Range(“A” & Target.Row).Value = “” Then Range(“B” & Target.Row).ClearContents Else Range(“B” & Target.Row).Value = Now End IfEnd If

Trong đó:

Intersect(Range(“A2:A100”), Target): Xét sự kiện diễn ra trong vùng A2:A100 (nếu muốn thay đổi vùng sự kiện bạn chỉ cần thay đổi tại Range("vùng sự kiện"))If Range(“A” & Target.Row).Value = “” Then: Nếu giá trị tại cột A ở dòng tác động rỗng thìRange(“B” & Target.Row).ClearContents: Xóa nội dung tại dòng tương ứng ở cột BElse: Mặt khácRange(“B” & Target.Row).Value = Now: Gắn kết quả hàm NOW tại dòng tương ứng tác động vào cột BEnd if: Kết thúc hàm if xét giá trị rỗngEnd if: Kết thúc hàm if xét vùng sự kiện

Kết quả: