Dò tìm dữ liệu có điều kiện

Liên hệ QC

trananhtuan281914

Thành viên hoạt động
Tham gia
18/3/20
Bài viết
153
Được thích
37
Chào anh/chị.
Anh chị hướng dẫn giúp em tìm dữ liệu để cho ra kế quả như file đính kèm.

Em cảm ơn.
 

File đính kèm

  • Tim du lieu.xlsx
    9.1 KB · Đọc: 64
Chào anh/chị.
Anh chị hướng dẫn giúp em tìm dữ liệu để cho ra kế quả như file đính kèm.

Em cảm ơn.
Công thức ô D4:
Cách 1: Thay H7=1
PHP:
VLOOKUP(C4;OFFSET($H$3:$I$3;MATCH(B4;$G$4:$G$14;0);;COUNTIF($G$3:$G$14;B4));2;1)
Cách 2: Chỉ dùng cho dữ liệu này với H7=600
PHP:
=IFERROR(VLOOKUP(C4;OFFSET($H$3:$I$3;MATCH(B4;$G$4:$G$14;0);;COUNTIF($G$3:$G$14;B4));2;1);10)
 
Công thức ô D4:
Cách 1: Thay H7=1
PHP:
VLOOKUP(C4;OFFSET($H$3:$I$3;MATCH(B4;$G$4:$G$14;0);;COUNTIF($G$3:$G$14;B4));2;1)
Cách 2: Chỉ dùng cho dữ liệu này với H7=600
PHP:
=IFERROR(VLOOKUP(C4;OFFSET($H$3:$I$3;MATCH(B4;$G$4:$G$14;0);;COUNTIF($G$3:$G$14;B4));2;1);10)
Mình có cách nào để xử lý mã hàng B cho đúng không anh, vì em có nhiều mã hàng như B giá cũng khác.
 
B với mức SL tối thiểu để bán =600, chưa hiểu 599 lại có giá bán là 10?

Làm theo kết quả mong muốn tại cột E.

D4:
=IFERROR(LOOKUP(2,1/($G$4:$G$14=B4)/($H$4:$H$14<=C4),$I$4:$I$14),$I$7)
 
B với mức SL tối thiểu để bán =600, chưa hiểu 599 lại có giá bán là 10?

Làm theo kết quả mong muốn tại cột E.

D4:
=IFERROR(LOOKUP(2,1/($G$4:$G$14=B4)/($H$4:$H$14<=C4),$I$4:$I$14),$I$7)
B 600 là mức tối thiểu, thực chất là 1 đến 1 999 sẽ là giá 10
B 2000 trở lên giá 3
Nếu sản phẩm không có mức bắt đầu từ 1, có nghĩa nó có mức tối thiểu. Hai điều kiện đó anh.
 
Vậy Ct tại bài 4 ra kết quả chưa?
 
B với mức SL tối thiểu để bán =600, chưa hiểu 599 lại có giá bán là 10?

Làm theo kết quả mong muốn tại cột E.

D4:
=IFERROR(LOOKUP(2,1/($G$4:$G$14=B4)/($H$4:$H$14<=C4),$I$4:$I$14),$I$7)
Cố định giá sản phẩm B, những sản phẩm khác tương tự B sẽ không đúng anh.
 

File đính kèm

  • Tim du lieu.xlsx
    10.5 KB · Đọc: 14
Chơi như vầy mới vui:
Mã:
D4=LOOKUP(C4,TEXT($H$4:$H$14,"0;;\1")^(MATCH($G$4:$G$14,$G$4:$G$14,)<>ROW($1:$11))/(B4=$G$4:$G$14),$I$4:$I$14)

Thân
Xem cái hàm anh viết, em thấy rối rắm quá...hỏng vui anh. Có cách nào diễn đạt cho gần gủi và dễ hiểu hông anh.
 
Xem cái hàm anh viết, em thấy rối rắm quá...hỏng vui anh. Có cách nào diễn đạt cho gần gủi và dễ hiểu hông anh.
Dễ mà! Muốn 'hỏng' thì 'hỏng':
Mã:
D4=LOOKUP(C4,IF(MATCH($G$4:$G$14,$G$4:$G$14,)<>ROW($1:$100),$H$4:$H$14,1)/(B4=$G$4:$G$14),$I$4:$I$14)
kết thúc bằng Ctrl+Shift+Enter. Fill xuống.

Thân
 

File đính kèm

  • Tim du lieu.xlsx
    10.6 KB · Đọc: 13
Dễ mà! Muốn 'hỏng' thì 'hỏng':
Mã:
D4=LOOKUP(C4,IF(MATCH($G$4:$G$14,$G$4:$G$14,)<>ROW($1:$100),$H$4:$H$14,1)/(B4=$G$4:$G$14),$I$4:$I$14)
kết thúc bằng Ctrl+Shift+Enter. Fill xuống.

Thân
Sản phẩm E các mức giá ngược lại, kết quả không đúng anh.
 

File đính kèm

  • Tim du lieu.xlsx
    11.1 KB · Đọc: 7
Sản phẩm E các mức giá ngược lại, kết quả không đúng anh.
Tôi đã bảo bạn rồi: "công thức không lỗi, chỉ có tư duy người ra lệnh bị lỗi", nhìn vào bảng ai cũng sẽ trả lời với bạn là chỉ cần 'sort' bảng dữ liệu lại là xong ngay thôi! là kiến thức sơ đẳng thôi mà!

Nhưng nếu bạn muốn "chơi kỳ"! để thách thức, thì tôi cũng sẽ "chơi dị" lại với bạn, và chỉ đến đây thôi không còn thêm "giải thích" hoặc "cách gần gũi" ...gì gì khác nữa. Vậy hén! :)
Mã:
D4=LOOKUP(C4,TEXT(AGGREGATE(15,6,$H$4:$H$18/(B4=$G$4:$G$18),ROW($1:$20)),"0;;\1")^SIGN(ROW($1:$20)-1),MOD(AGGREGATE(15,6,$H$4:$H$18*10^6+$I$4:$I$18/(B4=$G$4:$G$18),ROW($1:$20)),10^6))
Chỉ Enter. Fill xuống.

Thân
 

File đính kèm

  • Tim du lieu.xlsx
    12.7 KB · Đọc: 17
Tôi đã bảo bạn rồi: "công thức không lỗi, chỉ có tư duy người ra lệnh bị lỗi", nhìn vào bảng ai cũng sẽ trả lời với bạn là chỉ cần 'sort' bảng dữ liệu lại là xong ngay thôi! là kiến thức sơ đẳng thôi mà!

Nhưng nếu bạn muốn "chơi kỳ"! để thách thức, thì tôi cũng sẽ "chơi dị" lại với bạn, và chỉ đến đây thôi không còn thêm "giải thích" hoặc "cách gần gũi" ...gì gì khác nữa. Vậy hén! :)
Mã:
D4=LOOKUP(C4,TEXT(AGGREGATE(15,6,$H$4:$H$18/(B4=$G$4:$G$18),ROW($1:$20)),"0;;\1")^SIGN(ROW($1:$20)-1),MOD(AGGREGATE(15,6,$H$4:$H$18*10^6+$I$4:$I$18/(B4=$G$4:$G$18),ROW($1:$20)),10^6))
Chỉ Enter. Fill xuống.

Thân
Nào dám chơi dị hay thách thức anh, Em chỉ muốn tìm một giải pháp cho 1 giả định thiếu logic. Cảm ơn anh.
 
Dễ mà! Muốn 'hỏng' thì 'hỏng':
Mã:
D4=LOOKUP(C4,IF(MATCH($G$4:$G$14,$G$4:$G$14,)<>ROW($1:$100),$H$4:$H$14,1)/(B4=$G$4:$G$14),$I$4:$I$14)
kết thúc bằng Ctrl+Shift+Enter. Fill xuống.

Thân
Em có thêm một điều kiện khách hàng để dò tìm, kết quả là fail. Anh chị xem giúp em.
 

File đính kèm

  • Kiem gia.xlsx
    38.6 KB · Đọc: 5
