Lọc những dữ liệu trùng

Liên hệ QC

trantuonganh2008

Thành viên thường trực
Tham gia
8/11/08
Bài viết
305
Được thích
53
Mình có bảng dữ liệu từ D12:I25, nhờ các bạn giúp mình delete những dữ liệu nào trùng tại cột H (chỉ giữ lại một dòng dữ liệu thôi). Cám ơn nhiều!
 

File đính kèm

Lần chỉnh sửa cuối:
Mình có bảng dữ liệu từ D12:I25, nhờ các bạn giúp mình delete những dữ liệu nào trùng tại cột H (chỉ giữ lại một dòng dữ liệu thôi).
Cám ơn nhiều!
Bạn nghiên cứu dùng Advanced Filter thử xem ---> Cái vụ lọc duy nhất này dể mà ---> Đã nói rất nhiều lần trên diển đàn rồi
 
Tại cột nào đó (vd cột J) bạn nhập công thức =COUNTIF(H$12:H12;H12) Fill xuống sau đó dùng Autofilter lọc với điều kiện <> 1 và rút dòng trùng (các dòng >1).
 
Mình còn vấn đề này không biết phải giải quyết thế nào. Mình muốn những dòng nào trùng thì giữ lại một dòng thôi (với dk dữ liệu tại cột H giống nhau), ngoại trừ những dòng ở cột F - tức là mình muốn tính tổng số lượng tại cột F với điều kiện dữ liệu tại cột H giống nhau.
 
Lần chỉnh sửa cuối:
Mình còn vấn đề này không biết phải giải quyết thế nào. Mình muốn những dòng nào trùng thì giữ lại một dòng thôi (với dk dữ liệu tại cột H giống nhau), ngoại trừ những dòng ở cột F - tức là mình muốn tính tổng số lượng tại cột F với điều kiện dữ liệu tại cột H giống nhau.

Khi bạn lọc ra được mã không trùng được như vậy rồi .Dùng sumif để tính yêu cầu tiếp theo của bạn .
Hoặc dùng Consolidate để thực hiện hai yêu cầu trên .
 
Chắc phải dùng macro quá bạn ơi, vì nếu dùng SUMIF thì chỉ tính được tổng ở cột F thôi, mình muốn hiển thị những dòng ở cột khác nữa thì phải làm sao? Bạn xem file giúp mình nhé! Cám ơn nhiều!
 

File đính kèm

Lần chỉnh sửa cuối:
Ồ xin lỗi, mình xin đính chính là các số trong O12 và O13 lần lượt là 20 va 24.
 
Lần chỉnh sửa cuối:
Vẫn chỉ cần AdvancedFilter mà thôi.

Bạn làm theo mình 1 lần cuối nha:

(1) Nhập vô [I11] chữ 'I'; Copy vùng 'D11:I11' đến vùng bắt đầu là 'K21'
(2) Dùng chuột tô chọn vùng 'D11:I30'; Vô menu Data -> Filter -> AdvancedFilter . . .
(3) Tại CS AdvancedFilter, trên ngăn Action ta chọn dòng thứ 2;
Trong ngăn List range nếu chưa có $D$11:$I$25 thì ta nhập vô;
Trong ngăn Criteria range ta nhập ( hay bấm chuột vô ô ) $H$11;
Nhập $K$21:$P$21 vô dòng Copy to
Nhấn chọn vô nút radio Unique records only
Nhấn tiếp nút 'OK' để có kết quả.

Chúc thành công mĩ mãn!
 
Không được rồi HYen ơi, kết quả vẫn như cũ. Mình không thấy tính tổng tại cột F khi những dữ liệu bị trùng tại cột H. VD: mặt hàng A tại [E] có 4 số liệu giống nhau tại [H] là 1028087654, thì khi lọc ra tổng mặt hàng A phải là 20 chứ không phải là 5. Tiếp theo mặt hàng A tại E21, vì dữ liệu tương ứng bên H21 khác với dữ liệu phía trên nên không phải bỏ dòng có chứa mặt hàng A này. Tương tự như mặt hàng B, khi lọc ra thì tổng lượng tại [F] đối với mặt hàng B phải là 24 chứ không phải 6. Vì cột F là cột số lượng nên mình đánh trùng nhau các bạn hiểu lầm chứ thật ra nó không trùng nhau như thế, nên khi lọc buộc phải tính tổng số lượng khi và chỉ khi dữ liệu tại [H] trùng nhau.
 
Lần chỉnh sửa cuối:
À mình chưa hiểu hết vấn đề

Không được rồi HYen ơi, kết quả vẫn như cũ. Mình không thấy tính tổng tại cột F khi những dữ liệu bị trùng tại cột H.

