Emyeuexcel
Thành viên thường trực
- Tham gia
- 9/6/16
- Bài viết
- 284
- Được thích
- 27
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ạ!
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
Bạn dùng CT này ở AN3: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ạ!
AN3=IFERROR(SMALL(IFERROR(IF(MATCH(ROW($1:$1000),$D3:$AL3*10,),ROW($1:$1000)),""),COLUMN(A1))/10,"")
Góp thêm một cách khác: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ạ!
AN3=IFERROR(SMALL(IF(FREQUENCY($D3:$AL3,ROW($1:$270)/10)>0,ROW($1:$270)/10),COLUMN(A$1)),"")
Thêm cách nữa :Góp thêm một cách khác:
Ctrl+Shift+Enter, copy qua phải rồi fill xuống.PHP:AN3=IFERROR(SMALL(IF(FREQUENCY($D3:$AL3,ROW($1:$270)/10)>0,ROW($1:$270)/10),COLUMN(A$1)),"")
Chúc bạn ngày vui.
AN3=IFERROR(SMALL($D3:$AL3,SUMPRODUCT(COUNTIF($D3:$AL3,$AM3:AM3))+1),"")
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.Thêm cách nữa :
!!Mã:AN3=IFERROR(SMALL($D3:$AL3,SUMPRODUCT(COUNTIF($D3:$AL3,$AM3:AM3))+1),"")
AN3=IFERROR(INDEX(SMALL($D3:$AL3,ROW($1:$35)),MATCH(0,INDEX(COUNTIF($AM3:AM3,SMALL($D3:$AL3,ROW($1:$35))),),0)),"")
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!!!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à:
Enter, copy qua phải rồi fill xuống.PHP:AN3=IFERROR(INDEX(SMALL($D3:$AL3,ROW($1:$35)),MATCH(0,INDEX(COUNTIF($AM$3:AM3,SMALL($D3:$AL3,ROW($1:$35))),),0)),"")
Chúc anh em ngày thiệt vui.
Được bạn ạ, nó kiểu kiểu như vầy: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),"")
=IFERROR(AGGREGATE(15,6,IF(MATCH(TRANSPOSE(ROW($1:$35)),MATCH($D3:$AL3,$D3:$AL3,),),$D3:$AL3),COLUMN(A1)),"")
Vậy, vầy gọn hơn:Thêm cách nữa :
!!Mã:AN3=IFERROR(SMALL($D3:$AL3,SUMPRODUCT(COUNTIF($D3:$AL3,$AM3:AM3))+1),"")
AN3=MIN(IF(COUNTIF($AM3:AM3,$D3:$AL3),"",$D3:$AL3))
Chắc ngắn hết cỡ rồi đấy anh ạ, chơi kiểu này mau lên tay lắm đây !!!Vậy, vầy gọn hơn:
Ctrl+Shift+Enter, copy qua phải rồi fill xuống.PHP:AN3=MIN(IF(COUNTIF($AM3:AM3,$D3:$AL3),"",$D3:$AL3))
Chúc anh em ngày vui.
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.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),"")
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!!!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.
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2