Tự động xóa dữ liệu trùng khi nhập

Liên hệ QC

Hoang Dac Cat

Thành viên mới
Tham gia
3/6/16
Bài viết
5
Được thích
0
Chào mọi người

Nhờ mọi người giúp đỡ mình cải tiến đoạn mã xóa dữ liệu trùng nếu trước đó đã có dữ liệu tại cột A.
Dữ liệu nhập bắt đầu từ ô A2 tại sheet 1
ô A1 sẽ nhận giá trị tại dòng cuối cùng của cột A
Đoạn mã của mình chưa tối ưu nên chạy hơi lâu
 

File đính kèm

Chào mọi người

Nhờ mọi người giúp đỡ mình cải tiến đoạn mã xóa dữ liệu trùng nếu trước đó đã có dữ liệu tại cột A.
Dữ liệu nhập bắt đầu từ ô A2 tại sheet 1
ô A1 sẽ nhận giá trị tại dòng cuối cùng của cột A
Đoạn mã của mình chưa tối ưu nên chạy hơi lâu
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim i, j, k, x
k = Target.Row
j = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To j
    If i <> k And Range("A" & i) = Target Then
        Target.ClearContents
        Exit For
    End If
Next i
x = Range("A" & Rows.Count).End(xlUp).Row
Range("A1") = Range("A" & x)
Application.EnableEvents = True
End Sub
 
Upvote 0
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim i, j, k, x
k = Target.Row
j = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To j
    If i <> k And Range("A" & i) = Target Then
        Target.ClearContents
        Exit For
    End If
Next i
x = Range("A" & Rows.Count).End(xlUp).Row
Range("A1") = Range("A" & x)
Application.EnableEvents = True
End Sub
Hình như không đúng với dụng ý của chủ thớt.

Giả sử A2 = 1, A3 = 2, A4 = 3 thì với code của chủ thớt thì sau khi sửa thành A3 = 3 thì A4 = rỗng. Khi sửa thành A3 = 1 thì A3 = rỗng.

Với code của bạn thì trong cả 2 trường hợp đều có A3 = rỗng.
 
Upvote 0
Hình như không đúng với dụng ý của chủ thớt.

Giả sử A2 = 1, A3 = 2, A4 = 3 thì với code của chủ thớt thì sau khi sửa thành A3 = 3 thì A4 = rỗng. Khi sửa thành A3 = 1 thì A3 = rỗng.

Với code của bạn thì trong cả 2 trường hợp đều có A3 = rỗng.
code của chủ thớt chạy không dừng nên không dám thử nhiều, gọi là chỉ viết theo đại ý yêu cầu thôi bác ạ.
 
Upvote 0
Cảm ơn CHAOQUAY đã hướng dẫn nhé. Về cơ bản đoạn mã bạn hướng dẫn cũng khá đúng với yêu cầu của mình. Tuy nhiên nếu copy 2 dòng và paste vào ô A2 trở xuống thì sẽ bị lỗi. Ngoài ra nhờ bạn chỉ thêm về câu lệnh Target.row có nghĩa gì với nhé
 
Upvote 0
Cảm ơn CHAOQUAY đã hướng dẫn nhé. Về cơ bản đoạn mã bạn hướng dẫn cũng khá đúng với yêu cầu của mình. Tuy nhiên nếu copy 2 dòng và paste vào ô A2 trở xuống thì sẽ bị lỗi. Ngoài ra nhờ bạn chỉ thêm về câu lệnh Target.row có nghĩa gì với nhé
Khai báo ByVal Target As Range -> target.row là chỉ số dòng của target.
Việc paster >1 ô trong sư kiện change thì bạn tìm hiểu thêm trên diễn đàn vậy nhé.
 
Upvote 0
Khai báo ByVal Target As Range -> target.row là chỉ số dòng của target.
Việc paster >1 ô trong sư kiện change thì bạn tìm hiểu thêm trên diễn đàn vậy nhé.

target.row bắt buộc phải viết trong sheet hay sao anh.
Em viết code trong module báo lỗi
 
Upvote 0
Web KT

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

Back
Top Bottom