Các câu hỏi về lọc ra danh sách duy nhất (loại bỏ dữ liệu trùng) (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hình như cái này ngược rồi! Phải như thế này mới được:
Mã:
 =if(Countif($B:$B,A1)>0,"",A1)
Mà làm sao làm được Countif(A1,$B$1:$B) nhỉ?
Sorry! Mình nhầm cú pháp. Hôm qua vào thấy câu hỏi đơn giản nên reply luôn không text trên Excel nên bị nhầm.
Thank!
 
Trong Excel2003, đề bài sẽ như sau:

Chắc cái này trong E2007 rồi, phải tránh thôi, vì mình chưa có xài qua!
Trong các cột 'C' & 'D' ta có khoảng 100.000 số khác nhau;
Và trên cột 'A' ta có 50.000 số khác nhau, mà ta biêt rằng 20.000 số trong cột 'A' trùng với các số trong cột 'C' hoặc 'D'

Hãy lập danh các số không trùng giữa 'A' với 'C' & 'D' tại 'F' & 'G'!
Xin mời các nhà 'Siêu Công Thức' ra tay tiếp!

Xin cảm ơn các bạn quan tâm!
Chúc sức khỏe!:-=)(&&@@--=--
 
Lọc bỏ dòng dữ liệu trùng

Tình hình là em có cái file này nhờ các cao nhân chỉ giáo hộ em.
Trong cái file mẫu này mấy cái dòng em đánh dấu màu giống nhau là những ô có dữ liệu trùng nhau.
Vấn đề đặt ra bây giờ là làm sao mà phát hiện và bỏ đi những dòng trùng để xử lý dữ liệu chính xác. Cơ sở dữ liệu của em nó khoảng hơn mấy trăm nghìn dòng nên không thể phát hiện vào xóa bằng tay được.
EM xin cảm ơn các bác
 

File đính kèm

Bạn chọn 1 cột trống nối tất cả các cột lại để kiểm tra (Chắc chắn số liệu trong từng cột hoàn toàn giống nhau.) Sau đó dùng hàm contif đếm giá trị trong từng ô nối, và lọc theo điều kiện số đếm >1.Trước khi lọc nên sort lại để dữ liệu trùng nằm kề nhau.
Có 1 cách nữa nhanh hơn, bạn chèn lên trên cùng 2-3 dòng. Chép dòng tiêu đề dán vào dòng 1 dòng 2 để trống.
Vào Advance filter chọn vùng lọc là vùng dữ liệu và vùng tiêu chuẩn là các ô tương ứng tại dòng 1 và 2, nhớ nháy vào unique record only. Như vậy ta đwợc dữ liệu duy nhất và chép ra chỗ khác là xong
 

File đính kèm

Lần chỉnh sửa cuối:
Một cách khác, để tham khảo

PHP:
Option Explicit
Sub XoaTrung()
 Dim lRow As Long, Ww As Long
 Dim dRng As Range
 Columns("A:A").Select:              Selection.Insert Shift:=xlToRight
 [A1] = "TT":                       lRow = Cells(Rows.Count, "B").End(xlUp).Row
 For Ww = 2 To lRow
   Cells(Ww, "A") = Ww - 1
 Next Ww
 Sort2Column [H2], [a2]
 For Ww = 3 To lRow
   With Cells(Ww, "H")
      If .Value = .Offset(-1) And .Offset(, 1) = .Offset(-1, 1) _
         And .Offset(, -5) = .Offset(-1, -5) Then
         If dRng Is Nothing Then
            Set dRng = .Offset()
         Else
            Set dRng = Union(dRng, .Offset())
         End If
      End If
   End With
 Next Ww
 'MsgBox dRng.Address'
 dRng.EntireRow.Select:                          Selection.Delete
 Sort2Column [a2], [H2]
    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
 
End Sub
Mã:
[B]Sub Sort2Column(Rng1 As Range, rng2 As Range)[/B]
    Columns("A:N").Select
    Selection.Sort Key1:=Rng1, Order1:=xlAscending, Key2:=rng2 _
        , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1
[B]End Sub[/B]
 
Mình bổ xung thêm cách lọc Advance Filter
 

File đính kèm

Ví dụ dữ liệu là vùng $A$1:$M$24. Lọc bằng Advance Filter với các mục chọn:
+ Copy to another location
+ List range: $A$1:$M$24
+ Criteria range: bỏ trống
+ Copy to: $O$1
+ Unique records only
Nó sẽ lọc các dòng dữ liệu không trùng sang ô O1.

Dùng VBA:
Mã:
Sub AdvancedFilter()
cc = Cells(1, 1).End(xlToRight).Column
rdt = Cells(1, 1).End(xlDown).Row
Set data = Range(Cells(1, 1), Cells(rdt, cc))
Range(Cells(1, cc + 2), Cells(Cells.Rows.Count, Cells.Columns.Count)).ClearContents
data.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(1, cc + 2), Unique:=True
rfl = Cells(1, cc + 2).End(xlDown).Row
Range(Cells(1, cc + 2), Cells(rdt, cc * 2 + 1)).Copy Cells(1, 1)
Range(Cells(1, cc + 2), Cells(rdt, cc * 2 + 1)).ClearContents
Set data = Nothing
End Sub
Nó tự động xác định vùng lọc, lọc, xóa dữ liệu cũ và thay bằng dữ liệu đã lọc
 
Sao không dùng Advanced Filter cho gọn nhỉ?
PHP:
Sub LocTrung()
  Dim Rng As Range
  [A1].CurrentRegion.Clear
  Set Rng = Sheet1.[A1].CurrentRegion
  Rng.AdvancedFilter Action:=2, CopyToRange:=[A1], Unique:=True
End Sub
 

File đính kèm

trích lọc không trùng nhau trong một cột , cứu cứu !
Các bác, anh chị, các cao thủ giúp em. Em có một cột (3635 row)chứa các số điện thoại nhưng trong đó có những số trùng nhaum vậy làm cách nào để trích ra các số "không trùng nhau, các số trùng nhau thì lấy 1 lần thôi !
xin giúp em ! thanks!
 
Vấn đề của bạn sẽ được giải quyết nhanh gọn bằng giải pháp Ađvance Filter

trích lọc không trùng nhau trong một cột , cứu cứu !
Các bác, anh chị, các cao thủ giúp em. Em có một cột (3635 row)chứa các số điện thoại nhưng trong đó có những số trùng nhaum vậy làm cách nào để trích ra các số "không trùng nhau, các số trùng nhau thì lấy 1 lần thôi !
xin giúp em ! thanks!
Bạn hãy đến đây:
http://www.google.com.vn/custom?hl=...um=0&ct=result&cd=1&q=advanced+Filter&spell=1
 
Bạn thử dùng cách này xem:
b1. Sắp xếp cột đó theo 1 thứ tự tăng hoặc giảm dần
b2. Dùng hàm if để so sánh xem dữ liệu hàng trên và hàng dưới nếu bằng nhau thì gán cho một giá trị
b3. Sắp xếp lại 2 cột đó theo cột vừa lấy giá trị của hàm if là ok
 
Ví dụ: giả sử bạn muốn lọc dữ liệu trùng trong cột C dữ liệu bạn muốn lọc trùng từ dòng số 3 (c3)
Bạn chọ 1 cột mà chưa hề có dữ liệu ( ví dụ cột F – tại vị trí F3), nhập vào đó công thức sau:
F3= if(countif($c$3:c3,c3)=1,max($c$2:c2)+1,””)
Sau đó kéo chuột xuống.
Kế đến, bạn sử dụng auto filter, bạn không chọn gì khác ngoài chọn non Blanks).
Chúc bạn thành công
 
