Lọc dữ liệu trùng trong Excel

Liên hệ QC
Cách này của bạn hay quá. mình phải đăng nhập để cám ơn :D--=0--=0--=0--=0--=0
 
nếu bạn dùng Excel 2007 hoặc 2010 thì bạn vào thẻ data, mục Remove Duplicates.
nhớ chọn toàn bộ vùng của mã khách hàng đó. Nó sẽ xóa toàn bộ những mã trùng và chỉ giữ lại 1 giá trị
 
Mình cũng thắc mắc như bạn nhưng nếu mình chỉ muốn đánh dấu dòng trùng lần 2 mà không xóa đi thì làm thế nào ạ???
 
Mình cũng thắc mắc như bạn nhưng nếu mình chỉ muốn đánh dấu dòng trùng lần 2 mà không xóa đi thì làm thế nào ạ???

Đã trả lời trong chủ đề của bạn, dùng công thức sau bắt đầu từ ô B3 và kéo xuống đến hết trên dữ liệu của bạn:

=IF(COUNTIF($A$3:A3;A3)>1;"duplicate";"")
 
Xin chào các anh chị,

Kiến thức Excel của em còn hạn chế nên em muốn các anh chị giúp em vấn đề này:

Em có một bảng danh sách khách hàng đc tổng hợp theo số lần giao dịch tại cty. Cuối năm cty tặng lịch cho các khách hàng này. Nhưng trong bảng thì có nhiều dòng chứa dữ liệu khach hàng trùng nhau (Khách hàng giao dịch nhiều lần tại công ty).
Vì vậy em muốn lọc lại danh sách khách hàng theo mã số khách hàng thôi.

File ví dụ:

cty.jpg


Điều mình cần là xóa đi các dòng có mã khách hàng trùng và chỉ chừa lại 1 dòng thuộc mã khách hàng đó thôi.

Trường hợp trên: HA001 xuất hiện 3 lần, HB002 xuất hiện 2 lần

Bảng mình cần là bảng bên dưới. Đã xóa đi 2 HA001 và 1 HB002.

Bro nào biết chỉ mình với nha. Đang cần gấp.

Ví dụ nên chỉ có vài mã khách hàng. File thực tới vài ngàn

Code đây

Sub loc()
Range("B5:B26").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("d5"), Unique:=True
End Sub

Range("B5:B26") : vùng dử liệu cần lọc ( input )
Range("d5") : Vùng dử liệu ngõ ra ( output )
 
cầu cứu anh chị em diễn đàn. em phải lọc bệnh nhân tái khám trong file ( đính kèm) có nghĩa là bệnh nhân xuất hiện từ 2 lần trở lên. nhưng ngu quá không làm được. rất mong anh chị giúp. chân thành cảm ơn
 
cầu cứu anh chị em diễn đàn. em phải lọc bệnh nhân tái khám trong file ( đính kèm) có nghĩa là bệnh nhân xuất hiện từ 2 lần trở lên. nhưng ngu quá không làm được. rất mong anh chị giúp. chân thành cảm ơn

code đây

Sub loc()
Range("C1:C10000").Clear
Range("A1:A10000").AdvancedFilter 2, Range("B1:B2"), Range("C1")
End sub


