Hỏi về công thức tìm số bé thứ nhì

Liên hệ QC

spttkhai

Thành viên mới
Tham gia
13/2/09
Bài viết
3
Được thích
1
các bác cho em hỏi có hàm nào để tìm giá trị của số bé thứ nhì ( hoặc thứ 3,4... hoặc tuỳ ý)không ạ?
VD:giả sử em có một vùng dữ liệu sau từ A1 đến A5:
4.0
5.0
6.0
7.0
8.0
vậy em phải nhập hàm nào để tìm số bé thứ nhì ( 5.0) ạ?
 
Bạn có thể dùng công thức Small(dãy,vị trí), theo VD của bạn thì SMALL(dãy,2).
 
các bác cho em hỏi có hàm nào để tìm giá trị của số bé thứ nhì ( hoặc thứ 3,4... hoặc tuỳ ý)không ạ?
VD:giả sử em có một vùng dữ liệu sau từ A1 đến A5:
4.0
5.0
6.0
7.0
8.0
vậy em phải nhập hàm nào để tìm số bé thứ nhì ( 5.0) ạ?

Giả sử vùng dữ liệu từ A1:A11, chứa các số 1;1;2;2;2;3;3;3;4;5;5
Tìm số nhỏ thứ 2 : Kết quả là số 2 (không phải số 1)

{=SMALL((MATCH(A1:A11,A1:A11,0)=ROW(INDIRECT("1:"&ROWS(A1:A11))))*A1:A11,SUMPRODUCT(--(MATCH(A1:A11,A1:A11,0)=ROW(INDIRECT("1:"&ROWS(A1:A11)))=FALSE))+2)}

Với số 2 màu đỏ là số nhỏ thứ mà ta muốn tìm. Bấm Ctrl+shift+Enter sau khi gõ xong công thức.
 
Bài này mà không dùng công thức small, và chỉ được thao tác trong 1 ô bảng tính thì khoai quá đấy, e nghĩ mãi không ra, có bác nào giải được thì cho e tham khảo với
 
Thôi, dùng VBA đi các bác ạ. Công thức nhìn sợ quá

Thân!
 
Giả sử vùng dữ liệu từ A1:A11, chứa các số 1;1;2;2;2;3;3;3;4;5;5
Tìm số nhỏ thứ 2 : Kết quả là số 2 (không phải số 1)
Với số 2 màu đỏ là số nhỏ thứ mà ta muốn tìm. Bấm Ctrl+shift+Enter sau khi gõ xong công thức.
Nếu dùng để lấy số nhỏ thứ nhì thì dùng công thức cho ngắn gọn.

Mã:
=SMALL(A1:A11,COUNTIF(A1:A11,SMALL(A1:A1,1))+1)
 
Nếu dùng để lấy số nhỏ thứ nhì thì dùng công thức cho ngắn gọn.

Mã:
=SMALL(A1:A11,COUNTIF(A1:A11,SMALL(A1:A1,1))+1)

Thực ra bài này nếu chỉ để tìm giá trị lớn thứ hai thôi thì em có công thức đơn giản sau:
PHP:
{=MIN(IF(A1:A11>MIN(A1:A11),A1:A11,""))}

Tuy nhiên, nếu tìm số lớn thứ ba, thứ tư, thứ n thì cách này xem ra không làm được.
Em đang nghĩ xem liệu có công thức mảng nào trả về mảng duy nhất của một list hay không? Sau đó lấy Small() của List Mảng đó là xong.
 
Nếu dùng để lấy số nhỏ thứ nhì thì dùng công thức cho ngắn gọn.

Mã:
=SMALL(A1:A11,COUNTIF(A1:A11,SMALL(A1:A1,1))+1)

Lỡ số nhỏ nhất không phải là 1 thì sao Bác Salam, theo em tổng quát hơn tí thì sửa lại công thức của Bác như thế này:

Mã:
=SMALL(A1:A11;COUNTIF(A1:A11;MIN(A1:A11))+1)

Tuy nhiên vầy cũng chưa ổn Bác ạ, nếu số lớn thứ 3, thứ 4... thì xài hổng được.
 
Lỡ số nhỏ nhất không phải là 1 thì sao Bác Salam, theo em tổng quát hơn tí thì sửa lại công thức của Bác như thế này:

Mã:
=SMALL(A1:A11;COUNTIF(A1:A11;MIN(A1:A11))+1)
Tuy nhiên vầy cũng chưa ổn Bác ạ, nếu số lớn thứ 3, thứ 4... thì xài hổng được.
Nếu không phải là số 1 thì công thức small(Rrg,1) vẫn trả về số nhỏ nhất mà.
Theo mình hiểu thì:
Small(Rg,1) = Min(Rg).

Còn về số lớn thứ 3,4 ... thì Ct này không áp dụng được mình đã ghi rõ rồi mà.
(nếu chỉ để tìm số nhỏ thứ nhì).

Cám ơn Bạn.
 
Lần chỉnh sửa cuối:
Nếu không phải là số 1 thì công thức small(Rrg,1) vẫn trả về số nhỏ nhất mà.
Theo mình hiểu thì:
Small(Rg,1) = Min(Rg).