Lần chỉnh sửa cuối:
trích lọc không trùng nhau trong một cột , cứu cứu !
Các bác, anh chị, các cao thủ giúp em. Em có một cột (3635 row)chứa các số điện thoại nhưng trong đó có những số trùng nhaum vậy làm cách nào để trích ra các số "không trùng nhau, các số trùng nhau thì lấy 1 lần thôi !
xin giúp em ! thanks!

BẠn vào link dười chữ ký của mình, sẽ có vài VD để bạn tham khảo
 
Ví dụ dữ liệu là vùng $A$1:$M$24. Lọc bằng Advance Filter với các mục chọn:
+ Copy to another location
+ List range: $A$1:$M$24
+ Criteria range: bỏ trống
+ Copy to: $O$1
+ Unique records only
Nó sẽ lọc các dòng dữ liệu không trùng sang ô O1.

Đúng là ngày nào mình cũng dùng Advance mà toàn lọc một hàng, cách của bạn hay thật. Cảm ơn bạn
 
Chào các bác,
Em không chuyên nhưng cũng xin đưa lời giải sau (theo đề bài của bác DungVC):
1. lấy ra số ở cột A khác với số ở cột B:
- tại ô C1 gõ lệnh =IF(COUNTIF($B$1:$B$5,A1),"",A1) Enter rồi kéo ...
tìm kiếm trong cột B và tham chiếu với ô A1, nếu trùng (giống) thì bỏ qua (chèn ký tự chống), ngược lại thì đưa ra ô A1.
2. lấy ra số ở cột B khác với số ở cột A:
- tại ô D1 gõ lệnh =IF(COUNTIF($A$1:$A$5,B1),"",B1) Enter rồi kéo ...
Chúc vui.
 
Hỏi về cách lọc dữ liệu trùng trong Exel?

Em có 1 file Exel, có 2 vùng dữ liệu V1 và V2 ban đâu giống nhau, nhưng sau đó vùng V2 hàng ngày có sự thay đổi giá trị. Vậy em phải dùng hàm gì để lọc và thấy được sự thay đổi này vậy? EM là thành viên mới, mong các bác chỉ giúp. Thanks.
 
Mình tham gia cách đơn giản nhất là:
Lựa 1 số cột mang tính chất đặc thù riêng của từng dòng, ví dụ như mã hàng, mã khách, số phiếu, ID... dùng hàm match hay Vlookup để tìm trong bảng tương ứng. Tất cả các dòng lỗi là thay đổi giữa hai bảng thể hiện biến động:
-Lỗi ở bảng cố định thì tại bảng biến động đã xóa mất dòng này hoặc sửa.
-Lỗi ở bảng biến động là thêm mới hoặc sưa.
Bạn thử xem sao nhé.
 
Lần chỉnh sửa cuối:
Bạn đặt ở cột v3 lệnh sau: =if(v1=v2,Trùng, không trùng) và copy cho toàn bộ các ô trong cột v3. Sau đó bạn dùng autofill để lọc ở cột v3 "trùng" thì sẽ biết được những dòng nào trong v1 và v2 trùng nhau.
 
Trích lọc dữ liệu từ file dữ liệu thô

Chào các bạn,

Mình có một vấn đề cần giúp đỡ. Có bạn nào biết cách rút trích dữ liệu từ file dữ liệu thô không? Mình có gửi file đính kèm và mong nhận được sự giúp đỡ của các bạn.
 

File đính kèm

Chào các bạn,

Mình có một vấn đề cần giúp đỡ. Có bạn nào biết cách rút trích dữ liệu từ file dữ liệu thô không? Mình có gửi file đính kèm và mong nhận được sự giúp đỡ của các bạn.
Bạn nên tách 2 cột thời gian IN và OUT. Tạm thời như thế này vì thời gian IN thường <12h và OUT>12h.
 

File đính kèm

Chào các bạn,

Mình có một vấn đề cần giúp đỡ. Có bạn nào biết cách rút trích dữ liệu từ file dữ liệu thô không? Mình có gửi file đính kèm và mong nhận được sự giúp đỡ của các bạn.

Bạn xem thử file đính kèm nha. Mình dùng một cột phụ ở sheet Data. Khi muốn thống kê dữ liệu thêm cho những ngày khác thì bạn copy 3 cột E, F, G qua và sửa ngày lại nhé.

P/S: Mình xin góp ý thêm là bạn nên lập Repost theo số phòng chứ không nên lập theo tên khách hàng như thế. Vì giả sử mỗi ngày mỗi phòng là một khách mới, mà bạn có vài chục phòng thì một tháng bạn phải theo dõi hàng trăm khách àh!!!
 

File đính kèm

Lần chỉnh sửa cuối:
Chào DOSNET,

Cám ơn bạn đã giúp đỡ nhưng cho mình hỏi thêm một câu nhé, nếu dữ liệu thô của mình có từ ngày 01-Nov-08 đến hết ngày 30-Nov-08, vậy công thức của bạn có cần phải chỉnh sửa gì nữa không? Nhờ bạn kiểm tra rồi sửa lại dùm mình nhé.

Cám ơn bạn DOSNET.
 

File đính kèm

- Dữ liệu mình làm sẵn cho bạn với 1000 dòng chờ bên dữ liệu thô, muốn thêm ngày bạn chỉ cần copy 3 cột C,D và E chẳng hạn cho các ngày tiếp theo.
Bạn dùng bài này với công thức mảng, ngắn gọn và chính xác hơn trong trường hợp IN và OUT bất kỳ. Thân !
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn bạn DOSNET và HuuThang_BD.

Bạn DOSNET cho mình hỏi, nếu mình muốn sử dụng đến dòng thứ 65536 cho Date, Name và Time thì mình sửa ở đâu.

Cám ơn bạn DOSNET.
 
Tôi thấy cách bố trí dử liệu như ở sheet Data mới là chuẩn chứ (chỉ cần sửa lại như DOSNET nói: Chia IN/OUT ra làm 2 cột)
Khi ấy muốn truy xuất bất kỳ Tên nào, ngày nào, giờ nào cũng là việc rất dể dàng (dùng Advanced Filter)... chứ ai lại bố trí dử liệu theo kiểu sheet Report chứ... Nếu theo dỏi khoảng thời gian 90 ngày thì.. bó tay à?
 
Cám ơn bạn DOSNET và HuuThang_BD.

Bạn DOSNET cho mình hỏi, nếu mình muốn sử dụng đến dòng thứ 65536 cho Date, Name và Time thì mình sửa ở đâu.

Cám ơn bạn DOSNET.
Bạn sửa lại name là Ok, vào Insert\name\define và sửa lại vùng dữ liệu. Tuy nhiên mình tán thành cách làm đơn giản như a Ndu, dùng công cụ có sẵn của Excel là Avanced Filter cho đơn giản ! Hơn nữa bạn sẽ gặp rắc rối khi số lượng ngày phải theo dõi quá lớn (không đủ số cột).

date=Data!$B$5:$B$65000
name=Data!$G$5:$G$65000
time=Data!$C$5:$C$65000
 
Tôi thấy cách bố trí dử liệu như ở sheet Data mới là chuẩn chứ (chỉ cần sửa lại như DOSNET nói: Chia IN/OUT ra làm 2 cột)
Khi ấy muốn truy xuất bất kỳ Tên nào, ngày nào, giờ nào cũng là việc rất dể dàng (dùng Advanced Filter)... chứ ai lại bố trí dử liệu theo kiểu sheet Report chứ... Nếu theo dỏi khoảng thời gian 90 ngày thì.. bó tay à?

Bạn xem thử file đính kèm nha. Mình dùng một cột phụ ở sheet Data. Khi muốn thống kê dữ liệu thêm cho những ngày khác thì bạn copy 3 cột E, F, G qua và sửa ngày lại nhé.

P/S: Mình xin góp ý thêm là bạn nên lập Repost theo số phòng chứ không nên lập theo tên khách hàng như thế. Vì giả sử mỗi ngày mỗi phòng là một khách mới, mà bạn có vài chục phòng thì một tháng bạn phải theo dõi hàng trăm khách àh!!!

Xem lại nhé. Đọc kỹ rồi hãy cho ý kiến.
 
Xem lại nhé. Đọc kỹ rồi hãy cho ý kiến.

Mỗi người một ý kiến đóng góp, có sao đâu bạn !

P/S: Mình xin góp ý thêm là bạn nên lập Repost theo số phòng chứ không nên lập theo tên khách hàng như thế. Vì giả sử mỗi ngày mỗi phòng là một khách mới, mà bạn có vài chục phòng thì một tháng bạn phải theo dõi hàng trăm khách àh!!!

Theo mình thì cậu nhầm thì đúng hơn, vì đây không phải là file quản lý phòng của khách sạn. Nếu không nhầm đây là dữ liệu được lấy từ máy quẹt thẻ của công nhân khi vào ca SX !
 
Chào bạn HuuThang_BD và bạn DOSNET,

Bạn DOSNET nói đúng, đây là dữ liệu của máy quẹt thẻ nên làm theo cách của DOSNET đã hướng dẫn thì ổn mà vì dữ liệu cần làm trong tháng thôi. Có cách hơi bất tiện là dữ liệu nhiều thì cách làm này hơi chậm vì nó phải update lại toàn bộ nội dung mới.

Cám ơn sự giúp đỡ của bạn HuuThang_BD va DOSNET.
 
Chào các bạn,

Mình có một vấn đề cần giúp đỡ. Có bạn nào biết cách rút trích dữ liệu từ file dữ liệu thô không? Mình có gửi file đính kèm và mong nhận được sự giúp đỡ của các bạn.
Góp thêm với các bạn 1 cách sử dụng Pivot để lọc danh sách sau đó dùng công thức Index,sumif,match để tính toán cho nhẹ File.Đảm bảo với dữ liệu lớn không bị ì ạch.
Trong Sheet Data dữ liệu ở đây là chuẩn,trong trường hợp nếu có ai đó quên không quét thẻ khi đến làm việc hoặc khi về,lúc đó sẽ có lỗi,bạn thử xóa 1 dữ liệu In hoặc Out và quan sát lại bên Sheet Report sẽ hiểu rõ,khi đó cần khải kiểm tra lại dữ liệu Thô của bạn xuất ra.
 

File đính kèm

Em có 1 file Exel, có 2 vùng dữ liệu V1 và V2 ban đâu giống nhau, nhưng sau đó vùng V2 hàng ngày có sự thay đổi giá trị. Vậy em phải dùng hàm gì để lọc và thấy được sự thay đổi này vậy? EM là thành viên mới, mong các bác chỉ giúp. Thanks.
Bạn Anhtuan 3a thân !
Bạn có thể sử dụng hàm if ở cột V3 như sau : if(v1=v2,"trùng",v1-v2), sau đó bạn chọn vùng v3 vào Data\fiter lọc bỏ số liệu trùng sẽ thấy giá trị của số liệu thay đổi .
 
Bạn Anhtuan 3a thân !
Bạn có thể sử dụng hàm if ở cột V3 như sau : if(v1=v2,"trùng",v1-v2), sau đó bạn chọn vùng v3 vào Data\fiter lọc bỏ số liệu trùng sẽ thấy giá trị của số liệu thay đổi .

Cẩn thận hơn bạn có thể sử dụng format condition để thấy rõ sự thay đổi trong giá trị bị trùng.
 
1. Giả sử ô A2:A40000 có chứa dữ liệu cần tìm trùng nhau:
2. Ô B2 gõ vào:
Mã:
=If(Countif([B][COLOR=Blue]$A$2[/COLOR][/B]:A2,A2)>1,"Trung","")

Lưu ý chỗ in đậm màu xanh, cố định ô đầu tiên
3. Copy công thức xuống tới ô B40000
4. Autofilter (Alt+D, F, F) hoặc Menu/Data/Filter/AutoFilter
5. Lọc điều kiện cột B="Trung"
6. Chiếu sáng vùng vừa lọc ra (trừ dòng đầu tiên A1:B1 ra nhé, đây là dòng tiêu đề), dùng phím tắt Ctrl+Shift+Down, Ctrl+Shift+Right
7. Ấn Ctrl+"-", chọn Entire Row.

Bạn ơi, nếu cũng áp dụng cách này nhưng là với 2 cột thì sao?
Ví dụ mình để ở trong file kèm đó.
Cảm ơn các bạn nhiều nhiều nhé.
 

File đính kèm

Bạn ơi, nếu cũng áp dụng cách này nhưng là với 2 cột thì sao?
Ví dụ mình để ở trong file kèm đó.
Cảm ơn các bạn nhiều nhiều nhé.

Điều này không thể. Bởi vì :

Nếu ô nào đó trong cột thứ nhất trùng và ô cùng dòng trong cột thứ 2 không trùng thì ta xem cả dòng này là trùng hay không trùng đây? Vừa trùng vừa không trùng làm sao xóa cả dòng được.
 
Em có file như sau:
A
B
C
D
A
D

Em muốn lọc ra, những giá trị nào có mặt thì lấy ra nên kết quả chỉ là
A
B
C
D
Cho dù nó lặp lại bao nhiêu lần nữa thì cũng lấy giá trị đại diện có mặt là được.


Thank you mấy huynh.
 

File đính kèm

Lần chỉnh sửa cuối:
Vấn đề này đã có rất nhiều trên GPE. Bạn chị khó search là thấy ngay thôi!

Một cách đơn giản nhất là dùng Advance Filter! Với Unique record only!
 
Em có file như sau:
A
B
C
D
A
D

Em muốn lọc ra, những giá trị nào có mặt thì lấy ra nên kết quả chỉ là
A
B
C
D
Cho dù nó lặp lại bao nhiêu lần nữa thì cũng lấy giá trị đại diện có mặt là được.


Thank you mấy huynh.

Anh ca_dafi hướng dẩn bạn cách đó rất hay và nhanh.
giới thiệu bạn phương pháp dùng công thức có nhiều trên diển đàn nè
 

File đính kèm

Đối với những bảng tính ví dụ như theo dõi nhập xuất hàng hóa hàng ngày. Bạn muốn có được bảng tổng hợp, bạn nên dùng cột phụ với cách đánh số thứ tự cho mỗi mã hàng và trên bảng tổng hợp bạn chỉ dò tìm theo số dòng là có thể lấy ra được mã hàng duy nhất bằng cách tự động mà không phải lọc. Bạn xem thêm bài trả lời về hàm sumproduct cho bạn camchuongden hôm nay,
 
Em thấy trong file co stt, ds, là gì vậy anh. Em gà cái này lắm--=0
 
Lần chỉnh sửa cuối:
Lọc dữ liệu, lấy ra giá trị chưa có

Chào
Mình có thắc mấc muốn hỏi các huynh và các Tỷ
Mình đính kèm file danh sách chấm điểm.xls
trong sheet tính điểm mình đã có danh sách mã khách hàng (cột D-mã khách hàng là số-VD: 123456) đã được chấm điểm trong các ngày 30/06/07, 31/12/07 , 30/06/08, 30/09/08.
Trong các sheet còn lại có một số khách hàng chưa được tính điểm
tôi muốn lọc ra trong các sheet 30/06/07, 31/12/07 , 30/06/08, 30/09/08-các ngày đó có mã khách hàng nào chưa được tính điểm thì làm như thế nào(mã khách hàng nào đã có trong cột D của sheet "tính điểm" thì không lấy) .}}}}}
mong các huynh giúp đỡ!! (giá trị được lọc ra có thể nằm ở đâu cũng được,có thể là sheet mới)
Regards
Macarong
P/S : mình cần gấp lắm,ai có lời giải mình sẽ gặp nhau uống cà fê cho zui

