Sử dụng If và Vlookup? Trả về giá trị qua 2 điều kiện

Liên hệ QC

lamdiep.lt

Thành viên mới
Tham gia
16/2/20
Bài viết
4
Được thích
1
Chào cả nhà ạ.
Mình có bài là nhập Giá vé (cột tô đỏ) từ bảng 2 dựa trên ngày bay và tuyến bay ở bảng 1
Đại khái là mình đã sử dụng kết hợp if với vlookup như trên thanh nhập vì không biết nhiều hàm, kết quả bị lỗi ạ.

Cột Phụ phí cũng báo lỗi: vào Chủ nhật thì thu thêm phụ phí 2%. Hàm thì đúng rồi nhưng sai ở chỗ điều kiện "Chủ Nhật", vì mình dùng format cells đổi từ ngày tháng ra thứ (cột J) máy hiện Chủ Nhật nhưng thực tế nó vẫn là ngày 15/12.

Mn có cao kiến gì không ạ?

Capture.PNG
 

File đính kèm

  • giá vé.xlsx
    12.5 KB · Đọc: 26
Chữ "Hà Nội" ở bảng tra dư 1 ký tự trắng phía sau, xóa đi nhé.
Ô e3:
Mã:
=VLOOKUP(D3,$A$15:$E$19,3+IF(DAY(C3)<=10,0,IF(DAY(C3)<=21,1,2)),0)
Ô G3:
Mã:
=E3*IF(WEEKDAY(C3)=1,2%,0)
 
Chữ "Hà Nội" ở bảng tra dư 1 ký tự trắng phía sau, xóa đi nhé.
Ô e3:
Mã:
=VLOOKUP(D3,$A$15:$E$19,3+IF(DAY(C3)<=10,0,IF(DAY(C3)<=21,1,2)),0)
Ô G3:
Mã:
=E3*IF(WEEKDAY(C3)=1,2%,0)
Em cảm ơn ạ, em làm được rồi. Chỗ 3+if... của hàm trên thực ra em chưa hiểu logic lắm? số 3 đấy là của col index num trong hàm vlookup hay gì ạ? Em cảm ơn!
 
Em cảm ơn ạ, em làm được rồi. Chỗ 3+if... của hàm trên thực ra em chưa hiểu logic lắm?
số 3 đấy là của col index num trong hàm vlookup hay gì ạ? Em cảm ơn!
Để dễ hiểu, bạn dùng công thức này:

=VLOOKUP(D3,$A$15:$E$19,IF(DAY(C3)<=10,3,IF(DAY(C3)<=21,4,5)),0)
 
Công thức dể hiểu nhưng còn dài quá, rút gọn lại có thể dể nhìn hơn:p
Có nhiều cách như:

=VLOOKUP(D3,$A$15:$E$19,LOOKUP(DAY(C3),{1,11,21},{3,4,5}),0)

=VLOOKUP(D3,$A$15:$E$19,MATCH(DAY(C3),{0,0,1,11,21},1),0)

Hoặc gọn hơn, chỉ dùng VLOOKUP và DAY. :1a:
 
Lần chỉnh sửa cuối:
Dạ có, nhưng bí m.ậ..t .... :1a:
Bật mí đi. Tôi chỉ thấy cách trừ 1 rồi dùng Quotient chia cho 10, dùng Min để giới hạn xuống 2, rồi cộng cho 3.
(nếu ngắn hơn 1 chút thì cộng 29, quotient 10, giới hạn xuống 5 - nhưng cách này trông không rõ, khó chỉnh sửa)
 
Có nhiều cách như:

=VLOOKUP(D3,$A$15:$E$19,LOOKUP(DAY(C3),{1,11,21},{3,4,5}))

=VLOOKUP(D3,$A$15:$E$19,MATCH(DAY(C3),{0,0,1,11,21},1),0)

Hoặc gọn hơn, chỉ dùng VLOOKUP và DAY. :1a:
Gọn hơn 1 chút
Mã:
=VLOOKUP(D3,$A$15:$E$19,(DAY(C3)>10)+(DAY(C3)>21)+3,0)
Ngắn hơn nhưng khó hiểu
Mã:
=VLOOKUP(D3,$A$15:$E$19,SUM(N(DAY(C3)>{10,21}))+3,0)
 
Cách thứ nhất phải gọi hàm day 2 lần.
Cách thứ 2 tôi không rõ so với mảng như thế thì hàm day có thực sự được gọi 2 lần hay không.
 
Hic, đang đẹp tự nhiên lại đi gọt cằm, bơm silicon chi vậy nhỉ :{{
 
Cách thứ nhất phải gọi hàm day 2 lần.
Cách thứ 2 tôi không rõ so với mảng như thế thì hàm day có thực sự được gọi 2 lần hay không.
Xem bằng công cụ Evaluate formular có thể chỉ gọi 1 lần
Với yêu cầu bài nầy chỉ cần 1 hàm Day, và hàm INT
Mã:
=VLOOKUP(D3,$A$15:$E$19,INT(DAY(C3)/11)+3,0)
 
Web KT
Back
Top Bottom