Xóa dữ liệu không trùng trong bảng tính

Liên hệ QC

pt_hcl

Thành viên hoạt động
Tham gia
15/2/11
Bài viết
138
Được thích
2
Chào GPE! Mình có 1file dữ liệu mong GPE giúp đỡ! Mình cần xóa dữ liệu không trùng từ cột này so với 2 ô ở cột kế tiếp trong dòng 7 và 8! Mình có gửi kèm theo file minh họa cho một vài trường hợp! Cảm rất nhiều! Thân ái!
 

File đính kèm

  • Xoa_dulieu_khong_trung.xlsx
    46.9 KB · Đọc: 34
Lần chỉnh sửa cuối:
Chào ngày mới thắng lợi! Mình có sử dụng Filter để lọc và xóa dữ liệu không trùng ở từng cột nhưng với bảng dữ liệu hơn 10000cột và gần 500000 dòng thì đó quả là một thách thức, công việc tiến triển thật chậm! Mong GPE quan tâm giúp đỡ! Mình xin cảm ơn rất nhiều! Rất mong sớm nhận được tin vui! Thân ái!
p/s: Mình còn trường hợp này nữa nếu có thể các bạn giúp luôn mình với nhé!
 

File đính kèm

  • Xoa_dulieu_khong_trung_1.xlsx
    84.5 KB · Đọc: 13
Hix! Ngày nào cũng ngóng xem có ai giúp không mà càng thấy mù khơi! Không biết có phải trường hợp của mình khó quá hay sao mà không có bạn nào giúp đỡ? Buồn quá!
 
Hix! Ngày nào cũng ngóng xem có ai giúp không mà càng thấy mù khơi! Không biết có phải trường hợp của mình khó quá hay sao mà không có bạn nào giúp đỡ? Buồn quá!
Không hiểu thì làm sao mà giúp
Công nhận lần nào đọc yêu cầu của bạn mình cũng bị "tèo".....không hiểu
Hình như mình với bác Sa cũng làm cho bạn vài lần, mà lần nào cũng phải mò mẫn để....tự hiểu (Ủa, mà bác Sa đi đâu mấy hôm nay không thấy vậy cà ?)
Nói vui thôi chứ thật sự là ...không hiểu
Bạn giải thích lại đi, giải thích sao cho ngoài bạn ra những người muốn làm giúp bạn cũng phải hiểu
Cũng buồn quá
Híc
 
Không hiểu thì làm sao mà giúp
Công nhận lần nào đọc yêu cầu của bạn mình cũng bị "tèo".....không hiểu
Hình như mình với bác Sa cũng làm cho bạn vài lần, mà lần nào cũng phải mò mẫn để....tự hiểu (Ủa, mà bác Sa đi đâu mấy hôm nay không thấy vậy cà ?)
Nói vui thôi chứ thật sự là ...không hiểu
Bạn giải thích lại đi, giải thích sao cho ngoài bạn ra những người muốn làm giúp bạn cũng phải hiểu
Cũng buồn quá
Híc
Vâng! Bác nói mà như cởi được cả tấm lòng! Mình xin giải thích rõ hơn đối với file đầu tiên mình gửi:
- Xóa dữ liệu không trùng bắt đầu từ cột B như sau:
+ Những giá trị nào trong cột B nếu không trùng (hay khác) với C7 và C8 thì xóa
+ Những giá trị nào trong cột C nếu không trùng (hay khác) với D7 và D8 thì xóa
+ Những giá trị nào trong cột D nếu không trùng (hay khác) với E7 và E8 thì xóa
+ .v.v.. cứ như vậy cho đến hết!
- Hi vọng mình giải thích như vậy bạn sẽ hiểu! Cảm ơn bạn nhiều!
 
Bạn có thể viết code như sau:
Sub Macro1()
Dim i As Integer, j As Integer
For j = 2 To 239
For i = 4 To 20
If ActiveSheet.Cells(i, j) <> ActiveSheet.Cells(7, j + 1) And ActiveSheet.Cells(i, j) <> ActiveSheet.Cells(8, j + 1) Then
ActiveSheet.Cells(i, j).Value = ""
endif
Next i
Next j
End Sub
 

File đính kèm

  • Xoa_dulieu_khong_trung1.rar
    26.1 KB · Đọc: 15