hàm Vlookup dùng ở đây được không?
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Chào
Mình có thắc mấc muốn hỏi các huynh và các Tỷ
Mình đính kèm file danh sách chấm điểm.xls
trong sheet tính điểm mình đã có danh sách mã khách hàng (cột D-mã khách hàng là số-VD: 123456) đã được chấm điểm trong các ngày 30/06/07, 31/12/07 , 30/06/08, 30/09/08.
Trong các sheet còn lại có một số khách hàng chưa được tính điểm
tôi muốn lọc ra trong các sheet 30/06/07, 31/12/07 , 30/06/08, 30/09/08-các ngày đó có mã khách hàng nào chưa được tính điểm thì làm như thế nào(mã khách hàng nào đã có trong cột D của sheet "tính điểm" thì không lấy) .}}}}}
mong các huynh giúp đỡ!! (giá trị được lọc ra có thể nằm ở đâu cũng được,có thể là sheet mới)
Regards
Macarong
P/S : mình cần gấp lắm,ai có lời giải mình sẽ gặp nhau uống cà fê cho zui

Theo tôi, bác nên copy tất cả danh sách khách hàng vào một sheet, viêc lọc sẽ đơn giản hơn. Bác xem thử file Dosnet làm cho bác (Không biết có được cafe ko đây }}}}})
 

File đính kèm

Cám ơn Dosnet, vẫn chưa được, ví dụ vẫn chưa lọc ra ngày 30/06/07 có khách hàng nào chưa chấm điểm.
mục đích là tìm trong các sheet ngày đó có ai chưa được có trong sheet "tinh diem" ,mỗi sheet sẽ có 1 danh sách tương ứng(danh sách các KH chưa có trong'tinh diem")
 
Lần chỉnh sửa cuối:
vậy không giá trị nào đã trùng thì không muốn xất hiện thì dùng như thế nào?
vi du A B C A D F E A C F ,muốn lọc ra chỉ có B D E thì làm sao?
 
Mục đích là tìm trong các sheet ngày đó có ai chưa được có trong sheet "tinh diem" ,mỗi sheet sẽ có 1 danh sách tương ứng(danh sách các KH chưa có trong'tinh diem")

Chúng ta phải tìm theo mã khách hàng (MKH) từ các sheets tương ứng; nhưng MKH bên [Tinh Diem] chỉ là các số 6 chữ số; còn các sheets còn lại có MKH đến > 7 ký số; Tìm sao đây bạn?!
 
Cám ơn Dosnet, vẫn chưa được, ví dụ vẫn chưa lọc ra ngày 30/06/07 có khách hàng nào chưa chấm điểm.
mục đích là tìm trong các sheet ngày đó có ai chưa được có trong sheet "tinh diem" ,mỗi sheet sẽ có 1 danh sách tương ứng(danh sách các KH chưa có trong'tinh diem")
Thực ra Dosnet đã gộp 3 sheet vào một sheet LOC cho bác rồi, nếu thích làm riêng từng sheet thì đơn giản thôi.
- Ngoài việc phát hiện ra mã khách hàng (lúc thì 4,5,6 số) như bác ChanhTQ@ nói, Dosnet nhận thấy trong các sheet yêu cầu chấm điểm có rất nhiều mã trùng nhau, hầu hết là trùng từ 2 đến 3 lần trong một danh sách.
- Nếu đơn giản chỉ là việc phát hiện ra khách hàng nào chưa được tính điểm, ta nên dùng Conditinonal Formating để đánh dấu
- Bác giải thích việc không thống nhất và trùng quá nhiều mã khách hàng trong danh sách, Dosnet sẽ làm giúp bác, lọc cũng được mà đánh dấu cũng được. Thân !
 
Bạn thử xài macro sau:

vậy không giá trị nào đã trùng thì không muốn xuất hiện thì dùng như thế nào?
vi du A B C A D F E A C F ,muốn lọc ra chỉ có B D E thì làm sao?

PHP:
Option Explicit
Sub OnlyOne()
 Dim eRw As Long, Ff As Long:               Dim myAdd As String
 Dim Rng As Range, sRng As Range
 eRw = [A65500].End(xlUp).Row:            ReDim DaCo(2 To eRw) As Boolean
 For Ff = 2 To eRw
    Set Rng = Range("A" & Ff + 1 & ":A" & eRw)
    If Not DaCo(Ff) Then
        Set sRng = Rng.Find(what:=Cells(Ff, "A"), LookIn:=xlFormulas, lookat:=xlWhole)
        If Not sRng Is Nothing Then
            myAdd = sRng.Address
            If DaCo(sRng.Row) = False Then
                Do
                    DaCo(sRng.Row) = True
                    Set sRng = Rng.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> myAdd
            End If
        Else
            [c65500].End(xlUp).Offset(1) = Cells(Ff, "A").Value
    End If:         End If
 Next Ff
End Sub
 
PHP:
Option Explicit
Sub OnlyOne()
 Dim eRw As Long, Ff As Long:               Dim myAdd As String
 Dim Rng As Range, sRng As Range
 eRw = [A65500].End(xlUp).Row:            ReDim DaCo(2 To eRw) As Boolean
 For Ff = 2 To eRw
    Set Rng = Range("A" & Ff + 1 & ":A" & eRw)
    If Not DaCo(Ff) Then
        Set sRng = Rng.Find(what:=Cells(Ff, "A"), LookIn:=xlFormulas, lookat:=xlWhole)
        If Not sRng Is Nothing Then
            myAdd = sRng.Address
            If DaCo(sRng.Row) = False Then
                Do
                    DaCo(sRng.Row) = True
                    Set sRng = Rng.FindNext(sRng)
                Loop While Not sRng Is Nothing And sRng.Address <> myAdd
            End If
        Else
            [c65500].End(xlUp).Offset(1) = Cells(Ff, "A").Value
    End If:         End If
 Next Ff
End Sub
Còn em thì khoái dùng COUNTIF trong trường hợp này hơn:
PHP:
Sub OnlyOne()
  Dim Clls As Range
  With Range([A2], [A65536].End(xlUp))
    For Each Clls In .SpecialCells(2, 23)
      If WorksheetFunction.CountIf(.Cells, Clls) = 1 Then
        [C65536].End(xlUp).Offset(1) = Clls
      End If
    Next
  End With
End Sub
 
From http://scriptorium.serve-it.nl/categories.php?eid=1&cid=11

1. Sử dụng Collection:

Mã:
Sub FilterUniqueNumbers()
    Dim rngYourrange As Range
    Dim rngCell As Range
    Dim colUniqueNumbers As New Collection
    Dim i As Integer

    ' Set the range that you want to filter for unique numbers
    Set rngYourrange = Worksheets(1).Range("A1:A10")

    ' Store the unique range values in the collection object. Note we use the
    ' range value converted to a string as the key value.
    On Error Resume Next
    For Each rngCell In rngYourrange
        colUniqueNumbers.Add rngCell.Value, CStr(rngCell.Value)
    Next rngCell

    ' Write each item from the collection object to column B in worksheet 1.
    For i = 1 To colUniqueNumbers.Count
        Worksheets(1).Cells(i, 2).Value = colUniqueNumbers(i)
    Next i
End Sub

2. Dùng AdvancedFilter:

Mã:
Sub FilterUniqueNumbers2()
    Dim rngDuplicates As Range
    Dim rngDestination As Range
    Dim rngCriteria As Range
    
    ' Filter entire column A, or use Range("A1:A10") or something to check only 10 rows.
    Set rngDuplicates = ThisWorkbook.Worksheets(1).Range("A:A")


    Set rngDestination = ThisWorkbook.Worksheets(1).Range("B1")
    Set rngCriteria = ThisWorkbook.Worksheets(1).Range("C1:C5")

    rngDuplicates.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rngCriteria, _
            CopyToRange:=rngDestination, Unique:=True
End Sub

3. Dùng scripting.dictionary:

Mã:
Sub FilterUniqueNumbers3()
    Dim vValue As Variant, vVals As Variant
    Dim myRange As Range
    Dim i As Long
    Dim dArr() As Double
    Dim oDic As Object
    
    Set myRange = Worksheets(1).Range("A1:A10")

    'The Dictionary object is always present in Windows so it can always be created
    Set oDic = CreateObject("scripting.dictionary")
    oDic.comparemode = vbTextCompare

    'Read the values from a range into vVals
    vVals = myRange.Value

    'ReDim dArr and make it two dimensional by adding the second argument 1 To 1
    'otherwise you can't dump it in a worksheet later.
    ReDim dArr(UBound(vVals) - 1, 1 To 1)
    
    For Each vValue In vVals
        'Note the use of the Dictionary object to exclude double values
        If Not IsEmpty(vValue) And Not oDic.exists(vValue) Then
            dArr(i, 1) = vValue
            oDic.Add vValue, Nothing
            i = i + 1
        End If
    Next vValue

    'Free memory by removing the Dictionary object and vVals from memory
    Set oDic = Nothing
    Erase vVals

    'Remove old data
    myRange.Clear

    'Dump dArr values in worksheet
    myRange.Resize(i).Value = dArr
End Sub

4. Viết Class module:

Mã:
Sub ExtractItems()

    Dim clsExtract As CUniqueItems
    Dim rngSel As Range, rngTar As Range
   
    Set clsExtract = New CUniqueItems
    Set rngSel = Selection
    Set rngTar = ThisWorkbook.Sheets("Sheet2").Range("A1")
   
    clsExtract.TheSelection = rngSel
    clsExtract.Target = rngTar
    clsExtract.ExtractUniques
   
End Sub

Option Explicit

' Class constants
Private Const msTAB As String = vbTab

' Class variables
Private mrSelection As Range
Private mrTarget As Range

' Class Properties
'   Selection
Property Get TheSelection() As Range
    Set TheSelection = mrSelection
End Property
Property Let TheSelection(rng As Range)
    Set mrSelection = rng
End Property

'   Target
Property Get Target() As Range
    Set targert = mrTarget
End Property
Property Let Target(rng As Range)
    ' The target can only be one cell, so if more than
    ' one cell is chosen, set the range to the
    ' upper leftmost cell.
    If rng.Count&gt; 1 Then
        Set mrTarget = rng.Cells(1, 1)
    Else
        Set mrTarget = rng
    End If
End Property

' Class methods

Sub ExtractUniques()
   
    ' Variable declarations
    Dim rngCell As Range
    Dim col As Collection
    Dim iColCnt As Integer, i As Integer
    Dim vValue As Variant
   
    ' Create a new collection.
    Set col = New Collection
   
    ' Get the number of columns in the range
    iColCnt = mrSelection.Columns.Count
    ' If the column count is greater than 1, resize it to 1 column.
    If iColCnt&gt; 1 Then Set mrSelection = mrSelection.Resize(, 1)
   
    ' Turn off updating.
    Application.ScreenUpdating = False

    ' Add each unique item to the collection.
    For Each rngCell In mrSelection.Cells
        vValue = ""
        ' If the column count is great than one, add the whole
        ' row of data in teh selected range. We'll split it out
        ' later.
        If iColCnt&gt; 1 Then
            For i = 0 To iColCnt - 1
                ' Add all the data from the selected rows to the variable,
                ' separating them by a tab.
                vValue = vValue &amp; rngCell.Offset(0, i).Value &amp; msTAB
            Next i
        Else
            vValue = rngCell.Value
        End If
        ' Temporarily turn off error handling.
        On Error Resume Next
        ' Add to the collection.
        col.Add CStr(vValue), CStr(vValue)
        ' Turn error handling back on.
        On Error GoTo 0
    Next rngCell
   
    ' Write the data back out to the target.
    i = 1
    For i = 1 To col.Count
        mrTarget.Offset(i - 1, 0).Value = col(i)
    Next i
   
    ' If the selection column count is greater than 1,
    ' then convert the output text to multiple columns
    ' using text to columns.
    If iColCnt&gt; 1 Then
        mrTarget.Parent.Activate
        mrTarget.Select
        Range(Selection, Selection.Offset(col.Count - 1, 0)).Select
        Selection.TextToColumns Destination:=Range(Selection.Address), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False
    End If
   
    ' Turn on updating and kill the collection object.
    Application.ScreenUpdating = True
    Set col = Nothing
       
End Sub

5. Sử dụng Array:

Mã:
Sub enkel()
  Dim sq As Variant
  Dim j As Long
 
  If Selection.Columns.Count = 1 Then
    sq = Application.WorksheetFunction.Transpose(Selection.SpecialCells(xlCellTypeConstants))
    For j = 1 To UBound(sq)
      sq=split(replace("|" &amp; join(sq,"|") &amp; "|","|" &amp; sq(j) &amp; "|","") &amp; "|" &amp; sq(j),"|")
    Next
    Sheets(1).[K1].Resize(UBound(sq) + 1) = Application.WorksheetFunction.Transpose(sq)
  End If
End Sub

Lê Văn Duyệt
 
Ko biết đã có ai làm cuộc thí nghiệm xem thử trong tất cả các phương pháp lọc duy nhất thì phương pháp nào là nhanh nhất ko?
(cho đến hiện nay tôi chỉ biết Advanced Filter xem chừng là .. cực mạnh, ko biết còn món nào khác hơn nó ko nhỉ?)
 
To AnhTuan1066

Còn em thì khoái dùng COUNTIF trong trường hợp này hơn:
PHP:
Sub OnlyOne()
  Dim Clls As Range
  With Range([A2], [A65536].End(xlUp))
    For Each Clls In .SpecialCells(2, 23)
      If WorksheetFunction.CountIf(.Cells, Clls) = 1 Then
        [C65536].End(xlUp).Offset(1) = Clls
      End If
    Next
  End With
End Sub
Bình thường thì code của bạn nhanh gấp đôi của mình! Một khi rất ít ký tự trong cột trùng nhau
Nhưng trong trường hợp rất nhiều các ký tự lặp lại nhiều lần, thì code của mình với FINDNEXT & biến loại trừ tỏ ra nước rút gấp 7 lần của bạn kia đó!
 
Trích lọc danh sách duy nhất cho Validaton

Em có vấn đề này từ lâu muốn hỏi +-+-+-+.
Có cách nào đưa một danh sách duy nhất vào validation không các anh ?
Không dùng cột phụ & ko VBA .
em có kẻm File ví dụ ,nhưng đang dùng cột phụ .
File này em tìm trong loạt bài viết của anh Ndu;;;;;;;;;;; hi hi
Em cám ơn.
 

File đính kèm

Em có vấn đề này từ lâu muốn hỏi +-+-+-+.
Có cách nào đưa một danh sách duy nhất vào validation không các anh ?
Không dùng cột phụ & ko VBA .
em có kẻm File ví dụ ,nhưng đang dùng cột phụ .
File này em tìm trong loạt bài viết của anh Ndu;;;;;;;;;;; hi hi
Em cám ơn.
Có thể trả lời bạn ngay là KHÔNG CÓ CÁCH
Validation chỉ chấp nhận List là 1 VÙNG CÓ THẬT trên bảng tính ---> Không chấp nhận Range do công thức "chế tác" ra
---> Tuy nhiên cái file của bạn có thể chỉnh lại còn 1 cột phụ thì được
 

File đính kèm

Lần chỉnh sửa cuối:
Theo ý của bạn ko dùng cột phụ là sao?(có phải cột chứa dữ liệu, từ cột đó bạn đặt tên cho nó, sau đó cột đó được dùng để lấy nội dung của nó hiện trong list các giá trị mà bạn lấy trong cell mà bạn muốn validation hả?)
Nếu như vậy thì rất khó. vì phải có một nguồn nào đó bạn mới lấy được list chứ, nếu ko dùng list chỉ dùng để nhập các điều kiện logic (vd< 5 chẳng hạn)
 
Em có vấn đề này từ lâu muốn hỏi +-+-+-+.
Có cách nào đưa một danh sách duy nhất vào validation không các anh ?
Không dùng cột phụ & ko VBA .
em có kẻm File ví dụ ,nhưng đang dùng cột phụ .
File này em tìm trong loạt bài viết của anh Ndu;;;;;;;;;;; hi hi
Em cám ơn.

Xem có vừa ý không? (1 cột phụ)
 

File đính kèm

Lần chỉnh sửa cuối:
Theo ý của bạn ko dùng cột phụ là sao?(có phải cột chứa dữ liệu, từ cột đó bạn đặt tên cho nó, sau đó cột đó được dùng để lấy nội dung của nó hiện trong list các giá trị mà bạn lấy trong cell mà bạn muốn validation hả?)
Nếu như vậy thì rất khó. vì phải có một nguồn nào đó bạn mới lấy được list chứ, nếu ko dùng list chỉ dùng để nhập các điều kiện logic (vd< 5 chẳng hạn)

Dùng cột phụ thì mình nghỉ ra ,củng sử dụng cách trích lọc duy nhất rồi đưa vào list .
Mình nghỉ tại mình làm ko được thôi ,chứ với các Pro thì sẽ làm được hi hi
Cám ơn bạn nhe .
 
Mình làm thế này không cần dùng cột phụ, tuy nhiên phai nhập thủ công. Với danh sách dài như của bạn cũng khá vất vả đấy. Chỉ đơn giản là trong mục source nhập dự liệu đầu vào các dữ liệu ngăn cách nhau bởi dấu ,
 
Lần chỉnh sửa cuối:
Mình làm thế này không cần dùng cột phụ, tuy nhiên phai nhập thủ công. Với danh sách dài như của bạn cũng khá vất vả đấy. Chỉ đơn giản là trong mục source nhập dự liệu đầu vào các dữ liệu ngăn cách nhau bởi dấu ,
Cách này không được, vì nếu nhập trực tiếp, Excel chỉ cho phép nhập với số lượng ký tự có hạn mà thôi
 
Mình làm thế này không cần dùng cột phụ, tuy nhiên phai nhập thủ công. Với danh sách dài như của bạn cũng khá vất vả đấy. Chỉ đơn giản là trong mục source nhập dự liệu đầu vào các dữ liệu ngăn cách nhau bởi dấu ,

Cái này thì nói chi ,nếu dử liệu nhiều quá thì củng bó tay .Mình hỏi coi có cách nào tối ưu hơn ko thôi ,Cái này dùng cột phụ như các anh ndu,anh boyxin là ok rồi .
 
Cái này thì nói chi ,nếu dử liệu nhiều quá thì củng bó tay .Mình hỏi coi có cách nào tối ưu hơn ko thôi ,Cái này dùng cột phụ như các anh ndu,anh boyxin là ok rồi .
Khẳng định với bạn rằng: Cho đến thời điểm hiện nay, với Office hiện nay là KHÔNG CÓ CÁCH NÀO KHÁC... kể cả VBA (nếu không dùng cột phụ)
Vì bản chất của Validation nó vậy, chỉ "công nhận" 1 List có thật
Hy vọng các Version sau này, 2010 hoặc trên nữa sẽ đáp ứng yêu cầu của bạn
Ẹc... Ẹc...
(cái này đã từng thử và đã từng hỏi trên diển đàn lâu lắm rồi)
 
Cách lọc dữ liệu trùng nhau

Chào các anh/chị.
Trong bảng tính có các dữ liệu trùng nhau (tên, màu sắc...) mình muốn loại bỏ những tên trùng nhau (chỉ giữ lại 1 tên) thì phải sdụng công thức nào ?
Xem file đính kèm.
Thanks
 

File đính kèm

Chào các anh/chị.
Trong bảng tính có các dữ liệu trùng nhau (tên, màu sắc...) mình muốn loại bỏ những tên trùng nhau (chỉ giữ lại 1 tên) thì phải sdụng công thức nào ?
Xem file đính kèm.
Thanks
Bạn dùng chức năng Advanced Filter và nhớ tích chọn Unique records only.

TDN

 
Cám ơn tedaynui đã trả lời. Nhưng mình làm theo cách của bạn ko ra đ.c kquả như mong muốn.
Bạn có thể cho mình giải pháp khác ko ?
Với file của bạn, ta sẽ làm như sau:
1> Copy C2:C9 rồi paste vào B10 ---> Vậy cột B sẽ có dử liệu từ B1 đến B16
2> Quét chọn B1:B16, vào menu Date\Filter\Advanced Filter
a) Check vào muc "Copy to another location"
b) Khung Copy to, chọn 1 cell trống nào đó mà bạn cần đặt dử liệu sau khi lọc
c) Check vào "Unique records only"
3> Bấm nút OK và xem kết quả
 
