Xoá dữ liệu trùng ở các ô 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
Mong GPE giúp đỡ mình trường hợp này với: Dữ liệu ở sheet1: có nhiều số liệu trùng nhau (giống nhau). Mình cần xoá bớt đi những dữ liệu trùng nhau chỉ giữ lại 1 giữ liệu thì làm như thế nào ạ? Xin cảm ơn!
 

File đính kèm

  • XOA_DULIEU_TRUNG.xlsx
    17.7 KB · Đọc: 11
Mong GPE giúp đỡ mình trường hợp này với: Dữ liệu ở sheet1: có nhiều số liệu trùng nhau (giống nhau). Mình cần xoá bớt đi những dữ liệu trùng nhau chỉ giữ lại 1 giữ liệu thì làm như thế nào ạ? Xin cảm ơn!

Công thức hổng nghĩ ra... Bạn xem thử file đính kèm nhé!
 

File đính kèm

  • XOA_DULIEU_TRUNG.xlsb
    14.5 KB · Đọc: 13
1 khi bạn viết vầy:
KẾT QUẢ XOÁ
(XOÁ TỪ TRÊN XUỐNG DƯỚI, TỪ TRÁI QUA PHẢI)
thì con số 4 ở đáp án fải có tọa độ là (5,5) chứ không fải là (4,7) như bạn dẫn ra như vậy.
 
PHP:
Option Explicit
Sub TaoBangDuyNhat()
 Dim Arr(), Dict As Object
 Dim Dg As Long, Cot As Byte, J As Long, Col As Byte

 Arr() = Sheet1.UsedRange.Value
 ReDim dArr(1 To UBound(Arr()), 1 To UBound(Arr(), 2))
 Set Dict = CreateObject("Scripting.Dictionary")
 For Col = 1 To UBound(Arr(), 2)
    For Dg = 1 To UBound(Arr())
        If Not IsEmpty(Arr(Dg, Col)) And Not Dict.exists(Arr(Dg, Col)) Then
            J = J + 1:          Dict.Add Arr(Dg, Col), J
            dArr(Dg, Col) = Arr(Dg, Col)
        End If
    Next Dg
 Next Col
 Sheet2.Range(Sheet1.UsedRange(1).Address).Resize(UBound(Arr()), UBound(Arr(), 2)).Value = dArr()
End Sub
 
1 khi bạn viết vầy:

thì con số 4 ở đáp án fải có tọa độ là (5,5) chứ không fải là (4,7) như bạn dẫn ra như vậy.
Mình thấy
Xóa từ trên xuống:
Bắt đầu từ dòng 1 của bảng dữ liệu (dòng 4 trong bảng tính) chạy theo cột (từ trái sang phải) thằng nào xuất hiện đầu tiên thì giữ lại, thằng nào xuất hiện lần 2, 3...thì "thịt", tiếp tục xuống dòng và cũng chạy từ trái sang phải
Vậy kết quả (4, 7) là đúng
Nói vậy thôi chứ ....ăn thua chủ topic, muốn kiểu nào thì "chơi" kiểu đó
Híc
 
Ôi, cái ngôn ngữ Việt!
"Xóa từ trên xuống dưới" <> "Xóa từ hàng trên xuống hàng dưới"

Mà thực ra từ "xóa" không đồng nghĩa với "thịt" đâu Thầy!
Ở đây fải hiểu là:
"Gặp đầu tiên là để "nuôi"; Các cái sau như nó mới "thịt""
 
Ôi, cái ngôn ngữ Việt!
"Xóa từ trên xuống dưới" <> "Xóa từ hàng trên xuống hàng dưới"

Mà thực ra từ "xóa" không đồng nghĩa với "thịt" đâu Thầy!
Ở đây fải hiểu là:
"Gặp đầu tiên là để "nuôi"; Các cái sau như nó mới "thịt""
Hihi, thì em nói thằng nào xuất hiện đầu tiên thì giữ lại mà
Nói chung do diễn đạt câu cú thôi bác ạ, ngoài lề tý tẹo: ngâm "dụ" mới chưa (cái "dụ" hôm bữa Ba Tê lấy mang "dzìa" quê á), hôm nào cho em 2 xị nhậu Tết nhe bác, cám ơn trước
Híc
 
PHP:
Option Explicit
Sub TaoBangDuyNhat()
 Dim Arr(), Dict As Object
 Dim Dg As Long, Cot As Byte, J As Long, Col As Byte

 Arr() = Sheet1.UsedRange.Value
 ReDim dArr(1 To UBound(Arr()), 1 To UBound(Arr(), 2))
 Set Dict = CreateObject("Scripting.Dictionary")
 For Col = 1 To UBound(Arr(), 2)
    For Dg = 1 To UBound(Arr())
        If Not IsEmpty(Arr(Dg, Col)) And Not Dict.exists(Arr(Dg, Col)) Then
            J = J + 1:          Dict.Add Arr(Dg, Col), J
            dArr(Dg, Col) = Arr(Dg, Col)
        End If
    Next Dg
 Next Col
 Sheet2.Range(Sheet1.UsedRange(1).Address).Resize(UBound(Arr()), UBound(Arr(), 2)).Value = dArr()