Lần chỉnh sửa cuối:
Bạn có thể viết code như sau:
Sub Macro1()
Dim i As Integer, j As Integer
For j = 2 To 239
For i = 4 To 20
If ActiveSheet.Cells(i, j) <> ActiveSheet.Cells(7, j + 1) And ActiveSheet.Cells(i, j) <> ActiveSheet.Cells(8, j + 1) Then
ActiveSheet.Cells(i, j).Value = ""
endif
Next i
End Sub

Vâng! Cám ơn bạn nhiều quá! Rất đúng ý tưởng bạn ạ!
- Giống như vậy bạn có thể giúp mình trường hợp 2 được không ạ:
- Xóa dữ liệu không trùng bắt đầu từ cột B như sau:
+ Những giá trị nào trong cột B nếu không trùng (hay khác) với C4 thì xóa
+ Những giá trị nào trong cột C nếu không trùng (hay khác) với D4 thì xóa
+ Những giá trị nào trong cột D nếu không trùng (hay khác) với E4 thì xóa
+ .v.v.. cứ như vậy cho đến hết!
Một lần nữa xin cảm ơn bạn, chúc bạn một ngày mới thành công! Cảm ơn GPE!
 
Hix! Ngày nào cũng ngóng xem có ai giúp không mà càng thấy mù khơi! Không biết có phải trường hợp của mình khó quá hay sao mà không có bạn nào giúp đỡ? Buồn quá!
Trường hợp 1, đứng ở sheet1 chạy code này, kết quả đem sang sheet 3
Mã:
Public Sub XoaXoa78()
    Dim Vung, I As Long, J As Long, iCot As Long, iHang As Long, Mg()
    Vung = [a1].CurrentRegion.Value
    iCot = [xfd1].End(xlToLeft).Column
    ReDim Mg(1 To UBound(Vung), 1 To iCot - 1)
        For I = 2 To iCot
            For J = 4 To UBound(Vung)
                If Vung(J, I) = Cells(7, I + 1) Or Vung(J, I) = Cells(8, I + 1) Then
                    Mg(J - 3, I - 1) = Vung(J, I)
                End If
            Next J
        Next I
    Sheets("sheet3").[b4].Resize(UBound(Vung), iCot) = Mg
End Sub
Trường hợp 2, đứng ở sheet1 chạy code này, kết quả đem sang sheet 2
Mã:
Public Sub XoaXoa()
    Dim Vung, I As Long, J As Long, iCot As Long, iHang As Long, Mg(), Tg As Double
    Tg = Timer
        Vung = [a1].CurrentRegion.Value
        iCot = [xfd1].End(xlToLeft).Column
        ReDim Mg(1 To UBound(Vung), 1 To iCot - 1)
            For I = 2 To iCot
                For J = 4 To UBound(Vung)
                    If Vung(J, I) = Cells(4, I + 1) Then
                        Mg(J - 3, I - 1) = Vung(J, I)
                    End If
                Next J
            Next I
    Sheets("sheet2").[b4].Resize(UBound(Vung), iCot) = Mg
    MsgBox "Tg: " & Timer - Tg
End Sub
Với dữ liệu khủng của bạn ( 10.000 cột và 50.000 dòng) thì mình không dám thử, mới dám thử tới 239 cột và 15.000 dòng mà nó đã thịt của mình mất hơn 10 giây, mình không dám thử nữa. Nếu máy của bạn mà "xi ma chao" như máy mình là bạn cũng "tèo" luôn á
Thân
 
Trường hợp thứ 2 của bạn chỉ cần sửa code thành như thế này
PHP:
Sub Macro1()
Dim i As Integer, j As Integer
  For j = 2 To 239
    For i = 4 To 20
      If ActiveSheet.Cells(i, j) <> ActiveSheet.Cells(4, j + 1) Then
        ActiveSheet.Cells(i, j).Value = ""
      End If
    Next i
  Next j
End Sub
 

File đính kèm

  • Xoa_dulieu_khong_trung_1.xlsx
    84.3 KB · Đọc: 12