Với file của bạn, ta sẽ làm như sau:
1> Copy C2:C9 rồi paste vào B10 ---> Vậy cột B sẽ có dử liệu từ B1 đến B16
2> Quét chọn B1:B16, vào menu Date\Filter\Advanced Filter
a) Check vào muc "Copy to another location"
b) Khung Copy to, chọn 1 cell trống nào đó mà bạn cần đặt dử liệu sau khi lọc
c) Check vào "Unique records only"
3> Bấm nút OK và xem kết quả

Thanks nd96181631 nhiều. Bạn hiểu ý của mình. Nhưng mình làm nó ra kết quả các mầu đều đúng cả.
Riêng màu xanh nó ra 2 dòng (nếu màu xanh đứng đầu hàng. Tương tự với các màu khác nếu màu đó đứng đầu hàng).
Bạn xem lại cho mình nhé.
 
Lần chỉnh sửa cuối:
Thanks nd96181631 nhiều. Bạn hiểu ý của mình. Nhưng mình làm nó ra kết quả các mầu đều đúng cả.
Riêng màu xanh nó ra 2 dòng.
Bạn xem lại cho mình nhé.
Tôi biết bạn sai chổ nào rồi: Do vùng chọn của bạn không có tiêu đề, nên Advanced Filter sẽ xem cell đầu tiên chính là tiêu đề (chính là cell có chử Xanh)
Giờ bạn thử làm lại y chang như tôi nói, nhưng khi lọc nhớ chọn luôn tiêu đề (nếu chưa có tiêu đề thì thêm vào)
 
Thanks nd96181631 nhiều. Bạn hiểu ý của mình. Nhưng mình làm nó ra kết quả các mầu đều đúng cả.
Riêng màu xanh nó ra 2 dòng.
Bạn xem lại cho mình nhé.

Bạn nhớ là phải chọn từ B1:B16 (với B1 là ô tiêu đề), vì nếu không thì Excel sẽ hiểu ô đầu tiên là (B2:xanh) ô tiêu đề, vấn đề là vậy chứ không phải bị sai đâu bạn.
 
Tôi biết bạn sai chổ nào rồi: Do vùng chọn của bạn không có tiêu đề, nên Advanced Filter sẽ xem cell đầu tiên chính là tiêu đề (chính là cell có chử Xanh)
Giờ bạn thử làm lại y chang như tôi nói, nhưng khi lọc nhớ chọn luôn tiêu đề (nếu chưa có tiêu đề thì thêm vào)

Thanks so much. Mình đã làm đc rồi. Chúc bạn một ngày vui vẻ. làm việc hiệu quả.

Hi ndu96081631.
Mình có thêm 1 ý nữa là nếu cột màu 1 or cột màu 2 bỏ đi 1 hoặc nhiều màu thì cột số lượng màu cũng tự thay đổi theo.
Khi đó mình sẽ phải làm sao ?. Hiện tại thì nó chưa làm đ.c.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Cái này bạn phải record rồi sau đó nếu muốn update dữ liệu bạn chạy macro đó nó mới update mặt hàng mới được chứ đã copy dán rồi thì sao cập nhật được ngoại trừ dùng công thức.
Thân
 
