Tìm Max / Min với 2 điều kiện

  • Thread starter Thread starter dekanmi
  • Ngày gửi Ngày gửi
Liên hệ QC

dekanmi

Thành viên mới
Tham gia
26/7/11
Bài viết
9
Được thích
0
Xin chào,

Mình muốn tìm số Max và Min của cột B thỏa 2 điều kiện: phải đúng tên trong cột A và đúng loại trong cột C. Mình đã thử một số công thức =MAX(IF(.... cũng như công thức SUMPRODUCT (đã dùng shift + enter), tuy nhiên chỉ có thể lấy 1 điều kiện thôi.

Mong được mọi người giúp đỡ. Mình đã tham khảo một số topic có liên quan nhưng không tìm được câu trả lời.

Cảm ơn mọi người.
 

File đính kèm

Mình đã thử một số công thức =MAX(IF(.... cũng như công thức SUMPRODUCT (đã dùng shift + enter), tuy nhiên chỉ có thể lấy 1 điều kiện thôi.

1 điều kiện làm được thì bao nhiêu điều kiện cũng thế thôi
Ví dụ công thức cho cell G3:
Mã:
=MAX(IF(($A$2:$A$34=$F3)*($C$2:$C$34=$F$1),$B$2:$B$34,""))
Tương tự cho các cell còn lại
 
À, lý do là vì em không đặt đúng công thức IF. Nãy giờ chỉ đặt IF(AND... hoặc chuyển qua SUMPRODUCT đều không được hết!

Cảm ơn anh :)
 
À, lý do là vì em không đặt đúng công thức IF. Nãy giờ chỉ đặt IF(AND... hoặc chuyển qua SUMPRODUCT đều không được hết!

Em muốn hỏi thêm là: ví dụ trong cột A, các name đều có thêm chữ cái (AAA, AAB...), thì công thức để tìm giá trị MIN ở cột G3 khi mình vẫn muốn tìm theo AA thôi (tức là sẽ tính theo tên có giá trị AA bao gồm chữ cái cuối tùy ý) sẽ đặt công thức như thế nào vậy anh?

Em cảm ơn.


P/S: sorry bị post trùng bài :(
 
Lần chỉnh sửa cuối:
Xin chào,

Mình muốn tìm số Max và Min của cột B thỏa 2 điều kiện: phải đúng tên trong cột A và đúng loại trong cột C. Mình đã thử một số công thức =MAX(IF(.... cũng như công thức SUMPRODUCT (đã dùng shift + enter), tuy nhiên chỉ có thể lấy 1 điều kiện thôi.

Mong được mọi người giúp đỡ. Mình đã tham khảo một số topic có liên quan nhưng không tìm được câu trả lời.

Cảm ơn mọi người.

Công thức cho G3 :
PHP:
=MAX(IF((A2:A34=F3)*(C2:C34=F1),$B$2:$B$34,""))

nếu đúng -->Các ô còn lại tương tự
 
Lần chỉnh sửa cuối:
Cảm ơn bạn. Bạn có thể vui lòng xem thêm phần câu hỏi sau của mình được không:

==> ví dụ trong cột A, các name đều có thêm chữ cái (AAA, AAB...), thì công thức để tìm giá trị MIN ở cột G3 khi mình vẫn muốn tìm theo AA thôi (tức là sẽ tính theo tên có giá trị AA bao gồm chữ cái cuối tùy ý) sẽ đặt công thức như thế nào vậy?
 
Cảm ơn bạn. Bạn có thể vui lòng xem thêm phần câu hỏi sau của mình được không:

==> ví dụ trong cột A, các name đều có thêm chữ cái (AAA, AAB...), thì công thức để tìm giá trị MIN ở cột G3 khi mình vẫn muốn tìm theo AA thôi (tức là sẽ tính theo tên có giá trị AA bao gồm chữ cái cuối tùy ý) sẽ đặt công thức như thế nào vậy?

Thì là như vậy :

Công thức cho G3:
PHP:
=MAX(IF((LEFT(A2:A34,2)=F3)*(C2:C34=F1),$B$2:$B$34,""))

Nói chung bạn cú pháp của nó là như vậy :

PHP:
=MAX(IF((điều kiện 1) * (điều kiện n) , vùng dữ liệu kết quả ,"")

Cái điều kiện 1 đến n bạn phải tự lập công thức để điền vào !
 
Lần chỉnh sửa cuối:
Cảm ơn bạn. Bạn có thể vui lòng xem thêm phần câu hỏi sau của mình được không:

==> ví dụ trong cột A, các name đều có thêm chữ cái (AAA, AAB...), thì công thức để tìm giá trị MIN ở cột G3 khi mình vẫn muốn tìm theo AA thôi (tức là sẽ tính theo tên có giá trị AA bao gồm chữ cái cuối tùy ý) sẽ đặt công thức như thế nào vậy?

Thì lồng thêm hàm LEFT vào:
Mã:
=MAX(IF(([COLOR=#ff0000]LEFT([/COLOR]$A$2:$A$34[COLOR=#ff0000],2)[/COLOR]=$F3)*($C$2:$C$34=$F$1),$B$2:$B$34,""))
 
Xin lỗi vì đã không nói rõ, thật ra điều kiện trong thực tế không chỉ lấy LEFT hoặc RIGHT.

Như trong file đính kèm đã chỉnh sửa, nếu như trong vùng dữ liệu có nhiều ký tự, thì khi cần tìm cho ô G3 chẳng hạn, mình sẽ dùng hàm như thế nào cho chính xác (tức là vùng chứa dữ liệu so sánh có thể gồm vài chữ - có dấu cách). Như vậy thì công thức cần đặt để tìm cho G3 là như thế nào?

Cảm ơn nhiều!
 

File đính kèm

Xin lỗi vì đã không nói rõ, thật ra điều kiện trong thực tế không chỉ lấy LEFT hoặc RIGHT.

Như trong file đính kèm đã chỉnh sửa, nếu như trong vùng dữ liệu có nhiều ký tự, thì khi cần tìm cho ô G3 chẳng hạn, mình sẽ dùng hàm như thế nào cho chính xác (tức là vùng chứa dữ liệu so sánh có thể gồm vài chữ - có dấu cách). Như vậy thì công thức cần đặt để tìm cho G3 là như thế nào?

Cảm ơn nhiều!

Thì bạn thử nghĩ điều kiện lồng vào hàm IF như thế nào ?
hay là thử luôn công thức này cho G3 xem :
PHP:
=MAX(IF((SUBSTITUTE($A$2:$A$34,"AA","")<>($A$2:$A$34))*($C$2:$C$34=$F$1),$B$2:$B$34,""))
 
Lần chỉnh sửa cuối:
Cảm ơn bạn nhiều. Mình chưa có kinh nghiệm dùng hàm nhiều, vì vậy không nghĩ ra công thức nào để áp dụng.

Công thức subtittute này rất hay, mình đọc hướng dẫn thì đã hiểu cách sử dụng rồi. Đúng là truớc giờ chưa hề biết luôn!

Cảm ơn nhiều nhé!
 
Một cách khác:
Mã:
=MAX((ISNUMBER(SEARCH($F3,$A$2:$A$34)))*($C$2:$C$34=$F$1)*$B$2:$B$34)
Ctrl-shift-enter
 
Cảm ơn mọi người rất nhiều. Để tìm ra dữ liệu MAX và MIN thì được rồi. Có một số điều mình cần hỏi thêm:

1. Cần sử dụng thêm công thức như thế nào để ra dữ liêu cao thứ nhì, thứ ba... hoặc thấp nhì, thấp ba...?

2. Và cũng trong file đính kèm, làm thế nào mình có thể lọc ra một danh sách các TÊN thỏa điều kiện trong cột C (tức là chứa toàn A, B hoặc C) - trong LIST PHỤ của file. Từ list phụ đó mình có thể cho nó tự động cập nhật cho phần NAME của bảng dò MIN / MAX luôn chứ không phải cập nhật thủ công nữa.

Cảm ơn nhiều!
 

File đính kèm

Cảm ơn mọi người rất nhiều. Để tìm ra dữ liệu MAX và MIN thì được rồi. Có một số điều mình cần hỏi thêm:

1. Cần sử dụng thêm công thức như thế nào để ra dữ liêu cao thứ nhì, thứ ba... hoặc thấp nhì, thấp ba...?

2. Và cũng trong file đính kèm, làm thế nào mình có thể lọc ra một danh sách các TÊN thỏa điều kiện trong cột C (tức là chứa toàn A, B hoặc C) - trong LIST PHỤ của file. Từ list phụ đó mình có thể cho nó tự động cập nhật cho phần NAME của bảng dò MIN / MAX luôn chứ không phải cập nhật thủ công nữa.

Cảm ơn nhiều!
Gởi bạn 1 Sub tạo List phụ, còn mấy vụ khác "hổng biết"
PHP:
Public Sub GPE()
Dim sArr(), dArr(), Dic As Object, I As Long, Ka As Long, Kb As Long, Kc As Long, Tem As String, C As Long
Set Dic = CreateObject("Scripting.Dictionary")
sArr = Range([A2], [A65000].End(xlUp)).Resize(, 3).Value
ReDim dArr(1 To UBound(sArr, 1), 1 To 3)
For I = 1 To UBound(sArr, 1)
    Tem = sArr(I, 1) & "#" & sArr(I, 3)
    If Not Dic.Exists(Tem) Then
        Dic.Add Tem, ""
        If sArr(I, 3) = "A" Then
            C = 1: Ka = Ka + 1
            dArr(Ka, C) = sArr(I, 1)
        ElseIf sArr(I, 3) = "B" Then
            C = 2: Kb = Kb + 1
            dArr(Kb, C) = sArr(I, 1)
        ElseIf sArr(I, 3) = "C" Then
            C = 3: Kc = Kc + 1
            dArr(Kc, C) = sArr(I, 1)
        End If
    End If
Next
[J3:L100].ClearContents
[J3].Resize(Application.WorksheetFunction.Max(Ka, Kb, Kc), 3).Value = dArr
Set Dic = Nothing
End Sub
 

File đính kèm

Cảm ơn nhiều về phần VBA code này, thật tình là trình độ của mình chưa đủ để hiểu về cách để áp dụng code, chưa nói đến việc chỉnh sửa :)

Bạn có thể giúp mình bằng công thức được không, như vậy mình sẽ biết cách chỉnh sửa cho phù hợp với những dữ liệu khác :)

Thanks!
 
Không biết dữ liệu thực của bạn có dạng như tôi sẽ nói hay không nhưng với thông tin ít ỏi mà bạn cung cấp thì tôi hiểu thế này
bài #6:
ví dụ trong cột A, các name đều có thêm chữ cái (AAA, AAB...), thì công thức để tìm giá trị MIN ở cột G3 khi mình vẫn muốn tìm theo AA thôi (tức là sẽ tính theo tên có giá trị AA bao gồm chữ cái cuối tùy ý) sẽ đặt công thức như thế nào vậy?

Tức có thể có 3 ký tự nhưng ta chỉ xét 2 ký tự đầu

bài 9 và tập tin đính kèm:
tức là vùng chứa dữ liệu so sánh có thể gồm vài chữ - có dấu cách

Tức cuối cùng không hẳn là 3 chữ số mà có thể 2 hoặc > 2 (4, 5, 10 ...). Và chuỗi có thể "nằm ở giữa". Và tương tự như trước ta chỉ xét 2 ký tự đầu của chuỗi nhỏ (... AA..., ... AB..., ... AC..., ... AD...)

Nếu thế thì công thức ở bài #10 là sai. Vì sao?
Ta xét cụ thể cho dễ diễn tả. Trong cột A ta có toàn dạng "ab...cABAAxy...z"

Với dữ liệu và đk như thế thì trong G3 phải "rỗng". Nhưng công thức cho giá trị vì SUBSTITUTE($A$2:$A$34,"AA","")<>($A$2:$A$34) thỏa.
------------

Nếu dữ liệu đúng là có thể có dạng như tôi nói thì công thức trong bài #12 cũng sai nốt.

1. Cần sử dụng thêm công thức như thế nào để ra dữ liêu cao thứ nhì, thứ ba... hoặc thấp nhì, thấp ba...?
Dùng LARGE và SMALL thì lấy được hết: nhất, nhì, ... Nhưng bạn phải nói các kết quả đó bạn định bố trí trên bảng tính thế nào. Tạo tập tin có bố trí các vị trí để nhập kết quả lên. Đừng mô tả rồi bắt người khác tạo tập tin hộ bạn

2. Và cũng trong file đính kèm, làm thế nào mình có thể lọc ra một danh sách các TÊN thỏa điều kiện trong cột C (tức là chứa toàn A, B hoặc C) - trong LIST PHỤ của file. Từ list phụ đó mình có thể cho nó tự động cập nhật cho phần NAME của bảng dò MIN / MAX luôn chứ không phải cập nhật thủ công nữa.

Tôi không hiểu chỗ này. Trong bảng dò đk của bạn là chỉ tính AA, AB, AC và AD hay tính "toàn bộ" tên? Vd. có TVACTV thì đk là tìm theo AC hay tìm theo TVACTV? Vì nếu trường hợp đầu thì cái LIST PHỤ kia nó cập nhật cái gì trong cột Name trong bảng dò? Vì lúc đó thì bảng dò luôn chỉ có AA, AB, AC, AD cơ mà.
 
Cảm ơn nhiều về phần VBA code này, thật tình là trình độ của mình chưa đủ để hiểu về cách để áp dụng code, chưa nói đến việc chỉnh sửa :)

Bạn có thể giúp mình bằng công thức được không, như vậy mình sẽ biết cách chỉnh sửa cho phù hợp với những dữ liệu khác :)

Thanks!
1/ Tìm Large thứ mấy thì bạn sửa 1 chút công thức bài #12 thành
Mã:
=LARGE((ISNUMBER(SEARCH($F3,$A$2:$A$34)))*($C$2:$C$34=$F$1)*$B$2:$B$34,[COLOR=#ff0000][B]1[/B][/COLOR])
Trong đó phần màu đỏ là số lớn thứ n (kết thúc Ctrl + Shift + Enter)
2/ List phụ thì tại J3 gõ công thức sau, kết thúc Ctrl + Shift + Enter
Mã:
=IFERROR(INDEX($A$2:$A$34,SMALL(IF($C$2:$C$34=RIGHT(J$2,1),ROW(INDIRECT("1:"&ROWS($C$2:$C$34)))),ROW(1:1))),"")
 
Cảm ơn nhiều về phần VBA code này, thật tình là trình độ của mình chưa đủ để hiểu về cách để áp dụng code, chưa nói đến việc chỉnh sửa :)

Bạn có thể giúp mình bằng công thức được không, như vậy mình sẽ biết cách chỉnh sửa cho phù hợp với những dữ liệu khác :)

Thanks!
Muốn công thức thì tặng bạn một cái công thức, tìm LIST PHỤ thôi, còn những cái khác hổng có biết à nha
Công thức ở [J3]:
=IF(ROW(A1)>COUNTIF($C$2:$C$34,RIGHT(J$2)),"",INDEX($A$2:$A$34,SMALL(IF(($C$2:$C$34=RIGHT(J$2)),ROW(INDIRECT("1:"&ROWS($A$2:$A$34))),""),ROW(A1))))
Kéo sang phải, kéo xuống
Thân
 
Lần chỉnh sửa cuối:
Bạn ơi, cho mình hỏi với, mình cũng dùng công thức như vậy nhưng nó lại không ra theo điều kiện mà chỉ ra theo số tổng thôi. Bạn xem giúp mình bảng này nhé.
Thanks bạn
 

File đính kèm

Web KT

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

Back
Top Bottom