Lọc dữ liệu trùng theo hàng ngang

Liên hệ QC

Emyeuexcel

Thành viên thường trực
Tham gia
9/6/16
Bài viết
266
Được thích
25
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

  • LocTheoHangNgang.xlsx
    16.6 KB · Đọc: 39
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

  • LocHangNgang_.xlsb
    25.9 KB · Đọc: 6
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

  • LocTheoHangNgang.xlsx
    29.5 KB · Đọc: 4
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
Back
Top Bottom