Em có thêm một điều kiện khách hàng để dò tìm, kết quả là fail. Anh chị xem giúp em.
Kết quả ra không đúng là do:
  • Bạn phải thật hiểu công thức, rồi mới điều chỉnh hoặc áp dụng bổ sung thêm điều kiện khác:
    • Hàm ROW(): dùng tạo một mảng 1 chiều dọc với số hàng trong đối số của nó. Vd: ROW(1:100) tạo 1 mảng dọc từ 1 đến 100 (xem lại công thức bài #10). Bạn đã sửa lại thành ROW(1:1), nó trả ra có số 1 thì đâu có tác dụng gì!? Tương ứng trong bài thì giá trị số dòng của nó phải lớn hơn hoặc bằng với số dòng của 'Banggia', Vd: ROW(1:32) hoặc ROW(1:35) hoặc ROW(1:100).
    • Vùng của 'Banggia' từ dòng 2 đến dòng 33, công thức bạn áp dụng lại, chỉ từ 2 đến 32 thì làm sao lấy đủ dữ liệu!?
Thân
 

File đính kèm

  • Kiem gia.xlsx
    38.6 KB · Đọc: 8
Em đã điều chỉnh lại như sau:
=LOOKUP($K3,IF(MATCH(BangGia!$D$2:$D$40,BangGia!$D$2:$D$40,)<>ROW($1:$100),BangGia!$H$2:$H$40,1)/($E3=BangGia!$D$2:$D$40)/($C3=BangGia!$B$2:$B$40),BangGia!$I$2:$I$40)
Kết quả đúng rồi anh.

Em bổ sung thêm điều kiện ngày áp dụng cho bảng giá, kết quả fail anh. Em làm như sau, anh xem hướng dẫn dùm em. Cảm ơn anh.
=LOOKUP($K3,IF(MATCH(BangGia!$D$2:$D$40,BangGia!$D$2:$D$40,)<>ROW($1:$100),BangGia!$H$2:$H$40,1)/($J3=BangGia!$J$2:$J$40)/($E3=BangGia!$D$2:$D$40)/($C3=BangGia!$B$2:$B$40),BangGia!$I$2:$I$40)
 

File đính kèm

  • Kiem gia.xlsx
    41.1 KB · Đọc: 11
Em bổ sung thêm điều kiện ngày áp dụng cho bảng giá, kết quả fail anh. Em làm như sau, anh xem hướng dẫn dùm em. Cảm ơn anh.
=LOOKUP($K3,IF(MATCH(BangGia!$D$2:$D$40,BangGia!$D$2:$D$40,)<>ROW($1:$100),BangGia!$H$2:$H$40,1)/($J3=BangGia!$J$2:$J$40)/($E3=BangGia!$D$2:$D$40)/($C3=BangGia!$B$2:$B$40),BangGia!$I$2:$I$40)
Bạn đọc câu điều kiện như thế nào thì lập công thức như thế đó:
  • "Phải chọn 'Giá' từ 'Ngày áp dụng "trở đi".
  • Bạn lập điều kiện với dấu "=" mang ý phải đúng y ngày đó ($J3=BangGia!$J$2:$J$40), thì công thức báo lỗi không tìm ra kết quả là chính xác rồi.
Thân
 
Bạn đọc câu điều kiện như thế nào thì lập công thức như thế đó:
  • "Phải chọn 'Giá' từ 'Ngày áp dụng "trở đi".
  • Bạn lập điều kiện với dấu "=" mang ý phải đúng y ngày đó ($J3=BangGia!$J$2:$J$40), thì công thức báo lỗi không tìm ra kết quả là chính xác rồi.
Thân
=LOOKUP($K3,IF(MATCH(BangGia!$D$2:$D$40,BangGia!$D$2:$D$40,)<>ROW($1:$100),BangGia!$H$2:$H$40,1)/($J3>=BangGia!$J$2:$J$40)/($E3=BangGia!$D$2:$D$40)/($C3=BangGia!$B$2:$B$40),BangGia!$I$2:$I$40)

Nhờ anh hướng dẫn, em đã làm được rồi anh. Cảm ơn anh.
 
Em đã điều chỉnh lại như sau:
=LOOKUP($K3,IF(MATCH(BangGia!$D$2:$D$40,BangGia!$D$2:$D$40,)<>ROW($1:$100),BangGia!$H$2:$H$40,1)/($E3=BangGia!$D$2:$D$40)/($C3=BangGia!$B$2:$B$40),BangGia!$I$2:$I$40)
Kết quả đúng rồi anh.

Em bổ sung thêm điều kiện ngày áp dụng cho bảng giá, kết quả fail anh. Em làm như sau, anh xem hướng dẫn dùm em. Cảm ơn anh.
=LOOKUP($K3,IF(MATCH(BangGia!$D$2:$D$40,BangGia!$D$2:$D$40,)<>ROW($1:$100),BangGia!$H$2:$H$40,1)/($J3=BangGia!$J$2:$J$40)/($E3=BangGia!$D$2:$D$40)/($C3=BangGia!$B$2:$B$40),BangGia!$I$2:$I$40)
Tôi đọc bài của bạn từ đầu đến giờ ;góp ý với bạn
Theo mình Bạn nên đưa ra hết các điều kiện theo thực tế bạn cần xử lý, tránh mỗi lần lại són ra 1 điều kiện kiểu ...dắt, làm như vậy tốn thời gian của mọi người.
 
Web KT
Back
Top Bottom