Trường hợp 1, đứng ở sheet1 chạy code này, kết quả đem sang sheet 3
Mã:
Public Sub XoaXoa78()
Dim Vung, I As Long, J As Long, iCot As Long, iHang As Long, Mg()
Vung = [a1].CurrentRegion.Value
iCot = [xfd1].End(xlToLeft).Column
ReDim Mg(1 To UBound(Vung), 1 To iCot - 1)
For I = 2 To iCot
For J = 4 To UBound(Vung)
If Vung(J, I) = Cells(7, I + 1) Or Vung(J, I) = Cells(8, I + 1) Then
Mg(J - 3, I - 1) = Vung(J, I)
End If
Next J
Next I
Sheets("sheet3").[b4].Resize(UBound(Vung), iCot) = Mg
End Sub
Trường hợp 2, đứng ở sheet1 chạy code này, kết quả đem sang sheet 2
Mã:
Public Sub XoaXoa()
Dim Vung, I As Long, J As Long, iCot As Long, iHang As Long, Mg(), Tg As Double
Tg = Timer
Vung = [a1].CurrentRegion.Value
iCot = [xfd1].End(xlToLeft).Column
ReDim Mg(1 To UBound(Vung), 1 To iCot - 1)
For I = 2 To iCot
For J = 4 To UBound(Vung)
If Vung(J, I) = Cells(4, I + 1) Then
Mg(J - 3, I - 1) = Vung(J, I)
End If
Next J
Next I
Sheets("sheet2").[b4].Resize(UBound(Vung), iCot) = Mg
MsgBox "Tg: " & Timer - Tg
End Sub
Với dữ liệu khủng của bạn ( 10.000 cột và 50.000 dòng) thì mình không dám thử, mới dám thử tới 239 cột và 15.000 dòng mà nó đã thịt của mình mất hơn 10 giây, mình không dám thử nữa. Nếu máy của bạn mà "xi ma chao" như máy mình là bạn cũng "tèo" luôn á
Thân
Hì! Cảm ơn bạn rất nhiều! Dù có "Tèo" thì mình cũng rất mãn nguyện rồi! Hi vọng mình sẽ bị "Tèo" như vậy thường xuyên!
-Một lần nữa xin cảm ơn bạn nhiều! Cảm ơn GPE!
 
Bạn Concogia ơi! Nếu mình muốn xóa dữ liệu khác ở với 1 số dòng nào đó chẳng hạn thì mình làm như thế nào ạ? ví dụ: Mình muốn xóa dữ liệu khác với dữ liệu có trong dòng thứ n, n+m, n+k, ... thì mình sẽ sửa code sao ạ?
Cảm ơn bạn rất nhiều! Thân ái!
 
Lần chỉnh sửa cuối:
Bạn Concogia ơi! Nếu mình muốn xóa dữ liệu khác ở với 1 số dòng nào đó chẳng hạn thì mình làm như thế nào ạ? ví dụ: Mình muốn xóa dữ liệu khác với dữ liệu có trong dòng thứ n, n+m, n+k, ... thì mình sẽ sửa code sao ạ?
Cảm ơn bạn rất nhiều! Thân ái!
For J = 4 To UBound(Vung)
If Vung(J, I) = Cells(7, I + 1) Or Vung(J, I) = Cells(8, I + 1) Then
Mg(J - 3, I - 1) = Vung(J, I)
End If
Next J

Chỗ chữ màu đỏ: hàng để so sánh, bạn thay bằng hàng bạn muốn so sánh, nếu nhiều hơn 2 điều kiện thì bạn thêm 1, hoặc 2...thằng OR nũa, nếu chỉ 1 điều kiện bạn xóa bớt một em OR đi
Thân
 
For J = 4 To UBound(Vung)
If Vung(J, I) = Cells(7, I + 1) Or Vung(J, I) = Cells(8, I + 1) Then
Mg(J - 3, I - 1) = Vung(J, I)
End If
Next J

Chỗ chữ màu đỏ: hàng để so sánh, bạn thay bằng hàng bạn muốn so sánh, nếu nhiều hơn 2 điều kiện thì bạn thêm 1, hoặc 2...thằng OR nũa, nếu chỉ 1 điều kiện bạn xóa bớt một em OR đi
Thân
Vâng! Cảm ơn bạn rất nhiều! Chúc ngày mới thắng lợi!
 
Web KT
Back
Top Bottom