Tìm giá thấp nhất cho nhóm hàng xác định bởi ký tự đại diện (wildcard)

Liên hệ QC

bebo021999

Thành viên gạo cội
Tham gia
26/1/11
Bài viết
5,950
Được thích
8,742
Giới tính
Nam
Nghề nghiệp
GPE
Mình đang rối với bài toán này:
Tìm giá thấp nhất từ các nhà cung cấp (không phải từ Shanghai) đồng thời liệt kê danh sách.
Yêu cầu cụ thể trong file đính kèm.
Nhờ các cao thủ GPE tham gia giúp.
 

File đính kèm

Mình đang rối với bài toán này:
Tìm giá thấp nhất từ các nhà cung cấp (không phải từ Shanghai) đồng thời liệt kê danh sách.
Yêu cầu cụ thể trong file đính kèm.
Nhờ các cao thủ GPE tham gia giúp.
Khó hiểu quá... Bạn thử điền bằng tay kết quả mong muốn vào bảng tính xem
 
ý tôi nói nhưng dấu ? ấy ---> Nó sẽ bằng bao nhiêu là đúng?
Ví dụ tại dòng 5, D5:F5 là danh sách lấy từ cột E của sheet Raw Data, ứng với các dòng mã HH="AAA1", ứng với cột C <>"Shanghai".
Tương tự tại dòng 6, Các dấu ? cần điền là danh sách lấy từ cột E của sheet Raw Data, ứng với các dòng mã HH="BBB1", ứng với cột C <>"Shanghai". Kết quả sẽ là: BBB1 - $7.5 - STA; BBB1 - $9.8 - ALP; BBB1 - $10.5 - DSB
Dạng trích lọc danh sách đó sư phụ.
Ô G5 sheet Final Cost, delete dấu ? giúp em cho dễ hiểu, vì chỉ có 3 kết quả là đúng, không có kết quả thứ tư.
 
Lần chỉnh sửa cuối:
Em có kết quả cho bảng 1 nè CT hơi ngố nhưng cũng là 1 giải pháp :
CT tại C5 :
PHP:
=MIN(IF((('Raw data'!$A$2:$A$25=Sheet1!$B5)*('Raw data'!$C$2:$C$25<>'Raw data'!$C$5));'Raw data'!$D$2:$D$25;""))
CT tại D5 :
PHP:
=INDEX('Raw data'!$E$2:$E$25;MATCH(SMALL(IF((('Raw data'!$A$2:$A$25=Sheet1!$B5)*('Raw data'!$C$2:$C$25<>'Raw data'!$C$5));'Raw data'!$D$2:$D$25;"");COLUMN(A1));('Raw data'!$D$2:$D$25)*('Raw data'!$C$2:$C$25<>'Raw data'!$C$5);0))
 
Ví dụ tại dòng 5, D5:F5 là danh sách lấy từ cột E của sheet Raw Data, ứng với các dòng mã HH="AAA1", ứng với cột C <>"Shanghai".
Tương tự tại dòng 6, Các dấu ? cần điền là danh sách lấy từ cột E của sheet Raw Data, ứng với các dòng mã HH="BBB1", ứng với cột C <>"Shanghai". Kết quả sẽ là: BBB1 - $7.5 - STA; BBB1 - $9.8 - ALP; BBB1 - $10.5 - DSB
Dạng trích lọc danh sách đó sư phụ.
Ô G5 sheet Final Cost, delete dấu ? giúp em cho dễ hiểu, vì chỉ có 3 kết quả là đúng, không có kết quả thứ tư.
Ủa... kỳ vậy
Bài trích lọc này rất bình thường mà ---> Lý nào bebo làm không ra
Để đơn giản hóa vấn đề, ta sort cột Giá giảm dần trước đi rồi lọc
 
Ủa... kỳ vậy
Bài trích lọc này rất bình thường mà ---> Lý nào bebo làm không ra
Để đơn giản hóa vấn đề, ta sort cột Giá giảm dần trước đi rồi lọc
Dữ liệu update thường xuyên nên em muốn có kết quả ngay mà không cần phải lọc.
 
Thank hoa còi; có giải pháp cho yêu cầu 2 chưa?
Công thức của hoa còi dài và có thể bị "điếc" trong một số trường hợp do hạn chế của hàm Match chắc anh cũng biết. Chỉ là giải pháp tạm thời thôi! Phải chờ các cao thủ khác ra tay ạ.