Còn về số lớn thứ 3,4 ... thì Ct này không áp dụng được mình đã ghi rõ rồi mà.
(nếu chỉ để tìm số nhỏ thứ nhì).

Cám ơn Bạn.

Chết xin lỗi Bác nhé, em nhìn gà hóa cuốc.
 
Đây là công thức trả về 1 mảng các giá trị duy nhất trong một dãy (List of unique record in an array):
Gõ công thức xong, ấn phím F9 để xem kết quả.
PHP:
mArray {=IF(MATCH(A1:A11,A1:A11,0)=ROW(A1:A11)-MIN(ROW(A1:A11))+1,A1:A11,"")}
Do đó, để tìm số nhỏ thứ n trong dãy ta có công thức:
PHP:
{=Small(mArray, n)} 
{=Small(IF(MATCH(A1:A11,A1:A11,0)=ROW(A1:A11)-MIN(ROW(A1:A11))+1,A1:A11,""), n)}

Tương tự, để tìm số lớn thứ n trong dãy ta có công thức:
PHP:
{=Large(mArray, n)} 
{=Large(IF(MATCH(A1:A11,A1:A11,0)=ROW(A1:A11)-MIN(ROW(A1:A11))+1,A1:A11,""), n)}

Vì đây là công thức mảng nên sau khi gõ công thức, chúng ta ấn Ctrl+Shift+Enter
 

File đính kèm

Lần chỉnh sửa cuối:
Đây là công thức trả về 1 mảng các giá trị duy nhất trong một dãy (List of unique record in an array):
Gõ công thức xong, ấn phím F9 để xem kết quả.
PHP:
mArray = IF(MATCH(A1:A11,A1:A11,0)=ROW(A1:A11)-MIN(ROW(A1:A11))+1,A1:A11,"")
Do đó, để tìm số nhỏ thứ n trong dãy ta có công thức:
PHP:
=Small(mArray, n) 
=Small(IF(MATCH(A1:A11,A1:A11,0)=ROW(A1:A11)-MIN(ROW(A1:A11))+1,A1:A11,""), n)
Tương tự, để tìm số lớn thứ n trong dãy ta có công thức:
PHP:
= Large(mArray, n) 
= Large(IF(MATCH(A1:A11,A1:A11,0)=ROW(A1:A11)-MIN(ROW(A1:A11))+1,A1:A11,""), n)

Vậy công thức của Bác khi nhập lại số liệu trong dãy thì làm sao đây Bác?
Và công thức bấm F9 này em chưa hiểu lắm, Bác giải thích sơ tí giùm em với.
 
Vậy công thức của Bác khi nhập lại số liệu trong dãy thì làm sao đây Bác?
Thì có sao đâu bạn, bạn thử xem khi thay đổi giá trị của Vùng đích thì công thức này có thay đổi giá trị hay không?

Và công thức bấm F9 này em chưa hiểu lắm, Bác giải thích sơ tí giùm em với.
Cái vụ F9 đã nói nhiều trên diễn đàn rồi mà, bấm F9 chỉ để kiểm tra xem công thức mảng đó nó trả về mảng các phần tử mang giá trị gì?
Như ví dụ trên, khi bạn gõ vào ô B1 (sau khi gõ ấn Ctrl+Shift+Enter):
PHP:
{=IF(MATCH(A1:A11,A1:A11,0)=ROW(A1:A11)-MIN(ROW(A1:A11))+1,A1:A11,"")}
Thì tại ô B1 bạn đâu có thấy hết các giá trị mà công thức trả về đâu, phải không?
Bây giờ bạn chọn ô B1, ấn F2, sau đó ấn F9 xem sao? Bạn chỉ cần thử là biết ngay ý mà. %#^#$
 
Lần chỉnh sửa cuối:
sao các bác cứ phải viết mấy cái phức tạp trên làm gì nhỉ, em thử với công thức small(array, n) 1 phát là ra
 
sao các bác cứ phải viết mấy cái phức tạp trên làm gì nhỉ, em thử với công thức small(array, n) 1 phát là ra
Xem ví dụ trong bài số 3 của Hoangdanh ấy:
Giả sử vùng dữ liệu từ A1:A11, chứa các số 1;1;2;2;2;3;3;3;4;5;5
Vậy theo bạn số lớn thứ 2 là số mấy? Có phải là 2 hay không? ---> Thế bạn dùng hàm SMALL như thế nào? Nói nghe thử
 
Dùng VBA cũng lằng nhằng, đầu tiên phải xác định giá trị nhỏ nhất, sau đó tạo vòng lặp để so sánh chênh lệnh nào so với giá trị min đó là nhỏ nhất ---> đó là giá trị cần tìm.
Còn thuật toán hay hơn khác thì mời các bác
 
Vậy sao bác không dùng AutoFilter để giảm bớt quá trình lọc kia!
Thân.
 
Thử công thức này thấy ổn
=MAX(IF(RANK(A2:A9;A2:A9)=3;A2:A9;0))
Tuy nhiên nó sẽ trả về số 0 khi số thứ tự bạn lấy lại không có trong kết quả hàm rank
Hãy tìm hiểu hàm rank để biết cách nó xếp hạng từ nhỏ đến lớn hay ngược lại
rank.jpg
 
Lời nói không mất tiền mua

Lựa lời mà nói cho vừa lòng nhau
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom