[Hỏi] cách dò kết quả dựa vào 2 (nhiều điều kiện) (1 người xem)

Liên hệ QC

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

ancrayzy

Thành viên chính thức
Tham gia
15/9/08
Bài viết
67
Được thích
4
Chào cộng đồng GPE,
Mình có vấn đề như sau nhờ mọi người giúp đỡ
Cảm ơn mọi người nhiều ạ

Bài toán như sau, tìm giá trị cho cột G
Ví dụ: cần tìm kích thước cột tại ô G3 bằng cách dò 2 dữ liệu tại 2 bằng TABLE 1 VÀ TABLE 2
1. Dò theo tầng tại cột B và cột I
2. Dò theo tên tại cột E và cột J
3. Kết quả trả về tại ô G3 là kết quả tại cột K
1638846127693.png
,
 

File đính kèm

Lần chỉnh sửa cuối:
Chào cộng đồng GPE,
Mình có vấn đề như sau nhờ mọi người giúp đỡ
Cảm ơn mọi người nhiều ạ

Bài toán như sau, tìm giá trị cho cột G
Ví dụ: cần tìm kích thước cột tại ô G3 bằng cách dò 2 dữ liệu tại 2 bằng TABLE 1 VÀ TABLE 2
1. Dò theo tầng tại cột B và cột I
2. Dò theo tên tại cột E và cột J
3. Kết quả trả về tại ô G3 là kết quả tại cột K
View attachment 270033
,

Bạn nhập công thức sau:
G3=INDEX($K$3:$K$15,MATCH(B3&E3,$I$3:$I$15&$J$3:$J$15,0))
 