Hi ndu96081631.
Mình có thêm 1 ý nữa là nếu cột màu 1 or cột màu 2 bỏ đi 1 hoặc nhiều màu thì cột số lượng màu cũng tự thay đổi theo.
Khi đó mình sẽ phải làm sao ?. Hiện tại thì nó chưa làm đ.c.
Đương nhiên mỗi khi dử liệu thay đổi bạn phải thao tác lọc lại từ đầu
Muốn tự động thì dùng VBA hoặc công thức đều được ---> Nếu bạn đồng ý thì tốt nhất nên đưa dử liệu thật lên đây (sẽ đở mất công chỉnh sửa)
 
Cái này bạn phải record rồi sau đó nếu muốn update dữ liệu bạn chạy macro đó nó mới update mặt hàng mới được chứ đã copy dán rồi thì sao cập nhật được ngoại trừ dùng công thức.
Thân
Uh, thanks domfootwear. Nhưng những cái đó mình ko biết làm.Cho mình giải pháp nhé.

Đương nhiên mỗi khi dử liệu thay đổi bạn phải thao tác lọc lại từ đầu
Muốn tự động thì dùng VBA hoặc công thức đều được ---> Nếu bạn đồng ý thì tốt nhất nên đưa dử liệu thật lên đây (sẽ đở mất công chỉnh sửa)
Dữ liệu chỉ là như vậy thôi. Mình có nhiệm vụ liệt kê các loại màu. Sau đó tính tổng (số kg) các màu hiện có.
Liệt kê số lượng màu là mình đã giải quyết đ.c bài toán đó rồi.
Nếu dùng công thức thì sẽ update đc nhưng cthức sẽ sdụng như thế nào. Bạn giúp mình nhé !
 
Chỉnh sửa lần cuối bởi điều hành viên:
Dữ liệu chỉ là như vậy thôi. Mình có nhiệm vụ liệt kê các loại màu. Sau đó tính tổng (số kg) các màu hiện có.
Liệt kê số lượng màu là mình đã giải quyết đ.c bài toán đó rồi.
Nếu dùng công thức thì sẽ update đc nhưng cthức sẽ sdụng như thế nào. Bạn giúp mình nhé !
xem thử file này ---> Mở file nhớ Enable macro nhé
Muốn công thức thì tham khảo tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=12035
 

File đính kèm

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
ndu96081631 Cho mình cái công thức trích lọc trên 1 sheet đ.c rồi. Mình vô đọc như đám rừng ấy. Công lực chưa hiểu hết đ.c (hix hix)
 
ndu96081631 Cho mình cái công thức trích lọc trên 1 sheet đ.c rồi. Mình vô đọc như đám rừng ấy. Công lực chưa hiểu hết đ.c (hix hix)
Tải file về... xem công thức trong Define name (vào menu Insert\Name\Define ) ---> Người ta định nghĩa DS_1 và DS_2 là vùng thuộc 2 sheet khác nhau ---> Bạn sửa lại tên sheet cho phù hợp với file của bạn là được rồi
 
Tải file về... xem công thức trong Define name (vào menu Insert\Name\Define ) ---> Người ta định nghĩa DS_1 và DS_2 là vùng thuộc 2 sheet khác nhau ---> Bạn sửa lại tên sheet cho phù hợp với file của bạn là được rồi

DK_1: IF(MATCH(DS_1,DS_1,0)=ROW(INDIRECT("1:"&ROWS(DS_1))),ROW(INDIRECT("1:"&ROWS(DS_1))),"")

DK_2
: (MATCH(DS_2,DS_2,0)=ROW(INDIRECT("1:"&ROWS(DS_2))))*(COUNTIF(DS_1,DS_2)<1)*(ROW(INDIRECT("1:"&ROWS(DS_2))))


DK_3
: IF(DK_2=0,"",DK_2)


DS_1: OFFSET(Sheet1!$A$4,,,COUNTA(Sheet1!$A$4:$A$1003),)

DS_2
: OFFSET(Sheet2!$A$1,,,COUNTA(Sheet2!$A$1:$A$1000),)


Công thức
: IF(ROWS($1:1)>COUNT(DK_1)+COUNT(DK_3),"",IF(ROWS($1:1)>COUNT(DK_1),INDEX(DS_2,SMALL(DK_3,ROWS($1:1)-COUNT(DK_1)),),INDEX(DS_1,SMALL(DK_1,ROWS($1:1)),)))

Hix, Nghiên cứu từ hôm qua tới giờ mà cũng chưa vỡ ngu đ.c hết. Còn lờ mờ về cái giải thuật & mấy ct này !!
ndu96081631 & các bạn giải thích rõ thêm cho mình hiểu nhé.
 
DK_1: IF(MATCH(DS_1,DS_1,0)=ROW(INDIRECT("1:"&ROWS(DS_1))),ROW(INDIRECT("1:"&ROWS(DS_1))),"")

DK_2
: (MATCH(DS_2,DS_2,0)=ROW(INDIRECT("1:"&ROWS(DS_2))))*(COUNTIF(DS_1,DS_2)<1)*(ROW(INDIRECT("1:"&ROWS(DS_2))))


DK_3
: IF(DK_2=0,"",DK_2)


DS_1: OFFSET(Sheet1!$A$4,,,COUNTA(Sheet1!$A$4:$A$1003),)

DS_2
: OFFSET(Sheet2!$A$1,,,COUNTA(Sheet2!$A$1:$A$1000),)


Công thức
: IF(ROWS($1:1)>COUNT(DK_1)+COUNT(DK_3),"",IF(ROWS($1:1)>COUNT(DK_1),INDEX(DS_2,SMALL(DK_3,ROWS($1:1)-COUNT(DK_1)),),INDEX(DS_1,SMALL(DK_1,ROWS($1:1)),)))

Hix, Nghiên cứu từ hôm qua tới giờ mà cũng chưa vỡ ngu đ.c hết. Còn lờ mờ về cái giải thuật & mấy ct này !!
ndu96081631 & các bạn giải thích rõ thêm cho mình hiểu nhé.
Quan trọng là 2 name DS_1 và DS_2 ---> Bạn phải sửa lại cho phù hợp với dử liệu thật của bạn:
DS_1 ở đây định nghĩa là vùng chứa dử liệu trong Sheet1, cột A, tính từ A4 đến dòng cuối cùng
DS_2 ở đây định nghĩa là vùng chứa dử liệu trong Sheet2, cột A, tính từ A1 đến dòng cuối cùng
Vậy bạn chỉ cần chỉnh lại 2 name này, các name khác và công thức cứ giử nguyên
 
Hỏi về công thức lọc theo mã số

mình có bài tập theo file đính kèm, bình thường mình vẫn làm thủ công nhưng hiện tại số khách hàng lên quá nhiều nên gặp rất nhiều khó khăn. Các anh/chị trên DĐ giúp mình bằng công thức nhé.
Ở cột I, mình cần hiện mã của loại sản phẩm theo từng khách hàng (chỉ lấy 1 lần)
Cám ơn nhiều
 

File đính kèm

mình có bài tập theo file đính kèm, bình thường mình vẫn làm thủ công nhưng hiện tại số khách hàng lên quá nhiều nên gặp rất nhiều khó khăn. Các anh/chị trên DĐ giúp mình bằng công thức nhé.
Ở cột I, mình cần hiện mã của loại sản phẩm theo từng khách hàng (chỉ lấy 1 lần)
Cám ơn nhiều

Bạn dùng Advanced Filer đi ,lọc ra kết quả duy nhất
Vào xem cái này và tìm hiểu nhe
Thân
Cái này nữa nhe !
 