Giờ bạn xài thử hàm mảng này vậy
PHP:
Option Explicit:           Option Base 1
Function AdvFilter(Rng As Range, Col As Byte)
 Dim Rws As Long, jJ As Long
 Dim Ma, Dem As Integer:               Dim Clls As Range, sRng As Range
 
 Rws = Rng.Rows.Count:                 ReDim MDL(Rws, Rng.Columns.Count)
 Set sRng = Rng.Cells(1, Col).Resize(Rws)
 Dem = 0
 For Each Clls In sRng
   With Clls
      If .Value <> Ma Then
         Dem = Dem + 1:                Ma = .Value
         MDL(Dem, 1) = .Offset(, -4).Value
         MDL(Dem, 2) = .Offset(, -3).Value
         MDL(Dem, 3) = .Offset(, -2).Value '+'
         MDL(Dem, 4) = .Offset(, -2).Value
         MDL(Dem, 5) = Ma:
         MDL(Dem, 6) = .Offset(, 1).Value
      Else
         MDL(Dem, 3) = MDL(Dem, 3) + .Offset(, -2).Value
      End If
   End With
 Next Clls:                              Dem = 1 + Dem
 For jJ = Dem To Rws
   MDL(jJ, 1) = "":                    MDL(jJ, 2) = ""
   MDL(jJ, 3) = "":                    MDL(jJ, 4) = ""
   MDL(jJ, 5) = "":                    MDL(jJ, 6) = ""
 Next jJ
 AdvFilter = MDL
End Function

Hướng dẫn sử dụng:

(1) Bạn kích hoạt 1 vùng tương ứng với vùng dữ liệu (ví du L13:Q24); tô màu nền nhạt cho vùng này;

(2) Bấm chuột lên thanh công thức, Nhập cú pháp hàm: =AdvFilter(D4:I17,5)
(Trong đó D4:I17 là vùng cần khảo sát; 5 là cột có dữ liệu trùng;)

Vì là hàm mảng, nên bạn phải kết thúc bằng tổ hợp 3 phím.

Chúc thành công & đừng giận nữa nha!
 
Cám ơn HYen nhiều, bạn khách sáo quá!!! Nhưng mình vẫn chưa làm được. Bạn xem file đính kèm giúp mình nhé! Chờ tin bạn
 

File đính kèm

Lần chỉnh sửa cuối:
Báo lỗi do excel không tìm thấy hàm tự tạo mà thôi!

Bạn khách sáo quá!!! Chờ tin bạn

Thay vì bỏ hàm tự tạo vô module1; bạn lại chép vô CS VBE của trang tính thì làm sao tìm ra;
Bỡi lẻ đó nó mới báo không thây tên (hàm) như vậy trong kho (?!)

Sau khi chép, bạn vô menu Insert -> Function . . . mà thấy tên hàm của ta trong đó mới được.
 
Lần chỉnh sửa cuối:
Mình làm được rồi, cám ơn bạn ChanhTQ@ nhiều, cám ơn bạn HYen nhiều!!! Thân.
 
Lần chỉnh sửa cuối:
Cho mình hỏi thêm. Muốn thoát ra khỏi công thức mảng thì làm thế nào? Nó cứ báo lỗi là "You cannot change part of an array". Thoát khỏi excel cũng không cho luôn.
 
Lần chỉnh sửa cuối:
Nếu bạn làm theo cách của tôi tại #5 thì thêm cột phụ - tiếp đó ghép cột E với cột H (vd A1028087654) - dùng Countif để đếm dữ liệu không trùng trong cột phụ để làm mã lọc - dùng Autofilter lọc với điều kiện là 1 (xem file đính kèm).
 

File đính kèm

Không phải vậy đâu anh Trung Chinh ơi, yêu cầu của mình không phải đơn thuần như vậy đâu mà còn có tính tổng ở [F] với điều kiện [H] có những dữ liệu trùng nữa. Nó cũng giống như Subtotal rồi lấy ra những dòng duy nhất vậy đó.
 
Lần chỉnh sửa cuối:
Không phải vậy đâu anh Trung Chinh ơi, yêu cầu của mình không phải đơn thuần như vậy đâu mà còn có tính tổng ở [F] với điều kiện [H] có những dữ liệu trùng nữa. Nó cũng giống như Subtotal rồi lấy ra những dòng duy nhất vậy đó.

Có phải bạn muốn thế này (file đính kèm) không ?
 

File đính kèm

Có phải bạn muốn thế này (file đính kèm) không ?
Em chưa hiểu anh làm bằng cách nào. Em gửi file chính lên anh xem nhé. Bạn HYen đã làm giúp code rồi, giờ chỉ còn trục trặc là Format ở cột P sao cho giống dòng đầu thôi. Anh có cách gì hay thì chỉ thêm nhé. Cám ơn HYen & anh TrungChinh Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom