Lọc dữ liệu trùng theo hàng ngang (1 người xem)

Liên hệ QC

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

Emyeuexcel

Thành viên thường trực
Tham gia
9/6/16
Bài viết
314
Được thích
32
Chào các thầy excel,

Mình có file kèm, muốn lọc dữ liệu trùng các cột KH theo hàng ngang, sắp xếp từ nhỏ đến lớn..
MOng các thầy chỉ giáo.
Mình đa tạ!
 

File đính kèm

Chào các thầy excel,

Mình có file kèm, muốn lọc dữ liệu trùng các cột KH theo hàng ngang, sắp xếp từ nhỏ đến lớn..
MOng các thầy chỉ giáo.
Mình đa tạ!
PHP:
Sub LocHangNgang()
Dim arrDATA(), lR As Long, i As Long, j As Long, k As Long, r As Long, maxCol As Long, arrTMP As Variant
With Sheet1
    lR = .Range("A" & .Rows.Count).End(xlUp).Row
    arrDATA = .Range("D3:AL" & lR).Value: lR = UBound(arrDATA, 1): maxCol = UBound(arrDATA, 2)
'-----------'
ReDim arrResult(1 To lR, 1 To maxCol)
For r = 1 To lR
    ReDim arrCAT(1 To maxCol)
    For k = 1 To maxCol
        arrCAT(k) = arrDATA(r, k)
    Next k
    arrTMP = sMinMax(Filter1D(arrCAT))
    j = 0
    For i = LBound(arrTMP) To UBound(arrTMP)
        j = j + 1
        arrResult(r, j) = arrTMP(i)
    Next i
Next r
'-----------'
    .Range("AN3").Resize(10000, 1000).ClearContents
    .Range("AN3").Resize(lR, maxCol) = arrResult
End With
End Sub
 

File đính kèm

Chào các thầy excel,

Mình có file kèm, muốn lọc dữ liệu trùng các cột KH theo hàng ngang, sắp xếp từ nhỏ đến lớn..
MOng các thầy chỉ giáo.
Mình đa tạ!
Bạn dùng CT này ở AN3:
Mã:
AN3=IFERROR(SMALL(IFERROR(IF(MATCH(ROW($1:$1000),$D3:$AL3*10,),ROW($1:$1000)),""),COLUMN(A1))/10,"")
Bấm Ctrl+Shift+Enter rồi fill sang phải, fill xuống!!!
 
Chào các thầy excel,
Mình có file kèm, muốn lọc dữ liệu trùng các cột KH theo hàng ngang, sắp xếp từ nhỏ đến lớn..
MOng các thầy chỉ giáo.
Mình đa tạ!
Góp thêm một cách khác:
PHP:
AN3=IFERROR(SMALL(IF(FREQUENCY($D3:$AL3,ROW($1:$270)/10)>0,ROW($1:$270)/10),COLUMN(A$1)),"")
Ctrl+Shift+Enter, copy qua phải rồi fill xuống.

Chúc bạn ngày vui.
 
Góp thêm một cách khác:
PHP:
AN3=IFERROR(SMALL(IF(FREQUENCY($D3:$AL3,ROW($1:$270)/10)>0,ROW($1:$270)/10),COLUMN(A$1)),"")
Ctrl+Shift+Enter, copy qua phải rồi fill xuống.

Chúc bạn ngày vui.
Thêm cách nữa :
Mã:
AN3=IFERROR(SMALL($D3:$AL3,SUMPRODUCT(COUNTIF($D3:$AL3,$AM3:AM3))+1),"")
:D:D:D!!
 
Thêm cách nữa :
Mã:
AN3=IFERROR(SMALL($D3:$AL3,SUMPRODUCT(COUNTIF($D3:$AL3,$AM3:AM3))+1),"")
:D:D:D!!
Công thức của em, hình như copy từ dòng 6 trở xuống nó ra không chính xác em.

