Ghi lại thời gian nhập dữ liệu (Microsoft Excel)
Vinay sử dụng bảng tính Excel để nhập liệu. Thông tin được nhập vào cột A và Vinay muốn có cách tự động thêm thời gian vào cột B, liền kề với giá trị đã nhập trong cột A, cho biết thời điểm nhập giá trị.
Có một số cách khác nhau để bạn có thể hoàn thành nhiệm vụ này. Đầu tiên là nhập thời gian theo cách thủ công bằng cách chọn ô liền kề trong cột B và nhấn Ctrl + Shift +; (đó là dấu chấm phẩy). Phím tắt này nhập thời gian hiện tại trong ô. Tất nhiên, vấn đề với cách tiếp cận này là nó không tự động và cần thêm một số chuyển động và tổ hợp phím để thực hiện.
Một cách tiếp cận tốt hơn sẽ là sử dụng một công thức để nhập thời gian. Hàm NOW trả về ngày và giờ hiện tại và bạn có thể sử dụng nó trong một ô theo cách sau:
=NOW()
Tất nhiên, công thức đơn giản này được cập nhật mỗi khi trang tính tính toán lại. Điều đó có nghĩa là hàm trả về thời gian hiện tại mỗi khi bạn nhập giá trị vào cột A. Điều này là không mong muốn vì bạn không muốn các lần trước cập nhật. Bạn có thể thử sử dụng một công thức để kiểm tra xem có thứ gì đó nằm trong cột A hay không, như sau:
=IF(A3="","",IF(B3="",NOW(),B3))
Vấn đề là một công thức như thế này đưa một tham chiếu vòng tròn vào trang tính, điều này đưa ra một loạt các thách thức để làm việc. Một cách tiếp cận tốt hơn là tạo macro tự động chạy mỗi khi nhập nội dung nào đó vào cột A. Nhấp chuột phải vào tab của trang tính được sử dụng để nhập dữ liệu và chọn Mã Chế độ xem từ trình đơn Ngữ cảnh. Bạn sẽ thấy cửa sổ Mã cho trang tính trong Trình soạn thảo Visual Basic, sau đó nhập cửa sổ này vào cửa sổ:
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rCell As Range Dim rChange As Range On Error GoTo ErrHandler Set rChange = Intersect(Target, Range("A:A")) If Not rChange Is Nothing Then Application.EnableEvents = False For Each rCell In rChange If rCell > "" Then With rCell.Offset(0, 1) .Value = Now .NumberFormat = "hh:mm:ss" End With Else rCell.Offset(0, 1).Clear End If Next End If ExitHandler: Set rCell = Nothing Set rChange = Nothing Application.EnableEvents = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
Với macro tại chỗ, bất cứ khi nào bạn nhập nội dung nào đó vào ô trong cột A, ô liền kề trong cột B sẽ chứa ngày và giờ (được định dạng để chỉ hiển thị thời gian). Nếu bạn xóa nội dung nào đó trong cột A, thì ô liền kề trong cột B cũng sẽ bị xóa.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (12811) áp dụng cho Microsoft Excel 2007, 2010 và 2013. Bạn có thể tìm phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: