hungbon7890
Thành viên mới
- Tham gia
- 28/10/21
- Bài viết
- 4
- Được thích
- 0
Thử code.Mong mọi người chỉ giúp đỡ em với ạ (file đính kèm bên dưới).
em có 1sheet mà khi thêm dòng vào nếu dòng đó trùng với các dòng ở trên thì có thể xóa luôn cả 2 dòng đi được k?
có cách nào để xóa tự động cả 2 dòng đó không?
em cảm ơn!
View attachment 271362
Sub xoa()
Dim i As Long, arr, kq, dic As Object, dk As String, lr As Long, a As Long
Set dic = CreateObject("scripting.dictionary")
With Sheets("KL mua")
lr = .Range("A" & Rows.Count).End(xlUp).Row
arr = .Range("A2:E" & lr).Value
For i = 1 To UBound(arr)
dk = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & arr(i, 4) & "#" & arr(i, 5)
If Not dic.exists(dk) Then
dic.Add dk, i
Else
a = dic.Item(dk)
arr(i, 1) = Empty: arr(i, 2) = Empty: arr(i, 3) = Empty: arr(i, 4) = Empty: arr(i, 5) = Empty
arr(a, 1) = Empty: arr(a, 2) = Empty: arr(a, 3) = Empty: arr(a, 4) = Empty: arr(a, 5) = Empty
dic.Item(dk) = i
End If
Next i
.Range("A2:E" & lr).Value = arr
End With
set dic=nothing
End Sub
em thử rồi đã chạy thành công. nhưng k chạy tự động được ạ. Mỗi lần chạy là phải click chuột.Thử code.
Mã:Sub xoa() Dim i As Long, arr, kq, dic As Object, dk As String, lr As Long, a As Long Set dic = CreateObject("scripting.dictionary") With Sheets("KL mua") lr = .Range("A" & Rows.Count).End(xlUp).Row arr = .Range("A2:E" & lr).Value For i = 1 To UBound(arr) dk = arr(i, 1) & "#" & arr(i, 2) & "#" & arr(i, 3) & "#" & arr(i, 4) & "#" & arr(i, 5) If Not dic.exists(dk) Then dic.Add dk, i Else a = dic.Item(dk) arr(i, 1) = Empty: arr(i, 2) = Empty: arr(i, 3) = Empty: arr(i, 4) = Empty: arr(i, 5) = Empty arr(a, 1) = Empty: arr(a, 2) = Empty: arr(a, 3) = Empty: arr(a, 4) = Empty: arr(a, 5) = Empty dic.Item(dk) = i End If Next i .Range("A2:E" & lr).Value = arr End With set dic=nothing End Sub
theo bạn tự động là dựa vào những yếu tố nào? ở đây mình so sánh rất nhiều cột, mà bạn nói tự động thì chọn cột này so sánh hay chọn hết? tạo sự kiện trong excel thông thường người ta chỉ cho 1 hoặc 2 đk để tạo sự thay đổi, còn nhiều quá thì ít ai sử dụng lắm, với lại khi sử dụng sự kiện phải gọi liên tục, mà gọi như vậy phiền phức nhiều thứ, tốt nhất là nên có sheet nhập và sau đó có sheet kết quả cần mong muốn thì tốt hơn, về mặt dữ liệu thì rõ ràng và rành mạchem thử rồi đã chạy thành công. nhưng k chạy tự động được ạ. Mỗi lần chạy là phải click chuột.
Khi chạy xong nó để lại dòng trống. Có cách nào xóa cả dòng đó đi k ạ
Thực ra bài toán của bạn có thể là vầy:Mong mọi người chỉ giúp đỡ em với ạ (file đính kèm bên dưới).
em có 1sheet mà khi thêm dòng vào nếu dòng đó trùng với các dòng ở trên thì có thể xóa luôn cả 2 dòng đi được k?
có cách nào để xóa tự động cả 2 dòng đó không? . . . .
Vâng. Nên e dựa vào công thức bác tạo. Tạo 1 link. Khi cần xóa là chỉ cần click chuột.theo bạn tự động là dựa vào những yếu tố nào? ở đây mình so sánh rất nhiều cột, mà bạn nói tự động thì chọn cột này so sánh hay chọn hết? tạo sự kiện trong excel thông thường người ta chỉ cho 1 hoặc 2 đk để tạo sự thay đổi, còn nhiều quá thì ít ai sử dụng lắm, với lại khi sử dụng sự kiện phải gọi liên tục, mà gọi như vậy phiền phức nhiều thứ, tốt nhất là nên có sheet nhập và sau đó có sheet kết quả cần mong muốn thì tốt hơn, về mặt dữ liệu thì rõ ràng và rành mạch