Nhờ mọi người giúp em kiểm tra xóa các dòng giống nhau trong 1sheet

Liên hệ QC

hungbon7890

Thành viên mới
Tham gia
28/10/21
Bài viết
4
Được thích
0
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!

Capture.PNG
 

File đính kèm

  • nho giup do.xlsm
    38.8 KB · Đọc: 4
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
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
 
Upvote 0
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
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.
Khi chạy xong nó để lại dòng trống. Có cách nào xóa cả dòng đó đi k ạ
 
Lần chỉnh sửa cuối:
Upvote 0
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.
Khi chạy xong nó để lại dòng trống. Có cách nào xóa cả dòng đó đi k ạ
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
 
Upvote 0
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? . . . .
Thực ra bài toán của bạn có thể là vầy:
Nhập các giá trị vô các TextBox hay ComboBox; Kiểm các trị này đã có trên dòng nào hay chưa;
Nếu có thì xóa dòng tìm thấy;
Còn chưa có thì . . . . (nhập từ các control lên trang tính (?))
 
Upvote 0
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
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.
Nhưng bác ơi. Có thể xóa luôn. K để lại ô trống dc k bác.
 
Upvote 0
Web KT

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

Back
Top Bottom