Nhìn lại bài này là bài khử trùng như bao lần mà:
PHP:
AN3=IFERROR(INDEX(SMALL($D3:$AL3,ROW($1:$35)),MATCH(0,INDEX(COUNTIF($AM3:AM3,SMALL($D3:$AL3,ROW($1:$35))),),0)),"")
Enter, copy qua phải rồi fill xuống.

Chúc anh em ngày thiệt vui.
 
Lần chỉnh sửa cuối:
Công thức của em như thế này được không
AN3=IFERROR(SMALL(IF(MATCH($D3:$AL3,$D3:$AL3,0)=TRANSPOSE(ROW(INDIRECT("1:35"))),$D3:$AL3,""),COLUMN()-39),"")
 
Công thức của em, hình như copy từ dòng 6 trở xuống nó ra không chính xác em.

Nhìn lại bài này là bài khử trùng như bao lần mà:
PHP:
AN3=IFERROR(INDEX(SMALL($D3:$AL3,ROW($1:$35)),MATCH(0,INDEX(COUNTIF($AM$3:AM3,SMALL($D3:$AL3,ROW($1:$35))),),0)),"")
Enter, copy qua phải rồi fill xuống.

Chúc anh em ngày thiệt vui.
Em thấy CT của em vẫn đúng mà anh, CT của anh chạy hình như chưa đúng thì phải!!!
Dòng số 9 ra là 9,10.5,11,12, CT của anh ra là 9,10.5,12
 
Công thức của em như thế này được không
AN3=IFERROR(SMALL(IF(MATCH($D3:$AL3,$D3:$AL3,0)=TRANSPOSE(ROW(INDIRECT("1:35"))),$D3:$AL3,""),COLUMN()-39),"")
Được bạn ạ, nó kiểu kiểu như vầy:
Mã:
=IFERROR(AGGREGATE(15,6,IF(MATCH(TRANSPOSE(ROW($1:$35)),MATCH($D3:$AL3,$D3:$AL3,),),$D3:$AL3),COLUMN(A1)),"")
 
Thêm cách nữa :
Mã:
AN3=IFERROR(SMALL($D3:$AL3,SUMPRODUCT(COUNTIF($D3:$AL3,$AM3:AM3))+1),"")
:D:D:D!!
Vậy, vầy gọn hơn:
PHP:
AN3=MIN(IF(COUNTIF($AM3:AM3,$D3:$AL3),"",$D3:$AL3))
Ctrl+Shift+Enter, copy qua phải rồi fill xuống.

Chúc anh em ngày vui.
 
Lần chỉnh sửa cuối:
Chào các anh em, thầy bạn,

Mình cảm ơn sự giúp đỡ nhiệt tình của tất cả nhé!
 
Công thức của em như thế này được không
AN3=IFERROR(SMALL(IF(MATCH($D3:$AL3,$D3:$AL3,0)=TRANSPOSE(ROW(INDIRECT("1:35"))),$D3:$AL3,""),COLUMN()-39),"")
Công thức này của mình kiểm tra lại thì thấy bị sai ở dòng 21. Em cũng thử máy khác rồi, em phát hiện hàm MATCH($D3:$AL3,$D3:$AL3,0) hoạt động không đúng với file này. Đó là số 16 ở 3 vị trí là 13,27,32 nhưng dùng hàm MATCH thì không trả cùng số 13 mà 13,27,27. Khi em đánh lại các số dòng 21 thì hàm MATCH hoạt động đúng. Mọi người cho em hỏi tại sao vây.
 

File đính kèm

Công thức này của mình kiểm tra lại thì thấy bị sai ở dòng 21. Em cũng thử máy khác rồi, em phát hiện hàm MATCH($D3:$AL3,$D3:$AL3,0) hoạt động không đúng với file này. Đó là số 16 ở 3 vị trí là 13,27,32 nhưng dùng hàm MATCH thì không trả cùng số 13 mà 13,27,27. Khi em đánh lại các số dòng 21 thì hàm MATCH hoạt động đúng. Mọi người cho em hỏi tại sao vây.
Không biết tại sao có hiện tượng này, bạn vào ô P21, nhấn F2, rồi Enter công thức của bạn sẽ đúng!!!
 
Web KT

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

Back
Top Bottom