Bạn tham khảo thêm cách khác, kết thúc bằng Enter.
Công thức của bạn rắc rối quá. Muốn tránh CSE thì dùng hàm Lookup.
Vấn đề này ở đây có khá nhiều bài rồi. Tìm từ khoá Lookup(2, 1/

Công thức ở bài #2 và #4 là loại công thức nguy hiểm. Mọt ngày đẹp trời nào đó nó có thể sẽ ra kết quả sai. Nguyên tắc của dò chuỗi ghép là phải nhét thêm dấu ngăn cách.
 

File đính kèm

Lần chỉnh sửa cuối:
Chào cộng đồng GPE,
Mình có vấn đề như sau nhờ mọi người giúp đỡ
Cảm ơn mọi người nhiều ạ

Bài toán như sau, tìm giá trị cho cột G
Ví dụ: cần tìm kích thước cột tại ô G3 bằng cách dò 2 dữ liệu tại 2 bằng TABLE 1 VÀ TABLE 2
1. Dò theo tầng tại cột B và cột I
2. Dò theo tên tại cột E và cột J
3. Kết quả trả về tại ô G3 là kết quả tại cột K
View attachment 270033
,
G3=IFERROR(VLOOKUP(B3&E3,CHOOSE({1,2},$L$3:$L$15&$M$3:$M$15,$N$3:$N$15),2,0),"") Nhấn CSE

Em xin phép hỏi anh chị trong nhóm 1 chút ạ, trong công thức dò tìm Lookup(2,1...thì có tài liệu sẽ dùng dấu * với kiểu dò tìm nhiều điều kiện,

Ví dụ LOOKUP(2,1/(vung1=dk1)*(vung2=dk2)*(vung3=dk3)*(vungn=dkn),(vung lấy giá trị)),nhưng cũng có tài liệu dùng dấu / cho cách tìm kiếm này, ví dụ LOOKUP(2,1/(vung1=dk1)/(vung2=dk2)/(vung3=dk3)/(vungn=dkn),(vung lấy giá trị)).

Em thử làm cả 2 cách và ra 2 kết quả khác nhau, các anh chị cho em hỏi khi nào dùng dấu * và khi nào dùng dấu / trong việc dùng hàm Lookup tìm kiếm nhiều điều kiện ạ, em cảm ơn .
 
...

Ví dụ LOOKUP(2,1/(vung1=dk1)*(vung2=dk2)*(vung3=dk3)*(vungn=dkn),(vung lấy giá trị)),nhưng cũng có tài liệu dùng dấu / cho cách tìm kiếm này, ví dụ LOOKUP(2,1/(vung1=dk1)/(vung2=dk2)/(vung3=dk3)/(vungn=dkn),(vung lấy giá trị)).

Em thử làm cả 2 cách và ra 2 kết quả khác nhau, các anh chị cho em hỏi khi nào dùng dấu * và khi nào dùng dấu / trong việc dùng hàm Lookup tìm kiếm nhiều điều kiện ạ, em cảm ơn .
Bạn học toán ở đâu vậy?
Hai biểu thức trên đương nhiên là cho giá trị khác nhau.

1/a*b*c*...*n
hoàn toàn khác với
1/a/b/c/../n

1638950837451.png

Quên cái công thức thứ nhất đi. Tôi chắc chắn là bạn chép nó ở đâu đó và do bất cẩn gây thiếu sót trầm trọng.
Để ý cho kỹ kết quả sau đây và so sánh cái dòng dấu hỏi đầu tiên với dòng có dấu hỏi thứ ba (trong của sổ immediate của VBA, dấu hỏi tương đương với lệnh Print):

1638951079520.png
 
Bạn học toán ở đâu vậy?
Hai biểu thức trên đương nhiên là cho giá trị khác nhau.

1/a*b*c*...*n
hoàn toàn khác với
1/a/b/c/../n

View attachment 270094

Quên cái công thức thứ nhất đi. Tôi chắc chắn là bạn chép nó ở đâu đó và do bất cẩn gây thiếu sót trầm trọng.
Để ý cho kỹ kết quả sau đây và so sánh cái dòng dấu hỏi đầu tiên với dòng có dấu hỏi thứ ba (trong của sổ immediate của VBA, dấu hỏi tương đương với lệnh Print):

View attachment 270095
Đương nhiên về mặt toán học mình hiểu
1/a*b*c*...*n
hoàn toàn khác với
1/a/b/c/../n

Nhưng có trường hợp dùng * hay / thì kết quả đều giống nhau( bạn tham khảo file đính kèm)

Và trên mạng có đường Links hướng dẫn tìm kiếm nhiều điều kiện bằng hàm Lookup, có links hướng dẫn dùng phép * giữa các điều kiện và có links hướng dẫn dùng phép chia giữa các điều kiện.

1. Links dùng phép chia : https://www.tuhocexcel.net/2019/10/cach-dung-ham-va-do-nhieu-ieu-kien.html
2. Links dùng phép nhân : http://nhataichinh.com/tim-kiem-nhieu-dieu-kien-ham-lookup/

Còn có trường hợp như mình nói ở trên là dùng phép * hay / thì kết quả vẫn ra giống nhau, bạn xem file đính kèm, mình thắc mắc là dùng * hay / là đúng, hay trường hợp nào thì dùng * hoặc /( đương nhiên là như bạn phân tích ở trên 1/a*b*c*...*n khác 1/a/b/c/../n )
 

File đính kèm

Đương nhiên về mặt toán học mình hiểu
1/a*b*c*...*n
hoàn toàn khác với
1/a/b/c/../n
...
Tôi vẫn không tin bạn hiểu thứ tự toán nhân chia.
Bạn vẫn chưa hiểu rằng
1/a*b*c*...*n khác với 1/b*a*c*...*n; trong khi
1/a/b/c/../n giống với 1/b/a/c/../n

Và bạn chưa đọc kỹ cái dòng dấu hỏi thứ ba trên. Nếu đọc rồi thì bạn đã không đặt câu hỏi "trường hợp nào thì dùng..."

Tôi không cần đọc cái link thứ hai của bạn cũng biết rằng bạn đọc ẩu và thiếu sót chi tiết trong bài ấy.
 
Đương nhiên về mặt toán học mình hiểu
1/a*b*c*...*n
hoàn toàn khác với
1/a/b/c/../n

Nhưng có trường hợp dùng * hay / thì kết quả đều giống nhau( bạn tham khảo file đính kèm)
Giống nhau là may rủi thôi. Thầy nào dạy thế thì đá đít thầy nhé. Sửa thành K6 = 10.11.2021 thì thấy khác nhau ngay.

Nếu dùng với LOOKUP thì không có chuyện 1/a*b*c*...*n đâu. Hoặc phải là 1/(a*b*c*...*n) hoặc là 1/a/b/c/../n

Tức công thức cho F6

=LOOKUP(2;1/(($J$4:$J$6<=B6)*($K$4:$K$6>=B6));($I$4:$I$6))

hoặc

=LOOKUP(2;1/($J$4:$J$6<=B6)/($K$4:$K$6>=B6);($I$4:$I$6))
 
Giống nhau là may rủi thôi. Thầy nào dạy thế thì đá đít thầy nhé. Sửa thành K6 = 10.11.2021 thì thấy khác nhau ngay.

Nếu dùng với LOOKUP thì không có chuyện 1/a*b*c*...*n đâu. Hoặc phải là 1/(a*b*c*...*n) hoặc là 1/a/b/c/../n

Tức công thức cho F6

=LOOKUP(2;1/(($J$4:$J$6<=B6)*($K$4:$K$6>=B6));($I$4:$I$6))

hoặc

=LOOKUP(2;1/($J$4:$J$6<=B6)/($K$4:$K$6>=B6);($I$4:$I$6))
Người hỏi bài này làm việc cẩu thả chứ giống nhau sao được. Chính y/thị oang oang nhận là mình hiểu toán mờ (bài #15).

Người cẩn thận về toán một chút đã biết
1/a*b*c = (1/a) * b*c

1/a/b/c = 1/(a*b*c)
 
Người hỏi bài này làm việc cẩu thả chứ giống nhau sao được. Chính y/thị oang oang nhận là mình hiểu toán mờ (bài #15).

Người cẩn thận về toán một chút đã biết
1/a*b*c = (1/a) * b*c

1/a/b/c = 1/(a*b*c)
Ý người ta là về mặt toán học thì 200% là khác nhau và họ biết, nhưng khi dùng với LOOKUP thì vẫn đúng. Chắc "vẫn đúng" cũng chỉ là "có vẻ thế" nên người ta mới hỏi. Nếu họ biết chắc 200% là thế hoặc không là thế thì họ chả hỏi làm gì. Tôi cho là thế.
 
Người hỏi bài này làm việc cẩu thả chứ giống nhau sao được. Chính y/thị oang oang nhận là mình hiểu toán mờ (bài #15).

Người cẩn thận về toán một chút đã biết
1/a*b*c = (1/a) * b*c

1/a/b/c = 1/(a*b*c)
Không phải tìm bài ở đâu để chưng minh điều mình thắc mắc, ngay trong bài này, bạn Hoàng Tuấn 868 cũng dùng / thay cho * mà kết quả so sánh vơi việc dùng Index và AGGREGATE vẫn cho kết quả đúng đấy thôi, mình nghĩ cái gì cũng có nguyên nhân chứ ko thể là may rủi đc.

H3= IFERROR(LOOKUP(2,1/($J$3:$J$15=B3)/($K$3:$K$15=E3)/($I$3:$I$15=A3),$L$3:$L$15),"")

 

File đính kèm

Không phải tìm bài ở đâu để chưng minh điều mình thắc mắc, ngay trong bài này, bạn Hoàng Tuấn 868 cũng dùng / thay cho * mà kết quả so sánh vơi việc dùng Index và AGGREGATE vẫn cho kết quả đúng đấy thôi, mình nghĩ cái gì cũng có nguyên nhân chứ ko thể là may rủi đc.

H3= IFERROR(LOOKUP(2,1/($J$3:$J$15=B3)/($K$3:$K$15=E3)/($I$3:$I$15=A3),$L$3:$L$15),"")

Ở bài này bạn đã cù nhầy.

Trong bài trích ở trên người ta dùng dạng 1/a/b/c chứ không phải dạng 1/a*b*c

Cũng có thể dùng dạng tương đương 1/(a*b*c). 1/(a*b*c) chứ không phải là 1/a*b*c như cù nhầy ở bài 15. Tưởng muốn hỏi về cách dùng chính xác cho LOOKUP, hóa ra là cù nhầy.

Trích bài 13
Em xin phép hỏi anh chị trong nhóm 1 chút ạ, trong công thức dò tìm Lookup(2,1...thì có tài liệu sẽ dùng dấu * với kiểu dò tìm nhiều điều kiện,

Ví dụ LOOKUP(2,1/(vung1=dk1)*(vung2=dk2)*(vung3=dk3)*(vungn=dkn),(vung lấy giá trị)),nhưng cũng có tài liệu dùng dấu /

??? Tài liệu nào dùng 1/(vung1=dk1)*(vung2=dk2)*(vung3=dk3)*(vungn=dkn) thì đốt ngay.

Phải là 1/((vung1=dk1)*(vung2=dk2)*(vung3=dk3)*(vungn=dkn))

hoặc là

1/(vung1=dk1)/(vung2=dk2)/(vung3=dk3)/(vungn=dkn)

Đọc kỹ lại bài 17 vài lần nữa.

Tôi dừng ở đây. Không thích kiểu cù nhầy, mất thời gian.
 
Ý người ta là về mặt toán học thì 200% là khác nhau và họ biết, nhưng khi dùng với LOOKUP thì vẫn đúng. Chắc "vẫn đúng" cũng chỉ là "có vẻ thế" nên người ta mới hỏi. Nếu họ biết chắc 200% là thế hoặc không là thế thì họ chả hỏi làm gì. Tôi cho là thế.
1. mặt toán học thì người ta bị vướng cục tự ái to quá mờ cả mắt.
Người biết toán luôn luôn biết tầm quan trọng của dấu ngoặc "()", và chỉ có thể sơ sót 1 lần thôi. Sau khi tôi nhắc nhở cái từ "thiếu" thì phải biết nhận ra ngay. Đằng này chỉ lo cãi.

2. mặt "có vẻ thế"
Lookup dò theo nhị phân cho nên đòi hỏi bảng dò phải sắp xếp. Bảng dò sắp xếp thì cái trị cuối cùng phải là trị lớn nhất.
Khi bảng dò lộn xộn thì nó bắt buộc phải coi cái trị cuối cùng mà nó đọc được (tức là không phải #DIV0!, trị này không đọc được cho nên nó tự động bỏ qua) là trị lớn nhất trong dãy. Nếu trị này nhỏ hơn trị nó cần dò thì nó chọn.
Kết quả cuối cùng là với dãy 1-#DIV0; nó sẽ coi cái 1 cuối cùng là lớn nhất. So với 2 thì thoả điều kiện. Mọi người vui vẻ.
Nhưng với dãy 1-0-#DIV0; (số 0 cũng là số nó đọc được) thì nó sẽ coi cái 1 hay cái 0 cuối cùng là lớn nhất. So với 2 thì thoả điều kiện. Mọi người vui vẻ (cho đến một ngày đẹp trời...)

1/(btdk1)/(btdk2) chỉ cho ra 1-#Div0
1/(btdk1)*(btdk2) sẽ cho ra 1-0-#Div0

Chú: viết đến đây mới thấy bài #21 của bác. Quả là dân "cù nhầy" thật. :p
 
Ý người ta là về mặt toán học thì 200% là khác nhau và họ biết, nhưng khi dùng với LOOKUP thì vẫn đúng. Chắc "vẫn đúng" cũng chỉ là "có vẻ thế" nên người ta mới hỏi. Nếu họ biết chắc 200% là thế hoặc không là thế thì họ chả hỏi làm gì. Tôi cho là thế.

 
Lần chỉnh sửa cuối:

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

Back
Top Bottom