Bảng 2 hoa còi chưa hiểu : Mã hàng hóa chứa ký tự A và không phải shanghai thì giá thấp
nhất phải là 5.3 hoa còi thấy anh cho kết quả hiển thị là 3.55 vậy là của mã ABCCC3AB - ASO - shanghai ???
 
Dữ liệu update thường xuyên nên em muốn có kết quả ngay mà không cần phải lọc.
Nếu giá không trùng nhau thì chẳng nói làm gì
Bạn sẽ tự gây khó khăn cho mình khi gặp phải tình huống GIÁ TRÙNG và bài toán sẽ trờ nên phức tạp vì quá nhiều công thức mảng
 
Công thức của hoa còi dài và có thể bị "điếc" trong một số trường hợp do hạn chế của hàm Match chắc anh cũng biết. Chỉ là giải pháp tạm thời thôi! Phải chờ các cao thủ khác ra tay ạ.
Bảng 2 hoa còi chưa hiểu : Mã hàng hóa chứa ký tự A và không phải shanghai thì giá thấp
nhất phải là 5.3 hoa còi thấy anh cho kết quả hiển thị là 3.55 là của mã ABCCC3AB - ASO - shanghai ???
Đúng là như vậy; vì sẽ tìm trong mã HH những mã nào có chứa "A" và lấy giá thấp nhất.
Yêu cầu 1 không khó; chỉ vướng ở yêu cầu 2 thôi.
 
Nếu giá không trùng nhau thì chẳng nói làm gì
Bạn sẽ tự gây khó khăn cho mình khi gặp phải tình huống GIÁ TRÙNG và bài toán sẽ trờ nên phức tạp vì quá nhiều công thức mảng
Nếu gặp giá trùng và là nhỏ nhất thì vẫn lấy giá đó ạ.
 
Anh xem thử. Vẫn có điểm hạn chế nhưng với dữ liệu như dữ liệu mẫu thì không vấn đề gì.
 

File đính kèm

Theo
ý tưởng của HoaMatTroiCoi trên ,
link công thức trước cũng của HMT tại link http://www.giaiphapexcel.com/forum/...-viết-hàm-lọc-dữ-liệu-với&p=338855#post338855

Cũng như thêm chút,
trong file kèm

+ đã sửa Công thức HMT cho ý 2 của y/c 1
+ Y/c 2 dùng FIND để xác định nhóm

xem file gửi kèm,

CT cho C12
PHP:
=MIN(IF(ISNUMBER(FIND($B12,'Raw data'!$A$2:$A$25))*('Raw data'!$C$2:$C$25<>'Raw data'!$C$5),'Raw data'!$D$2:$D$25,""))

công thức cho D10

PHP:
=LOOKUP(REPT("z",255),CHOOSE({1;2},"",INDEX('Raw data'!$E$2:$E$25,MATCH(SMALL(IF((ISNUMBER(FIND($B12,'Raw data'!$A$2:$A$25))*('Raw data'!$C$2:$C$25<>'Raw data'!$C$5)),'Raw data'!$D$2:$D$25*10^10+ROW('Raw data'!$D$2:$D$25),""),COLUMN(A:A)),('Raw data'!$D$2:$D$25)*ISNUMBER(FIND($B12,'Raw data'!$A$2:$A$25))*('Raw data'!$C$2:$C$25<>'Raw data'!$C$5)*10^10+ROW('Raw data'!$D$2:$D$25),0))))

Copy cho các ô tương ứng còn lại

chú ý: hằng số 10^10 người dùng nên cân nhắc dùng cho hợp lý - tùy thuộc vào độ lớn của giá (giá trị lớn nhất) và số hàng của RawData --> nhằm đảm bảo excel tính toán được không vượt quá số lớn nhất 9.99E+307 là được (chắc cái này với bebo chuyện nhỏ)

Chắc đáp ứng các yêu cầu người hỏi, thanks
 

File đính kèm

Lần chỉnh sửa cuối:
--=0 cả hôm nay mình đánh vật với bài này mà vẫn chưa tìm được giải pháp hợp lý.Qủa thật, "nhân tài GPE như lá mùa xuân", cả 3 giải pháp của huuthang, HMT-vodoi2X đều hay và đa dạng, tuy rằng thuộc hàng "khủng", hơi khó hiểu với đại đa số người dùng Excel.
Mình mới test sơ sơ thấy ổn. Mai có thời gian mình sẽ test kỹ công thức lại.
Thanks All, //**/
 
Web KT

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

Back
Top Bottom