End Sub
Rất chuẩn và chính xác ạ! Nếu sau khi xoá xong, xem xong kết quả rồi, muốn gom các dữ liệu kết quả đó về 1 cột hoặc 1 dòng hoặc gom về một vùng không có ô trống ngăn cách thì không biết có cách nào xử lí được không ạ? Mong sự giúp đỡ của bạn. Cảm ơn bạn nhiều!
P/S: Dạ, cái này mình làm được rồi ạ. Xin cảm ơn GPE!
 
Lần chỉnh sửa cuối:
Rất chuẩn và chính xác ạ! Nếu sau khi xoá xong, xem xong kết quả rồi, muốn gom các dữ liệu kết quả đó về 1 cột hoặc 1 dòng hoặc gom về một vùng không có ô trống ngăn cách thì không biết có cách nào xử lí được không ạ? Mong sự giúp đỡ của bạn. Cảm ơn bạn nhiều!
P/S: Dạ, cái này mình làm được rồi ạ. Xin cảm ơn GPE!
Bạn xem file đính kèm. Gồm cả 3 thể loại luôn (vùng, 1 dòng hay 1 cột)....
 

File đính kèm

  • Xoa trung_.xlsb
    21.5 KB · Đọc: 8
Nhờ Các bạn xem giúp hộ mình trường hợp này với ạ: Dữ liệu ở các cột trong sheet(DATE): lọc lấy các dữ liệu trùng có trong các cột -> kết quả dán sang sheet(KQ) . Mình gửi file minh hoạ. Xin cảm ơn!
 

File đính kèm

  • LOC_DULIEU_TRUNG.xlsx
    18.1 KB · Đọc: 9
PHP:
Option Explicit
Sub Trung03Cot()
 Dim Rws As Long, J As Long, W As Integer
 Dim Rg2 As Range, Rg3 As Range, Arr(), dArr(), Rg0 As Range, sRg1 As Range, sRg2 As Range
 
 Set Rg0 = Sheets("DATe").UsedRange
 Rws = Rg0.Rows.Count
 Arr() = Rg0(1).Resize(Rws).Value
 ReDim dArr(1 To Rws, 1 To 1)
 For J = 1 To UBound(Arr())
    Set Rg2 = Rg0(1).Offset(, 1).Resize(Rws)
    Set Rg3 = Rg0(1).Offset(, 2).Resize(Rws)
    Set sRg1 = Rg2.Find(Arr(J, 1), , xlFormulas, xlWhole)
    If Not sRg1 Is Nothing Then
        Set sRg2 = Rg3.Find(Arr(J, 1))
        If Not sRg2 Is Nothing Then
            W = W + 1:          dArr(W, 1) = Arr(J, 1)
        End If
    Else
    End If
 Next J
 Sheets("KQ").[B1].Resize(Rws).Value = dArr()
End Sub
 
PHP:
Option Explicit
Sub Trung03Cot()
 Dim Rws As Long, J As Long, W As Integer
 Dim Rg2 As Range, Rg3 As Range, Arr(), dArr(), Rg0 As Range, sRg1 As Range, sRg2 As Range
 
 Set Rg0 = Sheets("DATe").UsedRange
 Rws = Rg0.Rows.Count
 Arr() = Rg0(1).Resize(Rws).Value
 ReDim dArr(1 To Rws, 1 To 1)
 For J = 1 To UBound(Arr())
    Set Rg2 = Rg0(1).Offset(, 1).Resize(Rws)
    Set Rg3 = Rg0(1).Offset(, 2).Resize(Rws)
    Set sRg1 = Rg2.Find(Arr(J, 1), , xlFormulas, xlWhole)
    If Not sRg1 Is Nothing Then
        Set sRg2 = Rg3.Find(Arr(J, 1))
        If Not sRg2 Is Nothing Then
            W = W + 1:          dArr(W, 1) = Arr(J, 1)
        End If
    Else
    End If
 Next J
 Sheets("KQ").[B1].Resize(Rws).Value = dArr()
End Sub
Thầy ChanhTQ và GPE có thể xem trường hợp nếu trong sheet(DATE) có nhiều cột dữ liệu muốn lọc thì làm thế nào (trường hợp tổng quát cho n cột bất kì chẳng hạn). Xin cảm ơn!
 
Web KT

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

Back
Top Bottom