C1:C10000 : ngõ ra sau khi lọc ( ouput )
A1:A10000 : dữ liệu cần lọc là cái tên bệnh nhân ( A1 là tiêu đề cột, A2:A10000 là tên benh nhan )
B1:B2 : là vùng điều kiện ( ô B1 ghi là "VDK", ô B2 copy công thức này dán vào =COUNTIF($A$2:$A$10000,A2)=2

LẦN SAU NHỚ ĐƯA FILE LÊN NHA, CHỨ BẠN BẮT NGƯỜI TA PHẢI TẠO FILE TRẢ LỜI CHO BẠN LUÔN HẢ


 
Thân chào ACE,

Nhờ ACE xem lại Kết quả lọc tìm dữ liêu trùng giúp.
Khi mình lọc bằng Công thức & dùng Pivot table thì cho 2 kết quả DS trùng khác nhau (122 Items và 129 Item).
Kiễm tra lại bằng cách đếm, cả 2 cách trên điều cho 2 kết quả khác nhau (955 và 994) và khác với cách đếm cơ bản từ Danh sách mã (= 901)

Mình không biết nên dùng theo Phương pháp nào? Phương pháp nào đúng nhất?

Cám ơn ACE!
 

File đính kèm

  • TrichLocDuLieuDuyNhat.xls
    142 KB · Đọc: 50
Thân chào ACE,

Nhờ ACE xem lại Kết quả lọc tìm dữ liêu trùng giúp.
Khi mình lọc bằng Công thức & dùng Pivot table thì cho 2 kết quả DS trùng khác nhau (122 Items và 129 Item).
Kiễm tra lại bằng cách đếm, cả 2 cách trên điều cho 2 kết quả khác nhau (955 và 994) và khác với cách đếm cơ bản từ Danh sách mã (= 901)

Mình không biết nên dùng theo Phương pháp nào? Phương pháp nào đúng nhất?

Cám ơn ACE!

Dung Pivot kết quả đúng.
Số tổng sai vì dùng hàm Coutif() mà trong dữ liệu điều kiện có dấu sao "*".
Kiểm tra bằng VBA xem nhé.
 

File đính kèm

  • TrichLocDuLieuDuyNhat.rar
    18.8 KB · Đọc: 66
Thân chào ACE,

Nhờ ACE xem lại Kết quả lọc tìm dữ liêu trùng giúp.
Khi mình lọc bằng Công thức & dùng Pivot table thì cho 2 kết quả DS trùng khác nhau (122 Items và 129 Item).
Kiễm tra lại bằng cách đếm, cả 2 cách trên điều cho 2 kết quả khác nhau (955 và 994) và khác với cách đếm cơ bản từ Danh sách mã (= 901)

Mình không biết nên dùng theo Phương pháp nào? Phương pháp nào đúng nhất?

Cám ơn ACE!
Dùng Pivotable là đúng vì kết quả cũng giống việc dùng Remove Duplicates. Mà khi tôi dùng Pivotable cũng chỉ đếm ra 901 dòng thôi.
Công thức đếm của bạn trong trường hợp này ko chính xác. Vì vậy đừng băn khoăn nhé
 

File đính kèm

  • TrichLocDuLieuDuyNhat.xls
    120 KB · Đọc: 33
Thưa các Thầy và các bạn,
Em có bài này không nghĩ ra, dùng hàm if thì chắc tét thở lun.
--
Em cần lọc dữ liệu hàng ngang bỏ đi những dữ liệu trùng. Tổng hợp các dữ liệu không trùng trong hàng ngăn cách bởi dấu "/"

Cảm ơn các Thầy và các bạn.
 

File đính kèm

  • GPE LOC TRUNG SO THEO HANG.xlsx
    10.6 KB · Đọc: 39
Thưa các Thầy và các bạn,
Em có bài này không nghĩ ra, dùng hàm if thì chắc tét thở lun.
--
Em cần lọc dữ liệu hàng ngang bỏ đi những dữ liệu trùng. Tổng hợp các dữ liệu không trùng trong hàng ngăn cách bởi dấu "/"

Cảm ơn các Thầy và các bạn.
Mã:
 Function DuyNhat(Rng As Range) As String
 Dim Dic As Object
 Dim Cll As Range
 Dim temp As String
 temp = ""
 Set Dic = CreateObject("Scripting.Dictionary")
 For Each Cll In Rng
    If Not Dic.exists(Cll.Value) And Not (IsNull(Cll)) Then
              Dic.Add Cll.Value, 1
              temp = temp & Cll.Value & "/"
     End If
  Next
  
     If (temp = "/") Then
         DuyNhat = ""
     Else
      DuyNhat = Left(temp, Len(temp) - 2)
     End If
 End Function
tạm thời sử dụng hàm tự tạo này xem sao? tôi chưa có bẫy lỗi kỹ nha
F2=Duynhat(A2:E2)
 
Mã:
 Function DuyNhat(Rng As Range) As String
 Dim Dic As Object
 Dim Cll As Range
 Dim temp As String
 temp = ""
 Set Dic = CreateObject("Scripting.Dictionary")
 For Each Cll In Rng
    If Not Dic.exists(Cll.Value) And Not (IsNull(Cll)) Then
              Dic.Add Cll.Value, 1
              temp = temp & Cll.Value & "/"
     End If
  Next
  
     If (temp = "/") Then
         DuyNhat = ""
     Else
      DuyNhat = Left(temp, Len(temp) - 2)
     End If
 End Function
tạm thời sử dụng hàm tự tạo này xem sao? tôi chưa có bẫy lỗi kỹ nha
F2=Duynhat(A2:E2)
Cảm ơn bạn, có cách nào dùng công thức trong excel không bạn, nói thật VBA mình chưa tìm hiểu kỉ, giống như là đi ngoài hàng rào nhìn vào nhà biệt thự VBA vậy
 
Bạn thử xem có đúng ý bạn ko nhé.

Thưa các Thầy và các bạn,
Em có bài này không nghĩ ra, dùng hàm if thì chắc tét thở lun.
--
Em cần lọc dữ liệu hàng ngang bỏ đi những dữ liệu trùng. Tổng hợp các dữ liệu không trùng trong hàng ngăn cách bởi dấu "/"



Cảm ơn các Thầy và các bạn.
 

File đính kèm

  • GPE LOC TRUNG SO THEO HANG (3).xlsx
    11.2 KB · Đọc: 39
Hướng giải dữ liệu trùng hàng ngang giờ ghép lại bằng công thức

Thưa các Thầy và các bạn,

Em đã lọc ra được dữ liệu trùng (bằng công thức), nhưng giờ không nghĩ ra đưa làm sao gộp các ô không trùng còn lại vào ô kết quả có dấu "/".

MONG CÁC THẦY VÀ CÁC BẠN HƯỚNG DẪN GIÚP
P/S: HÔM NAY ĐƯỢC NGHỈ LÀM NGỒI XEM HƯỚNG DẪN VBA TRÊN YOUTUBE VÀ TRÊN GPE. EM XIN BÁO CÁO CŨNG CHƯA HIỂU ĐƯỢC GÌ NHIÊU
 

File đính kèm

  • GPE LOC TRUNG SO THEO HANG.xlsx
    13.4 KB · Đọc: 22
Thưa các Thầy và các bạn,

Em đã lọc ra được dữ liệu trùng (bằng công thức), nhưng giờ không nghĩ ra đưa làm sao gộp các ô không trùng còn lại vào ô kết quả có dấu "/".

MONG CÁC THẦY VÀ CÁC BẠN HƯỚNG DẪN GIÚP
P/S: HÔM NAY ĐƯỢC NGHỈ LÀM NGỒI XEM HƯỚNG DẪN VBA TRÊN YOUTUBE VÀ TRÊN GPE. EM XIN BÁO CÁO CŨNG CHƯA HIỂU ĐƯỢC GÌ NHIÊU

Cá với bạn rằng: Nếu dùng công thức thì chẳng có cách nào để nối chuỗi theo điều kiện đâu!
Nối một vài chuỗi thì còn "ráng ráng" được chứ nối nhiều chuỗi thì... thua
Bạn có 2 lựa chọn:
- Dùng VBA
- Làm thủ công
Vậy đi nha
 
Cá với bạn rằng: Nếu dùng công thức thì chẳng có cách nào để nối chuỗi theo điều kiện đâu!
Nối một vài chuỗi thì còn "ráng ráng" được chứ nối nhiều chuỗi thì... thua
Bạn có 2 lựa chọn:
- Dùng VBA
- Làm thủ công
Vậy đi nha
CẢM ƠN THẦY ndu96081631, hàm tự tạo của bạn phihndhsp em chưa hiểu lắm, em chuyển vào Macro chèn đoạn giữa (em có bỏ đoạn Function ra rồi ạ) Sub và End Sub em thấy nó đứng im re, bí quá em mới lọc thêm bằng công thức lần nữa, tới đó lại bí tiếp, nên mới hỏi thêm.

Mong Thầy chỉ dạy thêm đoạn code VBA này ạ. Cảm ơn Thầy
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom