Xem lại thời gian sửa dữ liệu trên excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Gà Công Nghệ

Thành viên mới
Tham gia
11/8/15
Bài viết
775
Được thích
439
Xin chào Cô, chú, anh, chị trên diễn đàn. Cho em hỏi là có cách nào xem lại thời gian sửa dữ liệu trên excel không à (Ví dụ nếu sửa dữ liệu A4, C4, E4 thì ô A4, C4, E4 sẽ comment ghi lại nội dung sửa lại và thời gian sửa và cột Z4 sẽ ghi ngày giờ chỉnh sửa để biết dòng đó có sửa qua, các cột khác cũng tương tự nếu ô nào đang sửa thì sẽ comment chi tiết nội dung và thời gian sửa ô đó và cột Z nếu dòng nào đang sửa thì sẽ ghi chú thời gian sửa tại dòng đó).
 

File đính kèm

Nếu bạn chưa biết về VBA:

Đoạn mã VBA này có chức năng theo dõi thay đổi giá trị trong các ôlưu lịch sử thay đổi dưới dạng comment. Dưới đây là hướng dẫn từng bước:

1. Cách thêm mã vào Excel​

  1. Mở file Excel cần sử dụng
  2. Nhấn Alt + F11 để mở cửa sổ VBA Editor
  3. Trong cửa sổ Project Explorer (bên trái), tìm và nhấp đúp vào sheet bạn muốn áp dụng
  4. Dán toàn bộ đoạn mã vào cửa sổ code của sheet đó
  5. Nhấn Ctrl + S để lưu lại

2. Chức năng chính của mã​

  • Khi bạn thay đổi giá trị trong cột A, C hoặc E (từ dòng 5 trở đi)
  • Hệ thống sẽ:
    • Ghi lại giá trị cũ vào comment của ô
    • Ghi thời gian thay đổi vào cột Z
    • Giữ nguyên giá trị mới bạn nhập

3. Cách sử dụng​

  1. Nhập dữ liệu bình thường vào các cột A, C hoặc E (từ dòng 5 trở xuống)
  2. Khi bạn thay đổi giá trị của một ô:
    • Giá trị cũ sẽ được lưu vào comment của ô đó
    • Thời gian thay đổi được ghi vào cột Z cùng dòng
  3. Để xem lịch sử thay đổi:
    • Di chuột vào ô có comment (hình tam giác nhỏ màu đỏ ở góc ô)
    • Hoặc nhấn chuột phải vào ô và chọn "Show/Hide Comments"

4. Ví dụ minh họa​

Giả sử bạn có ô A5 với giá trị "100":

  1. Bạn thay đổi thành "150"
  2. Hệ thống sẽ:
    • Lưu "100" vào comment của ô A5
    • Ghi thời gian thay đổi vào ô Z5
    • Giữ giá trị "150" trong ô A5

5. Lưu ý quan trọng​

  1. Mã chỉ hoạt động khi bạn bật macro:
    • Khi mở file, chọn "Enable Content" hoặc "Enable Macros"
  2. Mã chỉ theo dõi các cột A, C, E từ dòng 5 trở xuống
  3. Nếu bạn xóa comment bằng tay, lịch sử sẽ bị mất
  4. Dữ liệu trong cột Z sẽ bị ghi đè mỗi lần thay đổi

6. Tùy chỉnh (nếu cần)​

  • Để thay đổi các cột theo dõi: sửa dòng If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 5 Then
  • Để thay đổi vị trí lưu thời gian: sửa Cells(Target.Row, "Z") thành cột khác
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&, oldV As String, newV As String
lr = Range("A5").End(xlDown).Row ' dong cuoi cung trong cot A
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 3 Then ' Xet thay doi trong cot A,C,E
    If Target.Row > 4 And Target.Row <= lr Then ' neu dong lon hon 5 va nho hon dong cuoi cung
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
            newV = Target.Value ' luu gia tri moi
            .Undo
            oldV = Target.Value ' luu gia tri cu
            Target.Value = newV ' phuc hoi gia tri moi
            .EnableEvents = True
            If oldV = newV Then Exit Sub ' neu khong co su thay doi thi thoat
            Cells(Target.Row, "Z").Value = Now ' luu thoi gian vao cot Z
            If Not Target.Comment Is Nothing Then Target.Comment.Delete ' Xoa comment cu
            Target.AddComment oldV ' add comment moi
            .ScreenUpdating = True
        End With
    End If
End If
End Sub
 

File đính kèm

Nếu bạn chưa biết về VBA:

Đoạn mã VBA này có chức năng theo dõi thay đổi giá trị trong các ôlưu lịch sử thay đổi dưới dạng comment. Dưới đây là hướng dẫn từng bước:

1. Cách thêm mã vào Excel​

  1. Mở file Excel cần sử dụng
  2. Nhấn Alt + F11 để mở cửa sổ VBA Editor
  3. Trong cửa sổ Project Explorer (bên trái), tìm và nhấp đúp vào sheet bạn muốn áp dụng
  4. Dán toàn bộ đoạn mã vào cửa sổ code của sheet đó
  5. Nhấn Ctrl + S để lưu lại

2. Chức năng chính của mã​

  • Khi bạn thay đổi giá trị trong cột A, C hoặc E (từ dòng 5 trở đi)
  • Hệ thống sẽ:
    • Ghi lại giá trị cũ vào comment của ô
    • Ghi thời gian thay đổi vào cột Z
    • Giữ nguyên giá trị mới bạn nhập

3. Cách sử dụng​

  1. Nhập dữ liệu bình thường vào các cột A, C hoặc E (từ dòng 5 trở xuống)
  2. Khi bạn thay đổi giá trị của một ô:
    • Giá trị cũ sẽ được lưu vào comment của ô đó
    • Thời gian thay đổi được ghi vào cột Z cùng dòng
  3. Để xem lịch sử thay đổi:
    • Di chuột vào ô có comment (hình tam giác nhỏ màu đỏ ở góc ô)
    • Hoặc nhấn chuột phải vào ô và chọn "Show/Hide Comments"

4. Ví dụ minh họa​

Giả sử bạn có ô A5 với giá trị "100":

  1. Bạn thay đổi thành "150"
  2. Hệ thống sẽ:
    • Lưu "100" vào comment của ô A5
    • Ghi thời gian thay đổi vào ô Z5
    • Giữ giá trị "150" trong ô A5

5. Lưu ý quan trọng​

  1. Mã chỉ hoạt động khi bạn bật macro:
    • Khi mở file, chọn "Enable Content" hoặc "Enable Macros"
  2. Mã chỉ theo dõi các cột A, C, E từ dòng 5 trở xuống
  3. Nếu bạn xóa comment bằng tay, lịch sử sẽ bị mất
  4. Dữ liệu trong cột Z sẽ bị ghi đè mỗi lần thay đổi

6. Tùy chỉnh (nếu cần)​

  • Để thay đổi các cột theo dõi: sửa dòng If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 5 Then
  • Để thay đổi vị trí lưu thời gian: sửa Cells(Target.Row, "Z") thành cột khác
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&, oldV As String, newV As String
lr = Range("A5").End(xlDown).Row ' dong cuoi cung trong cot A
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 Or Target.Column = 3 Or Target.Column = 3 Then ' Xet thay doi trong cot A,C,E
    If Target.Row > 4 And Target.Row <= lr Then ' neu dong lon hon 5 va nho hon dong cuoi cung
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
            newV = Target.Value ' luu gia tri moi
            .Undo
            oldV = Target.Value ' luu gia tri cu
            Target.Value = newV ' phuc hoi gia tri moi
            .EnableEvents = True
            If oldV = newV Then Exit Sub ' neu khong co su thay doi thi thoat
            Cells(Target.Row, "Z").Value = Now ' luu thoi gian vao cot Z
            If Not Target.Comment Is Nothing Then Target.Comment.Delete ' Xoa comment cu
            Target.AddComment oldV ' add comment moi
            .ScreenUpdating = True
        End With
    End If
End If
End Sub
Anh ơi cho em hỏi nếu muốn sửa từ cột A đến cột T (20 cột) thì sửa code như thế nào vậy anh. Hồi trưa em diễn đạt chưa rõ ý ví dụ có 3 cột.
 
Web KT

Bài viết mới nhất

Back
Top Bottom