Lần chỉnh sửa cuối:
mình có bài tập theo file đính kèm, bình thường mình vẫn làm thủ công nhưng hiện tại số khách hàng lên quá nhiều nên gặp rất nhiều khó khăn. Các anh/chị trên DĐ giúp mình bằng công thức nhé.
Ở cột I, mình cần hiện mã của loại sản phẩm theo từng khách hàng (chỉ lấy 1 lần)
Cám ơn nhiều
Yêu cầu này dùng Advanced Filter cũng tốt, nhưng sẽ không nhanh bằng Consolidate
Bạn xem file hướng dẩn của tôi và làm theo ---> 10s là xong!
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn các anh/ chị, nhưng cũng xin hỏi thêm trong trường hợp có 2 cột điểm, thì có thể dùng cách này không? Thực sự mình muốn hỏi công thức vi hàng tuần, các số liệu của mình đều thay đổi, nếu chỉ cần update so liệu thôi thi bảng điểm trung binh tự động chạy theo.
Các anh/chị xem thêm trong file để hiểu rõ ý mình hơn nhé.
 

File đính kèm

Cám ơn các anh/ chị, nhưng cũng xin hỏi thêm trong trường hợp có 2 cột điểm, thì có thể dùng cách này không? Thực sự mình muốn hỏi công thức vi hàng tuần, các số liệu của mình đều thay đổi, nếu chỉ cần update so liệu thôi thi bảng điểm trung binh tự động chạy theo.
Các anh/chị xem thêm trong file để hiểu rõ ý mình hơn nhé.
2 cột điểm thì cũng vẫn dùng Consolidate thôi ---> Add vào 2 vùng C2:D25 và C2:E5
Để bạn đở mất công làm bằng tay, tôi viết nó thành code... bạn chỉ việc nhấn nút là xong!
PHP:
Sub DiemTB()
  Range("I1").CurrentRegion.Offset(1).ClearContents
  With Range([C2], [C65536].End(xlUp))
    Range("I2").Consolidate _
    Array(.Resize(, 2).Address(, , 2), .Resize(, 3).Address(, , 2)), 1, False, True
  End With
End Sub
 

File đính kèm

Mình làm bằng công thức và lọc tự động khi dữ liệu nguồn thay đổi. Tuy nhiên vẫn hướng bạn tham khảo, nên sử dụng Consolidate của bác ndu. Thân!
Công thức tính trung bình không có vấn đề, nhưng còn phần lọc duy nhất rất khó "nhai" ---> Công thức này khá "nặng" ---> Là nguyên nhân khiến cho file chạy chậm với file có dử liệu lớn
Chính vì lẻ đó mà tôi.. "né" công thức
 
Mình muốn hỏi chút về phần này, cũng là phần lọc dữ liệu trùng, vẫn đề bài như trên nhưng mình lọc tự động nếu thêm dòng dữ liệu ở cột B1 thì cột E sẽ tự thêm dữ liệu. Tức là sẽ ko phải lặp lại thao tác như trên mới hiện ra những dòng mới! Dùng hàm là tốt nhất.
 
Cho mình hỏi cách copy Validation từ cell này qua các cells khác trong bảng tính thì làm bằng cách nào? Mình dùng đủ cách như Copy, Paste Special hay chọn mục Apply these changes to all other with the same settings đều không được.
Thanks very much!
 
Cho mình hỏi cách copy Validation từ cell này qua các cells khác trong bảng tính thì làm bằng cách nào? Mình dùng đủ cách như Copy, Paste Special hay chọn mục Apply these changes to all other with the same settings đều không được.
Thanks very much!
Chức năng PasteSpecial có cho phép Paste Validation ---> Nếu bạn làm không ra kết quả thì có lẽ sai sót nằm ở địa chỉ tham chiếu trong công thức (tương đối hay tuyệt đối)
Muốn biết nguyên nhân không gì bằng đưa file lên bạn nhé!
 
Cho mình hỏi cách copy Validation từ cell này qua các cells khác trong bảng tính thì làm bằng cách nào? Mình dùng đủ cách như Copy, Paste Special hay chọn mục Apply these changes to all other with the same settings đều không được.
Thanks very much!
Sao lạ vậy ?? Mình đã test thử chỉ cần Ctr+CCtrl+V là được mà. Bạn thử lại xem

TDN
 
Chức năng PasteSpecial có cho phép Paste Validation ---> Nếu bạn làm không ra kết quả thì có lẽ sai sót nằm ở địa chỉ tham chiếu trong công thức (tương đối hay tuyệt đối)
Muốn biết nguyên nhân không gì bằng đưa file lên bạn nhé!
Copy được nhưng ý của mình là các biến trong các formular không thay đổi theo cell, ví dụ như formular countif($A$1:A1,A2)=0 của cell A2 khi copy sang cell A3 vẫn giữ nguyên chứ không đổi thành countif($A$1:A2,A3)=0. Như thế là phải sửa từng cell. Mà bảng của mình thì phải trên 2000 cell trên 1 column cần sửa cơ.
 
Copy được nhưng ý của mình là các biến trong các formular không thay đổi theo cell, ví dụ như formular countif($A$1:A1,A2)=0 của cell A2 khi copy sang cell A3 vẫn giữ nguyên chứ không đổi thành countif($A$1:A2,A3)=0. Như thế là phải sửa từng cell. Mà bảng của mình thì phải trên 2000 cell trên 1 column cần sửa cơ.
Làm gì có chứ... tôi đã thí nghiệm và không thấy hiện tượng như bạn nói
Còn không tốt nhất bạn cứ đưa file lên ---> Đở mất công đoán
 
ban dùng ham Pivot Table and Pivot Chart Repoc trong menu Data
 
hic hic giúp em với em có một vấn đề này mà không biết phải làm thế
đây là dữ liệu xăng tháng của bên em nhưng bây giờ em muốn
nhặt từng bộ phận và tổng số lượng của bộ phận đó trong từng ngày nhưng em không biết phải sử dụng cách nào để có thể làm được điều này vì em nhặt bằng hàm sumif thì nó không nhặt được bộ phận và tổng từng ngày à
 

File đính kèm

Mình muốn hỏi cách lọc dữ liệu

Mình có danh sách khách hàng kí hợp đồng với công ty 1 hay nhiều lần.Mình muốn tập hợp lại danh sách khách hàng kí 1 lần riêng và danh sách khách hàng kí hợp đồng nhiều lần với chi tiết kèm theo(ngày ký hợp đồng, số hợp đồng)
Các bạn chỉ giúp mình với.Cám ơn lắm lắm !!!
 
Hôm nay đơ rồi,ko thêm đc file nữa.

Mình mô tả vậy

Cột 1 : Số hợp đồng lần lượt 55 . 14 . 35 .57. 78 . 96 . 47
Cột 2 : Ngày kí 1/1/2000 4/2/1999 5/3/2001 4/2/2002 3/5/2003 5/7/2005 9/9/2004
Cột 3 : Tên công ty: A . A .B .C .B. D. E

Mọi ng thông cảm!!!
 
Hôm nay đơ rồi,ko thêm đc file nữa.

Mình mô tả vậy

Cột 1 : Số hợp đồng lần lượt 55 . 14 . 35 .57. 78 . 96 . 47
Cột 2 : Ngày kí 1/1/2000 4/2/1999 5/3/2001 4/2/2002 3/5/2003 5/7/2005 9/9/2004
Cột 3 : Tên công ty: A . A .B .C .B. D. E

Mọi ng thông cảm!!!

Mình đã thêm 1 cột phụ để đếm, sau đó lọc theo cột phụ.
Hy vọng đúng ý bạn muốn.
 

File đính kèm

cảm ơn bạn!!!sao một hồi căng đầu loạn óc.sếp kêu viết tay.Mất công quá! :(
 
dữ liệu của mình phức tạp lắm.Sếp cũng ko làm j được nên....
 

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

Back
Top Bottom